第二大整数 蓝桥杯 算法提高

问题描述

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

猜你喜欢

转载自blog.csdn.net/weixin_44339734/article/details/85461531
今日推荐