|
1.以下程序已经在linux中编译运行,但是就是不能按预想的打印出直方图,其它的一切正常,为什么呢?
2.该程序为什么在windows中编译会报错,而且报的错莫名其妙?
[code:1]
#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);
}
[[/code:1] |
|