C语言 菜鸟求助

#include <stdio.h>
main()
{ char string[81];
int i,num=1;
char c;
gets(string);
for(i=0;(c=string[i])!='\0';i++)
if(c==' ') num++;
printf("There are %d words \n",num);
getch();
}
哪位大侠解释下 此程序为何意?尤其是 for(i=0;(c=string[i])!='\0';i++)
if(c==' ') num++; 呢?谢谢了。。。。。

第1个回答  2011-12-19
for(i=0;(c=string[i])!='\0';i++) 当string中存入的字符不等于结束符时执行for语句体内的内容也就是if(c==' ') num++; 语句

if(c==' ') num++; 当字符c为空格是,则num++;

这段程序是用来统计你输入的字符串中单词的个数的,比如你输入“How old are you?”然后按回车,那么“?”后的字符将是换行符,gets函数会自动将换行符转为结束符也就是null(‘\0’),此时string中存入的是“How old are you?\0”,所以当遇到‘\0’时即为字符串结束时。
if(c==' ') num++;就是为了统计单词数的,因为num初始值已经为1了,所以所得的结果总是为空格数+1。“How old are you?\0”字符串中有三个空格,所以单词数为空格数+1等于4。
第2个回答  2011-12-19
#include <stdio.h>
main()
{ char string[81];//定义字符串
int i,num=1;
char c;
gets(string);//获取字符串
for(i=0;(c=string[i])!='\0';i++)//将i指向的字符串当前位赋值给c,循环直到字符串结束('\0'的意思好好翻书吧~骚年)
if(c==' ') num++; //如果当前位是空格,计数器num+1
printf("There are %d words \n",num);//输出
getch();
}
结果很明显~\(≧▽≦)/~啦啦啦,这个程序就是用来判断字符串中有多少个单词的,不过有BUG,需要改进啊~追问

‘\0’ 结束循环==

本回答被提问者采纳
第3个回答  2011-12-19
很简单

接收一个可以带空格的字符串

然后一位一位判断是否是空格 如果是空格
if(c==' ') num++;
就num++ 按空格算有几个单词
for(i=0;(c=string[i])!='\0';i++) 这句就是循环到 结束符停止

结论 这个程序的这种算法是不对的

遇见标点符号单词计数也应该增加

更不用说 如果多输入了连续空格

无法正确计算单词数
第4个回答  2011-12-19
求一行字符串中有多少单词,判断的一句是根据空格来判断;
for(i=0;(c=string[i])!='\0';i++)
这句表示遍历字符串,直到遇到字符串的结束符号 ‘\0’ ,就结束循环。
if(c==' ') num++;
这句表示当前读到的字符是空格,那么单词统计的计数加1

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网