zoukankan      html  css  js  c++  java
  • C程序设计语言练习题1-11

    练习1-11  你准备如何测试单词计数程序?如果程序中存在某种错误,那么什么样的输入最可能发现这类错误呢?

    代码如下:

    #include <stdio.h>    //    包含标准库的信息。
    
    #define IN 1    /*    在单词内    */
    #define OUT 0    /*    在单词外    */
    
    int main( void )    //    定义名为main的函数,它不接受参数值。
    {
        printf("======计数器程序======
    ");
    
        int c, nl, nw, nc, state;
    
        state = OUT;
        nl = nw = nc = 0;
    
        while ((c = getchar()) != EOF)
        {
            //    字符计数器递增。
            ++nc;
            if (c == '
    ') ++nl;    //    换行计数器递增。
    
            //    如果遇到空格、换行符、制表符时,记录下状态。
            //    若下一个字符不是这三个符号,则单词计数器递增。
            if (c == ' ' || c == '
    ' || c == '	') state = OUT;
            else if (state == OUT)
            {
                state = IN;
                ++nw;
            }
        }
    
        printf("共%d行,共%d个单词,共%d个字符。
    ", nl, nw, nc);
    
        getch();    //    防止控制台一闪而过,需要接受任意字符后在关闭控制台。
        return 0;    //    向执行环境返回一个整形,0代表执行成功。
    }

    个人理解:

    该程序中,字符计数器会把换行符' '也算作一个字符,并且直接输入字符加EOF时,程序将不会终止。如图所示:

    键入回车键后并不会终止程序。

  • 相关阅读:
    矩阵分析 p13~p20
    矩阵分析 p1~p13
    复变函数2
    口语80篇(1-2)
    复变函数1
    背单词方法
    writing practice
    将博客搬至CSDN
    windows内核编程 白话设备栈
    sfliter__except_handler4
  • 原文地址:https://www.cnblogs.com/DeadGardens/p/4777387.html
Copyright © 2011-2022 走看看