|
|
1.以下程序已经在linux中编译运行,但是就是不能按预想的打印出直方图,其它的一切正常,为什么呢?
2.该程序为什么在windows中编译会报错,而且报的错莫名其妙?
- #include <stdio.h>
- #define MAXHIST 15 //直方图的最大长度
- #define MAXWORD 10 //单词的最大长度
- #define IN 1 //单词内
- #define OUT 0 //单词外
- //打印单词长度直方图
- main()
- {
- int c,i,nc,state;
- int wl[MAXWORD]; //按字符数不同记载单词出现的次数
- int over; //超出长度范围的单词数
- int maxvalue; //输入的单词含字符的最大值
- int len; //输出的*个数
- nc=0;
- state=OUT;
- over=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)
- wl[nc]++;
- else
- over++;
- nc=0;
- }else if(state==OUT){ //由OUT切换到IN意味着开始进入单词
- state=IN;
- nc=1;
- }else
- nc++; //不在单词外且不处于刚进入单词开始时字符累加
- }
- maxvalue=0;
- for(i=1;i<MAXWORD;i++)
- if(maxvalue<wl[i])
- 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(over>0)
- printf("There are %d words >= %d\n",over,MAXWORD);
- }
复制代码 |
|