一、方法一
#include <stdio.h>
#define P 5//数组元素的个数
int main()
{
int i,max1,max2=0;//定义一个最大值和一个最小值
int tab[P];//定义一个数组
for(i=0;i<P;i++)//输入数组的元素
scanf("%d",&tab[i]);
max1=tab[0];//初始化:将数组中的元素值赋给最大值
for(i=0;i<P;i++)//遍历数组中的元素
{
//条件判断:这个元素有四种情况
//1、等于最大值:抛弃
//2、大于最大值(max1):先把以前的最大值赋值给第二大的,然后把这个元素赋值给max1
//3、小于最大值但是大于 第二大的值:把这个值赋给第二大的值
//4、小于最大值和第二大的值:抛弃
if(max1<=tab[i])
{
if(max1==tab[i])
continue;
max2=max1;
max1=tab[i];
}
else if(max2<=tab[i])
{
max2=tab[i];
}
}
printf("最大值:%d\n最小值:%d\n",max1,max2);
return 0;
}
二、方法二
#include <stdio.h>
#define P 5//数组元素的个数
int main()
{
int i,j,tab[P];
for(i=0;i<P;i++)
scanf("%d",&tab[i]);
for(i=0;i<2;i++)//交换两次,把最大值和第二大值放到最后两个
{
for(j=0;j<(P-1-i);j++)
{
if(tab[j]>tab[j+1])
{
//异或交换两个元素的值
tab[j]^=tab[j+1];
tab[j+1]^=tab[j];
tab[j]^=tab[j+1];
}
}
}
printf("%d\n",tab[P-2]);//输出倒数第二个元素的值,就是第二大值
return 0;
}