|
Major Member
|
/////////////////////////////////////////////////////////
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變數,在前兩個迴圈的時候很有用。
其他的就自己看吧,正負數及一直重覆按鍵都修正了。
不過程式防呆你就自己來吧,加幾個判斷句就行了。
|