.输入一行字符,统计其中有多少个单词,单词之间用空格分隔。
发布网友
发布时间:2023-10-09 12:20
我来回答
共1个回答
热心网友
时间:2024-12-05 07:02
这为朋友,很少在电脑上调程序吧,这段程序中有一些值得注意的错误。首先,标准输入输出头文件是#include,第二、数组string后是中括号,应该是string[81],第三,string和String是不同的,c语言区分大小写,最后一个问题,编程时所有符号一律用英文输入,这个虽然是小问题,但一开始就应养成良好的习惯。
下面是我改好的程序:
#include
main()
{
char string[81];
int i,num=0,word=0;
char s;
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);
}
好了,言归正传。这段程序有个值得注意的问题,for循环没有大括号,意味着它包含一个if-else语句,if语句中是c=' '表示一个单词的结束,然后用word标记,word=0时表示有一个完整的单词。当读入到下一个字母时,表示又有一个新的单词,所以if(word==0)时,num++,同时将word取消标记准备下一次标记。比如说:
输入I am a boy.
I读入:因为word==0 所以num=1,word=1
读入一个空格:word=0 说明第一个单词读入完毕
a读入:因为word==0 所以num=2,word=1 说明有第二个单词
m读入:word=1 说明第二个单词未读完
读入一个空格 word=0 说明第二个单词读入完毕
a读入 因为word=0 说明有第三个单词 所以 num=3,word=1
以此类推,得到结果为4