题目:
给你一个整型的数组,求第二大的数。相同的不算。比如:88,88,88,88这样一个数组就没有第二大的。比如:88,88, 22,11 第二大的数就是22
Code(C):
#include<stdio.h>
int sec_max(int a[],int n,int *secd_max);
int main()
{
int a[100];
int n,i,secd_max = 0,flag = 0;
printf("请输入数组元素的个数\n");
scanf("%d",&n);
printf("请输入数组的元素\n");
for(i = 0;i < n;i++)
scanf("%d",&a[i]);
flag = sec_max(a,n,&secd_max);
if(1 == flag)
printf("数组第二大的数是%d\n",secd_max);
else
printf("该数组不存在第二大的数!\n");
}
int sec_max(int a[],int n,int *secd_max)
{
int i,max = a[0];
*secd_max = -100000;
for(i = 0;i < n;i++)
{
if(a[i] > max)
{
*secd_max = max; //这里要先给第二个数赋值
max = a[i];
}
else if(a[i] == max)
continue;
else if(a[i] > *secd_max)
{
*secd_max = a[i];
}
}
if(-100000== *secd_max)
return 0;
else
return 1;
}