第二大整數 藍橋杯 演算法提高
阿新 • • 發佈:2018-12-31
問題描述
編寫一個程式,讀入一組整數(不超過20個),當用戶輸入0時,表示輸入結束。然後程式將從這組整數中,把第二大的那個整數找出來,並把它打印出來。
說明:
- (1)0表示輸入結束,它本身並不計入這組整數中。
- (2)在這組整數中,既有正數,也可能有負數。
- (3)這組整數的個數不少於2個。
輸入格式:
輸入只有一行,包括若干個整數,中間用空格隔開,最後一個整數為0。
輸出格式:
輸出第二大的那個整數。
輸入輸出樣例
樣例輸入
5 8 -12 7 0
樣例輸出
7
思路:
迴圈輸入,輸入為0時停止,用選擇法進行排序,將第2大整數輸出
程式碼:
#include <stdio.h> int main() { int t,j,n,i=0,a[21]; while(1) { scanf("%d",&a[i]); if(a[i]!=0){i++;continue;} //輸入不為0則跳過本輪迴圈,再次輸入 else { n=i; //記錄下整數個數,除0外 for(i=0;i<n;i++) //選擇排序,這裡也可以在第二輪迴圈時退出,優化演算法 for(j=i+1;j<n;j++) { if(a[i]<a[j])t=a[i],a[i]=a[j],a[j]=t; } break; } } printf("%d",a[1]); return 0; }