请编写满足以下要求的C语言程序,要求:在一个班级中,给定一组学生的身高数据,找出其中第二高的身高。请注意,您需要找的第二高的身高是按升序排序后的第二高的身高,而不是第二个不同的身高。输入要求:给定一个整数数组表示学生的身高(单位:厘米),输出要求:班级中第二高的身高。
时间: 2024-11-18 13:27:12 浏览: 22
在C语言中,我们可以编写一个简单的程序来解决这个问题。首先,我们需要接收学生身高的输入,然后对这些身高进行排序,找到第二高的值。以下是一个简化的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 函数声明
int findSecondHighest(int arr[], int n);
int main() {
int numStudents;
// 输入学生人数
printf("请输入班级学生人数: ");
scanf("%d", &numStudents);
// 学生身高数组
int heights[numStudents];
// 接收每个学生的身高输入
for (int i = 0; i < numStudents; i++) {
printf("请输入第 %d 位同学的身高: ", i + 1);
scanf("%d", &heights[i]);
}
// 找到第二高的身高
int secondHighest = findSecondHighest(heights, numStudents);
if (secondHighest != -1) {
printf("班级中第二高的身高是: %d 厘米\n", secondHighest);
} else {
printf("输入的数据中没有第二高的身高。\n");
}
return 0;
}
// 辅助函数,查找并返回第二高的值,如果没有则返回-1
int findSecondHighest(int arr[], int n) {
int highest = arr[0], secondHighest = arr[0];
// 遍历数组
for (int i = 1; i < n; i++) {
if (arr[i] > highest) {
secondHighest = highest;
highest = arr[i];
} else if (arr[i] > secondHighest && arr[i] != highest) {
secondHighest = arr[i];
}
}
// 如果最高值是唯一的,那么返回-1
if (secondHighest == highest)
return -1;
return secondHighest;
}
```
在这个程序中,我们首先获取学生人数和他们的身高,然后通过`findSecondHighest`函数寻找第二高的身高。如果所有身高都相等,则函数会返回-1。
阅读全文