开发者社区 问答 正文

根据单词出现次数输出水平直方图编译能通过但是并没有直方图输出

#include <stdio.h>

#define        MAXHIST        18
#define        MAXWORD        16
#define        IN        1
#define        OUT        0

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 == '\t' || c == '\n') {
            state = OUT;
            if (nc > 0)
                if (nc < MAXWORD)
                    ++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);}

展开
收起
a123456678 2016-06-03 17:16:23 1634 分享 版权
1 条回答
写回答
取消 提交回答
  • 在确定nc < MAXWORD 后应该自加的是wl[nc]而不是nc

    2019-07-17 19:26:55
    赞同 展开评论
问答地址: