C字符数字简单例题,但是小弟实在看不懂

来源:百度知道 编辑:UC知道 时间:2024/06/30 12:58:59
#include<stdio.h>
#include<string.h>
main()
{ char a[81];
char c;
int num=0,i,word=0;
gets(a);
for(i=0;(c=a[i])!='\0';i++)
{
if(c==' ')
word=0;
else if(word==0)
{
word=1;
num++;
}
}
printf("%d\n",num);
}
我想知道这个word==0是咋往下继续运行 我咋看都认为是word!=0吧!
实在弄不明白了,高手点个巧!

int num=0,i,word=0; 这里不是设置word==0!
if(c==' ')继续把word设置为初始值!
因为word==0时word=1; 想要继续把初始值设置为0,要等到有' '字符时

输入的一串字符记录在字符数组a[81]里
word用来标记遇到了一个空格(也就是前面的一串字符是一个单词)
num用来记录一共有多少个单词

用一个循环来逐个检查a[81]里的每个字符,直到遇到终止符\0
如果遇到一个空格,则将word置为0
如果当前字符不是空格而且word为0(也就代表当前字符的前一个字符是空格)那么当前字符就是新一个单词的首字母,将word置为1,代表当前字符属于当前计入的单词,并将num加1
如果当前字符不是空格并且word为1 也就代表当前字符属于当前计入的单词 那么什么也不做,循环继续看下一个字符

最终得到的num就是a[81]里有多少个单词

如果不明白的话可以拿一句英文句子来一个字符一个字符的放到程序里去分析就好了~~

这是个很简单的c程序,用来计算键入的单词数目。
char a[81];
char c;
int num=0,i,word=0;
gets(a);//键入任意字符。
for(i=0;(c=a[i])!='\0';i++) //如果没有空字符就计数
{
if(c==' ') //如果是空格就把word置0
word=0;
else if(word==0) {/*如果不是空格word置1,num+1。*/

word=1;
num++;
} /*括号里面的word==0,你是误解了是有作用的。一句话里有多少单词是用空格计算的,这个算法就是说,如果当前字符是空格,那就没有单词,word=0,如果当前字符不是空格,并且前一字符是空格的话,那就说明出现单词了,如果前一字符不是空格的话仍然没有出现新的单词,判断仍然还在单词内部,所以说这个els