求一个一维数组中第二大的元素,及其在原数组中的下标。

已知一个一维数组a[],设计一段程序,要求求出该数组中第二大的元素的值,并且求出该元素在原数组中的下标。

第1个回答  推荐于2017-10-26
#include<stdio.h>#define N 10//数组中的N个元素
void main()
{
int a[N];
int e,f,j;//e最大数,f第二大的,j第二大的下标
int i;
for(i=0;i<N;i++)//定义一数组
{
scanf("%d",&a[i]);
}
if(a[0]<a[1])//给出e,f初值
{
e=a[1];
f=a[0];
}
else
{
e=a[0];
f=a[1];
}
for(i=2;i<N;i++)//循环判断f的最终值
{
if(a[i]>=e) {f=e;e=a[i];}
else if(a[i]>f) {f=a[i];}
}
printf("%d\n",f);//输出第二大的数
for(i=0;i<N;i++)//确定并输出下标
{
if(a[i]==f)
printf("%d\n",i);
}

}本回答被提问者采纳
第2个回答  2017-10-26
public static void fun_Max2(int[] arr) {
int max1, max2;//定义max1 为最大值,max2为第二大
if (arr[0] > arr[1]) {

max1 = arr[0];
max2 = arr[1];
} else {
max1 = arr[1];
max2 = arr[0];
}
for (int i = 0; i < arr.length; i++) {
if (max1 < arr[i]) {
max2 = max1;
max1 = arr[i];
} else if (max1 > arr[i]) {
if (arr[i] > max2) {
max2 = arr[i];
}
}
}
System.out.println("max2= " + max2);
}