查看單個文章
  #8  
舊 2014-02-24, 01:57 AM
a40136 a40136 目前離線
進階會員
 
註冊日期: 2007-07-01
文章: 261
預設

引用:
作者: 哈啦 查看文章
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;
}
回覆時引用此篇文章