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

    练习1-13  编写一个程序,打印输入中单词长度的直方图。水平方向的直方图比较容易绘制,垂直方向的直方图则要困难些。

    代码如下:

    #include <stdio.h>    //    包含标准库的信息。
    
    #define MAXWORD 10    //    输入单词的最大数。
    #define IN 1        //    在单词内。
    #define OUT 0        //    在单词外。
    
    int main()    //    定义名为main的函数,它不接受参数值。
    {
        printf("======打印输入单词长度的直方图======
    ");
        printf("======只统计前10个单词的长度======
    ");
        int ws_len[MAXWORD];
        int c, count, i, state;    //    单词,单词长度,单词个数,是否输入了多个	或空格。
        c = count = i = state = 0;
    
        while ((c = getchar()) != EOF)
        {
            if (c == '	' || c == '
    ' || c == ' ') //    如果输入完了一个单词。
            {
                //    把单词长度放入长度数组。
                if (state == IN)
                {
                    state = OUT;
                    //    将长度放入长度数组。
                    ws_len[i] = count;
                    //    清空单词长度。
                    count = 0;
                    //    数组下表+1;
                    ++i;
                }
            }
            else
            {
                //    如果输入的不是	,
    和空格,记录单词长度。
                ++count;
                state = IN;
            }
        }
        int j;
    
        printf("单词长度水平直方图如下:
    ");
        for (i = 0;i < 10;i++)
        {
            printf("%2d |", i+1);
            for (j = 0;j < ws_len[i];j++)
            {
                printf("*");
            }
            printf("
    ");
        }
    
        printf("
    单词长度垂直直方图如下:
    ");
        int    maxvalue = 0;
        //    获得最长的单词长度。
        for (i = 0;i < 10;i++)
        {
            if (ws_len[i] > maxvalue)
            {
                maxvalue = ws_len[i];
            }
        }
        
        //    从最上排向下打印。
        for (i = maxvalue; i > 0; --i)
        {
            for (j = 0; j < 10; j++)
                if (ws_len[j] >= i) {
                    printf(" * ");
                }
                else
                    printf("   ");
            printf("
    ");
        }
        for (i = 0; i < 10; i++)
            printf(" %d ", i);
    
    
        getchar();    //    防止控制台一闪而过,需要接受任意字符后在关闭控制台。
        return 0;    //    向执行环境返回一个整形,0代表执行成功。
    }

    个人理解:

    使用之前的计数器功能记录单词的长度,然后在运用循环功能对数组中记录的单词长度进行排版打印。

  • 相关阅读:
    PHP Jquery
    PHP TPinfo表的增删改查
    PHP TP验证码
    PHP TP表单验证
    PHP TP增删改
    8月21日 仿163邮箱中遇到的问题及解决(三)
    8月20日 仿163邮箱中遇到的问题及解决(二)
    8月12日 仿163邮箱中遇到的问题及解决(一)
    8月7日 使用Jquery做表格的隔行变色,点击事件
    6月17日 TP表单验证
  • 原文地址:https://www.cnblogs.com/DeadGardens/p/4780235.html
Copyright © 2011-2022 走看看