![]() |
PCDVD數位科技討論區
(https://www.pcdvd.com.tw/index.php)
- 疑難雜症區
(https://www.pcdvd.com.tw/forumdisplay.php?f=34)
- - 有人會寫程式嗎?
(https://www.pcdvd.com.tw/showthread.php?t=403665)
|
|---|
原來如此,確實是把結束條件的 0 也拿進去判斷了
---------------------------------------------- 更新版(修改後面的輸入皆小於第一次輸入時的判斷) int num=1, largest = 0, second = 0; bool isFirst = true; printf( "請輸入整數,若要結束則輸入 0\n" ); while ( num ) { scanf( "%d", &num ); if ( num == 0 ) break; if ( isFirst ) { largest = num; second = num; isFirst = false; continue; } if ( largest == second ) second = num; if ( num > largest ) { second = largest; largest = num; } else if ( num > second ) second = num; } printf( "最大為 %d 次大為 %d ", largest, second ); |
引用:
嗯.....對於這個嘛 個人是認為,只要有心想弄懂,向會的人討教也不為過 :agree: 總比什麼都不去想,之後再複製同學的交去,什麼也沒學到要來的好吧 :jolin: 重點是人家的解法要「弄懂」就是了 :ase |
flowofsoul,為什麼負數的次大值變成負很小很小
|
沒差
不過程式被清掉( 說有 BUG ),想找隻蟲也沒辦法了 :cry: |
有點亂掉了,因為我在發言時不知道你已經又發言!!!
|
看來大家都喜歡把輸入第一第二個數字也放在迴圈裡,而且也不喜歡直接從迴圈內 break 出來?
代碼:
#include <stdlib.h>
#include <limits.h>
main() {
int max1=INT_MIN, max2=INT_MIN, n;
printf("enter at least two non-zero numbers then end with a zero...\n");
while (scanf("%d", &n), n!=0) {
if (n>max1) {
max2=max1;
max1=n;
} else if (n>max2) {
max2=n;
}
}
printf("max1=%d, max2=%d\n", max1, max2);
}
|
引用:
我同意你的看法,現在只要我只要問這種作業上的問題,老師總是回答的很簡單,有答好像沒答一樣,所以才想來這兒問問看,一邊做作業一邊學習為何會這樣 :shy: |
出現了....<LIMITS> + INT_MIN :jolin:
因為程式是判斷輸入的數較大的話就代換掉 為了避免輸入值全部小於初始值的麻煩 乾脆初始值給 INT 的 MINIMUM.... |
可是次大值還是變成負很小
|
引用:
誰的 :confused: 我的跟 8:5 兄的我試都很正常啊 :shock: 除非你只輸入一個數 :jolin: |
| 所有的時間均為GMT +8。 現在的時間是02:21 PM. |
vBulletin Version 3.0.1
powered_by_vbulletin 2026。