我不知道我在做什麼錯在這裏,但我試圖根據通過使用getchar()
(C編程語言練習之一)的commad行輸入的字符串的長度來製作垂直直方圖程序,但是我運行它時似乎出錯了。函數printgraph()
應該使用通過打印圖形graph[][]
所示的for
循環逐行打印直方圖,其中j
遞增y軸並且i
遞增x軸。但是,當我運行這個時,圖形到達這行代碼時不會打印。我已經修改了代碼並多次修改了代碼,但仍然沒有任何線索。我知道這對一些人來說可能也是一個微不足道的問題,我很抱歉我缺乏經驗,但是所有的幫助都是值得讚賞的。程序不會執行函數嗎?
#include <stdio.h>
char graph[11][11];
void printgraph(){
int i, j;
char graph[11][11];
for(j = 0; j<=10; j++){
for(i = 0; i<=10; i++){
putchar(graph[i][j]);
}
printf("\n");
}
}
int main(){
char c, graph[11][11];
int i, j, onoroff, numchar[10];
for(i = 10; i>=0; i--)
graph[0][i] = i;
for(j=10;j>=0; j--)
graph[j][0] = j;
for(j=0;j<=9;i++)
numchar[j] = 0;
onoroff = 1;
i = 0;
while(graph[1][10] != 'O' || graph[2][10] != 'O' || graph[3][10] != 'O' || graph[4][10] != 'O' || graph[5][10] != 'O' || graph[6][10] != 'O' || graph[7][10] != 'O' || graph[8][10] != 'O' || graph[9][10] != 'O' ||graph[10][10] != 'O'){
while((c = getchar()) != EOF){
printgraph();
if(c == ' '|| c == '\n' || c == '\t'){
if(onoroff == 1){
numchar[i]++;
graph[i][numchar[i]+1] = 'O';
}
onoroff = 0;
i = 0;
}else if(onoroff == 1){
i++;
}else if(onoroff == 0){
onoroff = 1;
i++;
}
}
}
return 0;
}
不要在函數內部重新聲明全局變量。更好的是,完全避免全局變量。將參數傳遞給函數。 –