[問題] 5個數抓最大值跟第二大值

看板C_and_CPP作者 (nba)時間15年前 (2010/11/23 01:33), 編輯推噓7(7016)
留言23則, 10人參與, 最新討論串1/1
最近剛學C 剛開始不久就卡住了 輸入5個數字 抓最大跟第二大的值出來 int main(int argc, char *argv[]) { int c=1,n,big=0; while(c<=5){ printf("enter number:\n"); scanf("%d",&n); if(n>=big){ big=n; } c++; } printf("%d",big); system("PAUSE"); return EXIT_SUCCESS; } 只會抓最大值 不會抓第二大的 麻煩幫幫忙 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.253.223.111

11/23 01:42, , 1F
設big1 big2,當input同時比兩個大,就取代較小的那個
11/23 01:42, 1F

11/23 01:43, , 2F
還有你初值設0,input全是負數就炸了
11/23 01:43, 2F

11/23 01:43, , 3F
11/23 01:43, 3F

11/23 01:45, , 4F
像while(c<=5){.....c++} 這種語法改用for迴圈比較方便
11/23 01:45, 4F

11/23 01:48, , 5F
5566 真夯 @"@
11/23 01:48, 5F

11/23 01:48, , 6F
我漏說了,要是input只比其中一個大,也要取代
11/23 01:48, 6F

11/23 01:54, , 7F
最簡單的方法, 比出最大值後把那個值拿掉, 再比一次XD
11/23 01:54, 7F

11/23 02:11, , 8F
3樓給的程式執行有問題...
11/23 02:11, 8F

11/23 02:21, , 9F
我看了一下3樓的程式,整個邏輯有問題= =
11/23 02:21, 9F

11/23 02:22, , 10F
input由大排到小時才會正確
11/23 02:22, 10F

11/23 02:23, , 11F
要是input是1,2,3,4,5的話,這些值改動的全是big1
11/23 02:23, 11F

11/23 02:25, , 12F
if(n>big1){big2=big1; big1=n;} 這樣應該就ok了
11/23 02:25, 12F

11/23 02:27, , 13F
要解決input全負會有的bug,就先抓兩次給big1,2再跑loop
11/23 02:27, 13F

11/23 02:34, , 14F
if(n>=big1),不然最大值有2個就炸了......看來我該睡了
11/23 02:34, 14F

11/23 10:02, , 15F
可以bubble sort做兩回合就停
11/23 10:02, 15F

11/23 12:53, , 16F
應該是選擇排序 兩回合 沫不一定兩回合就會跑上來
11/23 12:53, 16F

11/23 13:12, , 17F
看看吧 用你原本code稍微加點東西
11/23 13:12, 17F

11/23 13:12, , 18F

11/23 15:43, , 19F
l大給的 如果輸入65432的話 第二大的數字無法出來...
11/23 15:43, 19F

11/23 16:43, , 20F
真的抓不出第二大的
11/23 16:43, 20F

11/23 19:20, , 21F
11/23 19:20, 21F

11/25 14:59, , 22F
http://nopaste.csie.org/84247 這個應該可行:)
11/25 14:59, 22F

11/25 15:01, , 23F
發完才發現樓樓上的概念差不多@@
11/25 15:01, 23F
文章代碼(AID): #1Cwgc5JP (C_and_CPP)