C语言基础题!!!!

来源:百度知道 编辑:UC知道 时间:2024/05/22 06:36:38
这道题是输入一行字符,统计其中有多少个单词,单词之间用空格分隔开.
这个题有没有错误,怎么改?????没错就解释一下...
#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("%d",num);
}
这里的for可以不加括号,没有出现复合语句,但是这段代码,如果在if(c==' ') word=0;加上空格.以后是怎么回事啊,请讲解一下

if(c=='') word=0;
这个地方两个''之间少了一个空格:
if (c == ' ') word = 0;/* ''之间加上一个空格,就OK了。 */
就可以了。

for 循环后面的花括号无所谓,因为:
if ()
//...;
else{
}这里的if ... else 是一个整体,全部隶属于for循环,在for循环看来,是一个语句。

#include<stdio.h>
main()
{
char string[81];
int i,num=0,word=0;
char c;
gets(string);
/* 从这个字符串的第一位开始搜索,到最后一位('\0')结束 */
for(i=0;(c=string[i])!='\0';i++)
/* 如果某一位等于空格,则word=0 */
if(c==' ')
word=0;
/* 那么到了下一位不是空格(也就是其它字符)的时候,单词数加1,同时word的值被设置为1,以便同一单词不再重复统计 */
else if (word==0)
{
word = 1;
num++;
}
printf("%d",num);
}

if(c=='') word=0; 是不会把word重设,这里的c等于是没有值而不是等于空格
应该是if(c==' ')
for里面的括号呢?

#include<stdio.h>
main()
{
char string[81];
int i,num=0,word=0;
char c;
gets(string);
for(i=0;(c=string