用c语言实现上面的代码
时间: 2024-09-23 21:14:02 浏览: 23
在 C 语言中,由于没有内置的浮点型比较运算符,我们可以稍微修改一下上面的 Python 实现,使用整型变量存储临时的最大值。下面是 C 语言版本的代码:
```c
#include <stdio.h>
#include <limits.h>
int third_largest(int nums[], int n) {
int max_value = INT_MIN;
int second_max = INT_MIN;
int third_max = INT_MIN;
// 遍历数组
for (int i = 1; i < n; i++) {
if (nums[i] > max_value) {
third_max = second_max;
second_max = max_value;
max_value = nums[i];
} else if (nums[i] > second_max && nums[i] != max_value) {
third_max = second_max;
second_max = nums[i];
} else if (nums[i] > third_max && nums[i] != max_value && nums[i] != second_max) {
third_max = nums[i];
}
}
// 如果列表长度小于3,直接返回最大值
if (n < 3)
return max_value;
return third_max;
}
int main() {
int nums[] = {1, 2, 3, 4, 5};
int n = sizeof(nums) / sizeof(nums[0]);
printf("The third largest number is: %d\n", third_largest(nums, n));
return 0;
}
```
在这个 C 版本中,我们使用了 `<limits.h>` 头文件中的 `INT_MIN` 来初始化最小值,因为 C 语言标准库中没有提供 float 类型的最小值常量。其他部分的逻辑与 Python 版本一致。
阅读全文