简明现代魔法 -> C/C++ -> C 程序设计:单词计数

C 程序设计:单词计数

2010-02-18

这里的单词定义比较宽松,任何不包括空格、制表符、换行符的连续的字符序列,就叫单词。

下面这段程序虽然短小,但是它可是 UNIX 操作系统中 wc 程序的骨干部分,一个操作系统也是由这么一些小程序架构而成。

#include <stdio.h>

#define IN 1  /* 在单词内 */
#define OUT 0  /* 在单词外 */

/* 统计输入的行数、单数数与字符数 */
main()
{
	int c, nl, nw, nc, state;
    
    state = OUT;
    nl = nw = nc = 0;
    while((c = getchar()) != EOF)
    {
    	++nc;
        if(c == '\n')
        	++nl;
        if(c == ' ' || c == '\n' || c == '\t')
        	state = OUT;
        else if(state == OUT)
        {
        	state = IN;
            ++nw;
        }
    }
    printf("%d %d %d\n", nl, nw, nc);
}

nl 记录函数,nw 记录单词数,nc 记录字符数。

程序的逻辑如下:

 

问题:编写一个程序,以每行一个单词的形式打印其输入。

#include <stdio.h>

#define IN 1
#define OUT 0

/* Print Input One Word Per Line */
main()
{
	int c, state;
    
    state = OUT;
    
    while((c = getchar()) != EOF)
    {
    	if(c == ' ' || c == '\n' || c == '\t')
        {
        	if(state == IN)
            {
            	putchar('\n');
                state = OUT;
            }
        }
        else if(state == OUT)
        {
        	state = IN;
            putchar(c);
        }
        else
        	putchar(c);
    }
}

程序运行结果如下:

程序的逻辑简单分析如下:

随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们