鱼C论坛

 找回密码
 立即注册
查看: 2111|回复: 1

这个程序表示不懂啊

[复制链接]
发表于 2014-5-31 09:28:19 | 显示全部楼层 |阅读模式
5鱼币
//统计字符、单词和行
#include <stdio.h>
#include <ctype.h>          //为isspace()提供函数原型
#include <stdbool.h>        //为bool、true和false提供定义
#define STOP '|'

int main(void)
{
        char c;                //读入字符
        char prev;             //前一个读入字符
        long n_chars = 0L;     //字符数
        int n_lines = 0;       //行数
    int n_words = 0;       //单词数
        int p_lines = 0;       //不完整的行数
        bool inword = false;   //如果c在一个单词中, 则inword等于true

        printf("enter text to be analyzed(| to terminate): \n");
        prev = '\n';           //用于识别完整的行
        while((c = getchar()) != STOP)
        {
                n_chars++;         //统计字符
                if(c == '\n')
                        n_lines++;     //统计行
                if(!isspace(c) && !inword)
                {
                        inword = true; //开始一个新单词
                                n_words++; //统计单词
                }
                if(isspace(c) && inword)
                        inword = false; //到达单词的尾部
                        prev = c;       //保存字符值
        }
        if(prev != '\n')
                p_lines = 1;
        printf("characters = %ld, words = %d, lines = %d, ", 
                n_chars, n_words, n_lines);
        printf("partial lines = %d\n", p_lines);
        getchar();
        getchar();
        return 0;
}

最佳答案

查看完整内容

while((c = getchar()) != STOP) { n_chars++; //统计字符 if(c == '\n') n_lines++; // 遇到换行符'\n',行数就+1 if(!isspace(c) && !inword) { // 如果输入的字符c不是空白字符,且不在前面的单词中,说明字符c是新一个单词的首字母 inwo ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-31 09:28:20 | 显示全部楼层
本帖最后由 苹果沃珂 于 2014-5-31 14:52 编辑

while((c = getchar()) != STOP)
        {
                n_chars++;         //统计字符
                if(c == '\n')            
                        n_lines++;     // 遇到换行符'\n',行数就+1
                if(!isspace(c) && !inword)
                {                        // 如果输入的字符c不是空白字符,且不在前面的单词中,说明字符c是新一个单词的首字母
                        inword = true; //开始一个新单词
                        n_words++; //统计单词
                }
                // 如果输入字符是一个空白符,说明前面的单词已经输入完整
                // inword用于区分连续输入多个空白符
                if(isspace(c) && inword)
                        inword = false; //到达单词的尾部
               prev = c;       //保存字符值
        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 11:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表