-2
練習對K&R練習1-13
「編寫一個程序來打印輸入中單詞長度的直方圖」。
下面是在C答案書給出了答案。出於某種原因,它在CodeBlocks中不起作用,因爲在輸入我的輸入時沒有任何輸出。這是爲什麼?
另一個問題是關於wl[i]
;那是什麼?
#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;
nc=0;
}else if (state == OUT){
state = IN;
nc = 1;
}else
++nc;
}
maxvalue = 0;
for (i = 1; 1<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);
}
你有沒有試着用*啓用所有*警告編制? – Kevin
如果你想問什麼是數組下標,你需要真正閱讀一些關於C的書。如果你不明白你在做什麼,你永遠不會解決你的問題。 – siride
K&R不算是一本關於C的書嗎?謝謝澄清,不知道是數組下標。 @Kevin我已啓用所有警告,但我仍然面臨同樣的問題。 – MethequalsMath