瀏覽單個文章
flowofsoul
Major Member
 
flowofsoul的大頭照
 

加入日期: Jul 2004
文章: 292
/////////////////////////////////////////////////////////

int test1,temp,big, sec = 0,counter = 0;



cout << "請輸入整數,若輸入0則程式結束" << endl ;

cin >> test1 ;


sec = big = temp = test1 - 1;



while(test1){


if(counter == 1)
temp = big;

if(counter > 1 && test1 > big)
temp = big;

else if(counter > 1 && test1 > temp)
if(test1 == big){
}
else
temp = test1;

if(big == temp && sec == temp && test1 < temp){
temp = test1;

}


big = big > test1 ? big : test1;

if(counter ==1 && test1 < big)
sec = test1;
else
sec = temp;

if(counter > 1 && big > sec && test1 > sec)
sec = temp;


if(counter == 0){
sec = 0;
}



counter++;


cout << "big " << big << endl;
cout << "sec " << sec << endl;
cout << "temp " << temp << endl;
cout << "counter " << counter << endl;



cout << "請輸入整數,若輸入0則程式結束" << endl;

cin >> test1;


}

cout << "最大為" << big << " 次大為" << sec << endl;

////////////////////////////////////////////////

太久沒摸實在是不行呀,剛剛真不應該說簡單的,真是丟臉。抱歉拖了你們那麼久的時間。

樓主,這個應該行了,參考一下吧。記得自己再debug一下。

我的visual c++ .net 2003有點怪怪的,程式碼一分未改,同樣的測試,有時候行有時候不行。

我除掉了幾個bug:
一、如果一開始一直按重覆的數字,後來再按比較小的數字,程式會沒反應(不是當掉),按比較大的才行。
二、按負數,按的負值越來越大程式無作用。

還有,中間下面那四行
cout << "big " << big << endl;
cout << "sec " << sec << endl;
cout << "temp " << temp << endl;
cout << "counter " << counter << endl;

是我方便除錯用的,可刪。

我的寫法是一開始指定給所有變數使用者輸入值-1的值。也就是說
big = big > test1 ? big : test1;
這一行源碼一開始是絕對有用的。

關鍵是counter變數,在前兩個迴圈的時候很有用。

其他的就自己看吧,正負數及一直重覆按鍵都修正了。

不過程式防呆你就自己來吧,加幾個判斷句就行了。
舊 2004-10-29, 05:17 AM #40
回應時引用此文章
flowofsoul離線中