爱问知识人 爱问教育 医院库

请给这个程序加上详细注释 谢谢

首页

请给这个程序加上详细注释 谢谢

输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。

程序如下:
#include <stdio.h>
void main() 
{ 
 char str[81]; 
 int i,num=0,word=0; 
 char c; 
 gets(str); 
 for(i=0;(c=str[i])!='\0';i++) 
 if(c=='') word=0; 
 else if(word==0) 
 { 
   word=1; 
   num++; 
  } 
printf("There are %d words in the line.\n",num); 
}


请给上面这个程序加上注释,特别是这一部分看不太懂



for(i=0;(c=str[i])!='\0';i++) 
 if(c=='') word=0; 
 else if(word==0) 
 { 
   word=1; 
   num++; 
  } 

提交回答
好评回答
  • 2008-05-26 11:09:06
      解题思路是这样的:
    单词的数目可以由空格出现的次数决定(连续的若干个空格作为出现一次空格,一行开头的空格不统计在内)。如果测出某一个字符为非空格,而它前面的字符为空格,则表示又是一个单词,此时num累加1。如果当前字符为非空格而前面的字符也是非空格,则表示仍然是原来那个单词的继续,num不再累加1。
      前面一个字符是否空格可以从word的值看出来,若word等于0,则表示前一个字符是空格;如果word等于1,表示前一个字符为非空格。 我来注释一下你说的这些代码。
       for(i=0;(c=str[i])!='\0';i++) /* i从0开始,将字符数组的一个字符赋给字符变量c,直到遇见结束符号为止 */ if(c==' ') word=0; /*如果c为空格,把0赋值给word*/ else if(word==0) /*如果word的值为0 */ { word=1; /*前一字符为空格(word=0),新单词出现,使num加1,word=1 */ num++; }。

    b***

    2008-05-26 11:09:06

其他答案

类似问题

换一换
  • C/C++ 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 176-195
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):