思路
1 先把数组元素从小到大排列;
2 从最后一个元素开始,找到第三大的数,最后一个元素与前一个比较,如果 相等则看前一个元素,否则让count+1;如果count等于3,或者i<0, 则结束循环.
#include <stdio.h>
//冒泡排序
int quick(int a[], int n)
{
int i, j, t;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - 1 - i; j++)
{
if(a[j] > a[j + 1])
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
}
int third(int a[], int n)
{
int i;
int count = 0;
if(n < 3)
{
//当数组元素个数小于3时直接输出最大的元素
printf("%d ", a[n - 1]);
}
else
{
//从最后一个元素开始
for(i = n - 1; i > 0; i-- )
{
//当前元素和它前一个元素相等则看它前一个元素
if(a[i] == a[i - 1])
{
i--;
}
//当前元素和它前一个元素不同时则count+1
while(a[i] != a[i - 1])
{
count++;
break;
}
//当count==3, 结束循环
if(count == 3)
{
break;
}
}
printf("%d", a[i]);
}
}
int main()
{
int n, i;
//输入数组元素个数
scanf("%d", &n);
int a[n];
//依次输入数组元素
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
quick(a, n);
third(a, n);
}