C编程——从键盘输入多个数据,并输出其中第二大的数据

1、注:第二大数小于最大数
2、程序

#include <stdio.h>

int getmax2(int *,int);
	
int main()
{	
	int a[99] = {0};
	int count = 0;
	
	printf ("Please input numbers:");
	
	do{
		scanf ("%d",&a[count]);
		count++;
	}while( getchar() != '\n');//换行前,从键盘获取数据
	
	printf ("Max2 = %d\n",getmax2(a,count));
	
	return 0;
}

int getmax2(int *array,int len)
{
	int i;
	int max1 = array[0];
	int max2 = 0;
	
	if (NULL == array || len <= 0 || array[0] == array[1])//第二大值必须小于最大值
	{
		return -1;
	}
	
	for (i = 1; i < len; i++)
	{
		if (len == 2)//如果只输入两个数时,需另行判断
		{
			if (array[0] < array[1])
			{
				max2 = array[0];
			}
			else
			{
				max2 = array[1];
			}
			break;
		}
		
		if (array[i] > max1)//array[i]>最大值为max1时
		{
			max2 = max1;//在最大值存入max1前,将原最大值存入max2
			max1 = array[i];
		}
		else
		{
			if (array[i] > max2 && array[i] < max1)//若第二大值等于max1,则舍弃
			{
				max2 = array[i];
			}
		}
		
	}
	return max2;
}

3、结果
Please input numbers:1 2 33 44 2 4 44 55 77 77 55
Max2 = 55

猜你喜欢

转载自blog.csdn.net/ypjsdtd/article/details/84489471