问题描述
编写一个程序,读入一组整数(不超过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;
}