求助!在这个代码中‘bool inword = false’存在的意义是什么?没看懂,求大佬解惑!

MZ_ing 2023-08-15 14:39:17
/*编写一个程序,在遇到EOF之前,把输入作为字符流读取。
该程序要报告平均每个单词的字母数。不要把空白统计为单词的字母。
实际上,标点符号也不应该统计,但是现在暂时不同考虑这么多
(如果你比较在意这点,考虑使用ctype.h系列中的ispunct()函数)*/
#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>

int main(void)
{
    bool inword = false;
    int ch, words = 0, letter = 0;

    printf("Please enter some words (EOF to quit):\n");
    while ((ch = getchar()) != EOF)
    {
        if (ispunct(ch))
        {
            continue;
        }
        if (isalpha(ch))
        {
            letter++;
        }
        if (!isspace(ch) && !inword)
        {
            inword = true;
            words++;
        }
        if (isspace(ch) && inword)
        {
            inword = false;
        }
    }
    double count = letter / words;
    printf("Total words: %d\n", words);
    printf("Total letters: %d\n", letter);
    printf("Average letters of words: %g\n", count);

    return 0;
}

 

...全文
223 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zara 2023-08-15
  • 打赏
  • 举报
回复

表示当前是不是单词里,只有遇到字母,才进入单词,然后只有遇到空格(如题所言暂未考虑标点类),才结束当前单词;如此循环。

MZ_ing 2023-08-15
  • 举报
回复
@zara 好的谢谢

70,014

社区成员

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

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