zoukankan      html  css  js  c++  java
  • 练习113:编写一个程序,打印输入中单词长度的直方图。水平容易,垂直难。

    对题目不太理解  什么事单词长度  什么是直方图,所以选择直接看答案。 ps 不得不承认智商是硬伤....

    直接复制答案:

    #include <stdio.h>
    #define MAXHIST 15
    #define MAXWORD 11
    #define IN 1
    #define OUT 0

    int main()
    {

    int c, i, nc, state;
    int len;
    int maxvalue;
    int ovflow;
    int wl[MAXWORD];

    state = OUT;
    nc = 0;
    ovflow = 0;
    for (i = 0; i < MAXWORD; ++i)
    wl[i] = 0;
    while((c = getchar()) != EOF)
    {
    if(c == ' ' || c == '\n' || c == '\t')
    {
    state = OUT;
    if (nc > 0)
    if (nc < MAXWORD)
    ++wl[nc];
    else
    ++ovflow;
    nc = 0;
    }else if (state == OUT)
    {
    state = IN;
    nc = 1;
    }else
    ++nc;
    }
    maxvalue = 0;
    for (i = 1; i < MAXWORD; ++i)
    if (wl[i] > maxvalue)
    maxvalue = wl[i];
    for (i = 1; i < MAXWORD; ++i)
    {
    printf("%5d - %5d :", i, wl[i]);
    if (wl[i] > 0)
    {
    if ((len = wl[i] * MAXHIST / maxvalue) <= 0)
    len = 1;
    }else
    len = 0;
    while (len > 0)
    {
    putchar('*');
    --len;
    }
    putchar('\n');
    }
    if (ovflow > 0)
    printf ("There are %d words >= %d\n", ovflow, MAXWORD);
    }

     垂直直方图

    #include <stdio.h>
    #define MAXHIST 15
    #define MAXWORD 11
    #define IN 1
    #define OUT 0

    int main()
    {

    int c, i, nc, j, state;
    int len;
    int maxvalue;
    int ovflow;
    int wl[MAXWORD];

    state = OUT;
    nc = 0;
    ovflow = 0;
    for (i = 0; i < MAXWORD; ++i)
    wl[i] = 0;
    while((c = getchar()) != EOF)
    {
    if(c == ' ' || c == '\n' || c == '\t')
    {
    state = OUT;
    if (nc > 0)
    if (nc < MAXWORD)
    ++wl[nc];
    else
    ++ovflow;
    nc = 0;
    }else if (state == OUT)
    {
    state = IN;
    nc = 1;
    }else
    ++nc;
    }
    maxvalue = 0;
    for (i = 1; i < MAXWORD; ++i)
    if (wl[i] > maxvalue)
    maxvalue = wl[i];
    for (i = MAXHIST; i > 0; --i)
    {
    for(j = 1; j < MAXWORD; ++j)
    if(wl[j] * MAXHIST / maxvalue >= i)
    printf(" * ");
    else
    printf(" ");
    putchar('\n');

    }
    for(i = 1; i < MAXWORD; ++i)
    printf("%4d", i);
    putchar('\n');
    for(i = 1; i < MAXWORD; ++i)
    printf("%4d", wl[i]);
    putchar('\n');
    if(ovflow > 0)
    printf("There are %d words >= %d\n", ovflow, MAXWORD);

    }

  • 相关阅读:
    安利博客
    python 的高阶算法之堆排序
    functools模块用途
    类型注解
    高阶函数和装饰器
    生成器

    递归函数
    匿名函数
    函数 的 返回值作用域
  • 原文地址:https://www.cnblogs.com/jango/p/3377720.html
Copyright © 2011-2022 走看看