例7.8.txt

来自「C语言程序设计的第二版源码」· 文本 代码 · 共 26 行

TXT
26
字号
    例7.8    输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
    程序如下:
     #include <Stdio.h>
     main()
     {
       char string[81];
       int i,num=0,word=0;
       char c;
       getS(String);
       for (i=0;(c=String[i])!='\0';i++)
       if(c=='') word=0;
       else if(word==0)
        {
         word=1;
         num++;
        }
        printf("There are %d wordS in the line.\n",num);
       }
    运行情况如下:
I am a boy.
There are 4 wordS in the line.
程序中变量i作为循环变量,num用来统计单词个数,word作为判别是否单词的标志,若word=0表示未出现单词,如出现单词word就置成1。算法见图7.17所示。


解题的思路是这样的:单词的数目可以由空格出现的次数决定(连续的若干个空格作为出现一次空格;一行开头的空格不统计在内)。如果测出某一个字符为非空格,而它的前面的字符是空格,则表示“新的单词开始了” ,此时使num(单词数)累加1。如果当前字符为非空格而其前面的字符也是非空格,则意味着仍然是原来那个单词的继续,num不应再累加1。前面一个字符是否空格可以从word的值看出来,若word=0,则表示前一个字符是空格;如果word=1,意味着前一个字符为非空格。可以用图7.18表示。

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?