zoukankan      html  css  js  c++  java
  • C 统计字符数 行数

    #include <stdio.h>
    
    int isLetter(char ch);
    
    int main()
    {
        int countWords=0;
        int countLines=0;
        char ch;
        char chPre;
        while( (ch=getchar())!=EOF ){//EOF是一个字符型常量
            if(ch=='\n'){
                countLines++;
    
            }
            if(isLetter(chPre)&& (ch==' '||ch=='\0' || ch=='\n' || ch=='.'  )){
                countWords++;
            }
            chPre=ch;
        }
        printf("%d  %d",countWords,countLines);
    
        return 1;
    }
    
    int isLetter(char ch){
        if( (ch>='A'&& ch<='Z') ||  (ch>='a'&&ch<='z')){
            return 1;
        }else{
            return 0;
        }
    }
    //教程上的做法:
    #include  <stdio.h>
    #define IN   1  /* 在单词内 */ #define OUT  0  /* 在单词外 */
    /* 统计输入的行数、单词数与字符数 */
    main() {
        int c, nl, nw, nc, state;
        state = OUT;
        nl = nw = nc = 0;
        while ((c = getchar()) != EOF) {
            ++nc;
            if (c == '\n')
                ++nl;
            if (c == ' ' || c == '\n' || c == '\t')
                state = OUT;
            else if (state == OUT) {
                state = IN;
                ++nw;
            }
        }
        printf("%d  %d  %d\n", nl, nw, nc);
    }

    程序在执行时,每当遇到单词的第一个字符,它就作为一个新单词加以统计。 s t a t e变量用于 记录程序是否正在处理一个单词(是否在一个单词中),它的初值是“不在单词中”,即被赋初 值为O U T。我们在这里使用了符号常量 I N与O U T而没有使用其字面值1与0,主要是因为这可以 使程序更可读。在比较小的程序中,这样做也许看不出有什么区别,但在比较大的程序中,如 果从一开始就这样做,那么所增加的一点工作量与所提高的程序的明晰性相比是很值得的。读 者也会发现,在程序中,如果幻数仅仅出现在符号常量中,那么对程序做大量修改就显得比较 容易。 语句行
    nl = nw = nc = 0; 用于把其中的三个变量n l 、 nw 与n c都置为 0。这种情况并不特殊,但要注意这样一个事实,在兼 有值与赋值两种功能的表达式中,赋值结合次序是由右至左。所以上面这个语句也可以写成:
    nl = ( nw = ( nc = 0 ));
    运算符 | | 的意思是O R (或) ,所以程序行
    if ( c == ' ' ||c == '\n' || c == '\t' )
    的意思是“如果c是空格或c是换行符或c是制表符”(回忆一下,换码序列 \ t 是制表符的可见表
    示)。与之对应的一个运算符是& &,其含义是A N D(与),其优先级只比 || 高一级。经由& &或 || 连接的表达式由左至右求值,并保证在求值过程中只要已得知真或假,求值就停止。如果 c是 一个空格,那么就没有必要再测试它是否为换行符或制表符,故后两个测试无需再进行。在这 里这倒不特别重要,但在某些更复杂的情况下这样做就显得很重要,不久我们将会看到这种例 子。

    测试例子
    Dashing through the snow
    In a one horse open sleigh
    O'er the fields we go
    Laughing all the way
    Bells on bob tails ring
    Making spirits bright
    What fun it is to laugh and sing
    A sleighing song tonight

  • 相关阅读:
    42.纯 CSS 创作一个均衡器 loader 动画
    41.纯 CSS 绘制一支栩栩如生的铅笔
    1.如何在Cloud Studio上执行Python代码?
    2.每个 HTML 文件里开头都有个<!DOCTYPE>
    39.纯 CSS 创作一个表达怀念童年心情的条纹彩虹心特效
    LOJ #2127. 「HAOI2015」按位或 min-max容斥+FWT
    HDU
    LOJ #3044. 「ZJOI2019」Minimax 搜索 动态DP+概率
    LOJ #3043. 「ZJOI2019」线段树 线段树+分类讨论
    Comet OJ
  • 原文地址:https://www.cnblogs.com/cart55free99/p/2982543.html
Copyright © 2011-2022 走看看