69,573
社区成员
#include<stdio.h>
#include<stdlib.h>
int main()
{
char str[81];
int i=0,num=0,word=0;
char c;
while((str[i++]=getchar())!='\n');
str[i]='\0'; \\就这边str[i++]不是回车,则都为\0,而下面循坏的条件是str[i]不等于\0,就这里搞不清楚
for(i=0;(c=str[i])!='\0';i++)
if(c==' ')word=0;
else if(word==0)
{
word=1;
num++;
}
printf("%d\n",num);
system("pause");
return 0;
}
你漏看了一个分号。
while行末尾的分号才是它的循环体。
而红字前面那句不在循环内。
这段代码的功能是计算输入的字符串中单词的数量。具体步骤如下:
定义一个字符数组str,用于存储输入的字符串;
使用while循环读取输入的字符串,直到遇到换行符' ';
在循环结束后,将字符串末尾添加一个空字符'\0',表示字符串结束;
使用for循环遍历字符串中的每个字符,统计单词数量;
如果遇到空格字符,将word置为0,表示下一个字符不是单词的开始;
如果遇到非空格字符,且word为0,表示遇到了一个单词的开始,将word置为1,并将num加1,表示单词数量加1;
输出单词数量;
调用system("pause")函数,暂停程序运行,等待用户按键继续;
返回0,表示程序正常结束。