c循环,输入A,B,C三位学生的考试分数,输出分数居中的学生的姓名(用A、B或C表示)以及他的分数。如果出现相同分数的情况,按A、B和C的次序输出前面一个学生的姓名。
时间: 2024-12-23 12:20:47 浏览: 18
在C语言中,可以使用嵌套循环结合条件判断来解决这个问题。首先,创建三个变量分别存储A、B、C的成绩,然后逐个读取学生姓名和成绩,同时记录当前最低分和最高分,最后找出中间的那个分数对应的学生姓名。以下是示例代码:
```c
#include <stdio.h>
#include <string.h> // 引入字符串处理函数
#define MAX_NAME_LENGTH 50
int main() {
char studentName[3][MAX_NAME_LENGTH];
int scores[3];
// 输入三名学生姓名和分数
for (int i = 0; i < 3; i++) {
printf("请输入学生 %c 的名字和分数:", 'A' + i);
fgets(studentName[i], sizeof(studentName[i]), stdin); // 读取姓名
scores[i] = -1; // 初始化为负一,后续检查分数
scanf("%d", &scores[i]);
getchar(); // 吃掉回车符
}
// 找出最高分和最低分
int highestScore = scores[0];
int lowestScore = scores[0];
int midIndex;
for (int i = 1; i < 3; i++) {
if (scores[i] > highestScore) {
highestScore = scores[i];
midIndex = i;
} else if (scores[i] < lowestScore) {
lowestScore = scores[i];
}
}
// 检查中间分数
for (int i = 0; i < 3; i++) {
if (scores[i] == highestScore && i != midIndex) {
// 当前分数与最高分相等且不是中间那个,输出前一个
printf("分数居中的学生是:%s,分数为:%d\n", studentName[midIndex], highestScore);
break;
} else if (scores[i] == lowestScore && i != midIndex) {
// 当前分数与最低分相等且不是中间那个,输出后一个
printf("分数居中的学生是:%s,分数为:%d\n", studentName[i], lowestScore);
break;
} else if (scores[i] == highestScore && i == midIndex) {
// 中间分数相同,按顺序输出A、B、C
printf("分数居中的学生是:%s,分数为:%d\n", studentName[i], highestScore);
break;
}
}
return 0;
}
```
阅读全文