| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4294 人关注过本帖
标题:编写一个程序,打印输入中单词长度的直方图
取消只看楼主 加入收藏
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
结帖率:97.5%
收藏
已结贴  问题点数:20 回复次数:4 
编写一个程序,打印输入中单词长度的直方图
k&r里面的打印单词的长度直方图。尼玛在第一个while循环就是死循环,在网上一搜索全是这样的代码。难道是我的问题。。。

程序代码:
#include <stdio.h>

#define MAXHIST 15
#define MAXWORD 11
#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=='\n'||c=='\t'){
            state=OUT;
            if(nc>0){
                if(nc<MAXWORD)
                    ++wl[nc];
                else
                    ++ovflow;
            }
            //printf("%d,%d\n",nc,wl[nc]);
        }
        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);
}
搜索更多相关主题的帖子: 直方图 单词 尼玛 网上 
2017-04-28 21:14
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 2楼 renkejun1942
练习1-13到1-14的3个例子全是这样的死循环。我想搞明白谁的错。。。。。
2017-04-28 21:17
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 3楼 Emotiona
    while( EOF != ( ch = getchar() ) )
        if( isalpha( ch ) )
        {
            ++count;
            if( isupper( ch ) )
                ch = tolower( ch );
            ++alphabet[ ch - 'a' ];
        }

你这个也是死循环啊。怎么打印的 求教
2017-04-28 21:20
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
啊哈哈~~~怎么输入的!!!
2017-04-28 21:21
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 7楼 renkejun1942
试了下就是ctrl + z; 我把书上的例子改成‘#’结束。醉了~~~~真不要脸。
2017-04-28 21:27
快速回复:编写一个程序,打印输入中单词长度的直方图
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017837 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved