aihepide 2016-08-17 03:51 采纳率: 0%
浏览 1404

利用c语言编直方图的问题

#include
#define MAXHIST 15
#define MAXWORD 11
#define IN 1
#define OUT 0
main()
{
int c,i,nc,state,j;
int len;
int maxvalue;
int ovflow;
int wl[MAXWORD];

state=OUT;
nc=0;       //每个单词中的字母个数 
ovflow=0;   //单词数大于最大能包括的数目 即(maxword) 
for(i=0;i<MAXWORD;++i)
    wl[i]=0; 
while((c=getchar())!='0')
{
    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(j=MAXHIST;j>0;j--)
{
    for(i=1;i<MAXWORD;i++)

    {if((len=wl[i]*MAXHIST/maxvalue)>=j)
     putchar('*');
     else
     putchar(' ');
    } 
    putchar('\n');
}
for(i=1;i<MAXWORD;i++)
printf("%d",wl[i]);
putchar('\n');
for(i=1;i<MAXWORD;i++)
printf("%d",i);
if(ovflow>0){
    printf("There are %d words >= %d\n",ovflow,MAXWORD);
}

}

这个是垂直输出直方图的,我的想法是先一行行输出*,然后倒数第二行输出该长度单词的数量,最后一行输出各个长度的单词。为什么在输出倒数第二行的数字后面有时候会多一个0啊,特别是单词输入数量多的时候

  • 写回答

2条回答 默认 最新

  • cxsmarkchan 2016-08-18 10:14
    关注

    没发现你所说的情况,麻烦贴一下具体的输入数据和预期输出。

    评论

报告相同问题?

悬赏问题

  • ¥20 怎么在stm32门禁成品上增加记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app