用C语言写一个程序,输入一个非空列表,返回此列表中第三大的数,若不存在则返回列表中最大的数
时间: 2024-09-21 20:09:17 浏览: 26
在C语言中,你可以通过遍历数组并维护三个变量分别存储最大值、次大值和第三大值的方式来实现这个功能。下面是一个简单的示例程序:
```c
#include <stdio.h>
// 定义函数来找出并返回列表中第三大的数
int findThirdLargest(int *arr, int size) {
// 初始化最大值、次大值和第三大值
int max = arr[0], second_max = INT_MIN, third_max = INT_MIN;
for (int i = 1; i < size; i++) {
if (arr[i] > max) {
third_max = second_max;
second_max = max;
max = arr[i];
} else if (arr[i] > second_max && arr[i] != max) {
third_max = second_max;
second_max = arr[i];
} else if (arr[i] > third_max && arr[i] != max && arr[i] != second_max) {
third_max = arr[i];
}
}
// 如果数组小于3个元素,直接返回最大值
if (third_max == INT_MIN)
return max;
return third_max;
}
int main() {
int n;
printf("Enter the number of elements in the list: ");
scanf("%d", &n);
int arr[n];
printf("Enter the numbers in the list: ");
for (int i = 0; i < n; i++)
scanf("%d", &arr[i]);
int third_largest = findThirdLargest(arr, n);
if (third_largest == arr[n - 1])
printf("No third largest number exists, returning the maximum: %d\n", third_largest);
else
printf("The third largest number is: %d\n", third_largest);
return 0;
}
```
在这个程序中,我们首先获取用户输入的列表元素,然后利用一个for循环遍历数组,并更新最大值、第二大的值以及第三大的值。如果数组只有三个或更少的元素,则没有第三大数,此时返回最大值。否则,返回找到的第三大数。