小白求解,课本代码。

2301_81141171 2023-11-17 19:29:06

#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;

}

...全文
128 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
forever74 2023-11-18
  • 打赏
  • 举报
回复 1

你漏看了一个分号。
while行末尾的分号才是它的循环体。
而红字前面那句不在循环内。

2301_81141171 2023-11-19
  • 举报
回复 1
@forever74 恍然大悟
少年黑客 2023-11-17
  • 打赏
  • 举报
回复 2

这段代码的功能是计算输入的字符串中单词的数量。具体步骤如下:

定义一个字符数组str,用于存储输入的字符串;
使用while循环读取输入的字符串,直到遇到换行符' ';
在循环结束后,将字符串末尾添加一个空字符'\0',表示字符串结束;
使用for循环遍历字符串中的每个字符,统计单词数量;
如果遇到空格字符,将word置为0,表示下一个字符不是单词的开始;
如果遇到非空格字符,且word为0,表示遇到了一个单词的开始,将word置为1,并将num加1,表示单词数量加1;
输出单词数量;
调用system("pause")函数,暂停程序运行,等待用户按键继续;
返回0,表示程序正常结束。

69,573

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧