練習是打印輸入中不同字符的直方圖。底部是我的代碼,我將不同的字符分解爲3個類別a,b或其他,以便在代碼成功時推斷出更多類別的字符。但它沒有輸出我想要的,例如,用於輸入ab cd
我希望C中的簡單垂直直方圖
x
xxx
---
abo
t
h
e
r
,但我得到的是
---
abo
t
h
e
r
這裏是我的嘗試:
#include<stdio.h>
main()
{
int i,c,b, max;
int array[3] = {0,0,0};
while((c = getchar()) != EOF){
if(c== 'a')
++array[0];
else if(c== 'b')
++array[1];
else if(c=='\n' ||c=='\t' || c==' '){}
else ++array[2];
}
array[0]=max;
i=0;
while(i<3){
if(max>=array[i])
{}
else array[i]=max;
++i;
}
i=0;
max=b;
while(i<b){
if(array[0]>=max){
putchar('x');}
else putchar(' ');
if(array[1]>=max) {
putchar('x');}
else putchar(' ');
if (array[2]>=max){
putchar('x\n');}
else putchar(' \n');
--max;
++i;
}
printf("---\nabo\n t\n h\n e\n r");
}
的分配'陣列[0] = MAX;'和'其他陣列[I] = MAX;'可能應該轉頭的其他方式(最大= ...)。您想要將該值分配給最大值,而不是其他值。類似地,由於您希望將變量_b_設置爲_max_的當前值而不是其他方式,因此應將「max = b」行更改爲「b = max」。 – Ma3x
如果使用調試器執行代碼,會發生什麼情況? –
您在未初始化'b'的情況下分配了'max = b'! – haccks