引用:
作者: 哈啦
thanks.
我剛才再次拿mode=stats[1];和mode=stats[0];二個都去跑一次,這次果然二個全都是錯誤的結果,剛才我不知怎麼跑的?
謝謝你的code。
那如果是要修改原本的code,該如何改呢?
真奇怪,如果發生這麼多的錯誤,因為錯誤之處至少二個地方,這本書是如何通過校對的?我目前看的是這本 C語言自學手冊 第三版 ,但我買的比較早,封面不一樣。
跑了一下你的code,在include<iostream>那裡卡住,說沒有這個檔或目錄,後來我改成<iostream.h>也一樣。
另外 using namespace std; 已經超出我目前看過的東西了。
補充,當我看到cin cout時我才想到您寫的是 c++,所以就存成.cpp再去跑,就ok了。
|
稍微改過,應該正確,請參考
代碼:
#include <stdio.h>
int main(void)
{
int stats[20],x,y;
int mode,count,oldcount,oldmode;
printf("enter 20 numbers: \n");
for(x=0;x<20;x++) scanf("%d",&stats[x]);
oldcount = 0;
//find the mode
for(x=0;x<20;x++){
mode=stats[x]; //這裡應該是要針對每個input去計算應該是每次循環
count = 0; //還沒開始算應該是0不是1,但大家起點相同期實不影響,只是邏輯問題
//count the occurrences of this value.
for(y=0;y<20;y++) //y=x+1會導致前面的沒有算到,count值會錯誤
if(mode==stats[y]) count++;
//if count is greater than old count,use new mode.
if(count>oldcount){
oldmode=mode;
oldcount=count;
}
}
printf("the mode is %d\n",oldmode);
return 0;
}