有n个学生,每人有m门课程的分数,要求: (1)找出总分最高的学生号; (2)找出至少有一门课分数不及格的学生号并输出其所有分数:(3)统计每门分数都在85分以上的学生人数。
时间: 2024-03-14 13:46:51 浏览: 48
有n个学生,每人有m门课程的分数,要求: (1)找出总分最高的学生号; (2)找出至少有一门课分数不及格的学生号并输出其所有分数; (3)统计每门分数都在85分
好的,以下是 C 语言的代码示例:
```c
#include <stdio.h>
#define MAX_STUDENT_NUM 100
#define MAX_COURSE_NUM 10
int main() {
int student_num, course_num;
int scores[MAX_STUDENT_NUM][MAX_COURSE_NUM];
int max_total_score = 0, max_total_score_student = 0;
int fail_student[MAX_STUDENT_NUM], fail_student_num = 0;
int excellent_course[MAX_COURSE_NUM] = {0};
printf("请输入学生人数和课程数:");
scanf("%d %d", &student_num, &course_num);
// 输入每个学生的成绩
for (int i = 0; i < student_num; i++) {
printf("请输入第%d个学生的%d门课的成绩:", i+1, course_num);
for (int j = 0; j < course_num; j++) {
scanf("%d", &scores[i][j]);
}
}
// 找出总分最高的学生号
for (int i = 0; i < student_num; i++) {
int total_score = 0;
for (int j = 0; j < course_num; j++) {
total_score += scores[i][j];
}
if (total_score > max_total_score) {
max_total_score = total_score;
max_total_score_student = i;
}
}
printf("总分最高的学生号是:%d\n", max_total_score_student+1);
// 找出至少有一门课分数不及格的学生号并输出其所有分数
for (int i = 0; i < student_num; i++) {
int has_fail_score = 0;
for (int j = 0; j < course_num; j++) {
if (scores[i][j] < 60) {
has_fail_score = 1;
break;
}
}
if (has_fail_score) {
printf("至少有一门课分数不及格的学生号是:%d,分数是:", i+1);
for (int j = 0; j < course_num; j++) {
printf("%d ", scores[i][j]);
}
printf("\n");
}
}
// 统计每门分数都在85分以上的学生人数
for (int i = 0; i < course_num; i++) {
int excellent_num = 0;
for (int j = 0; j < student_num; j++) {
if (scores[j][i] >= 85) {
excellent_num++;
}
}
excellent_course[i] = excellent_num;
}
printf("每门分数都在85分以上的学生人数分别为:");
for (int i = 0; i < course_num; i++) {
printf("%d ", excellent_course[i]);
}
printf("\n");
return 0;
}
```
这段代码中,我们使用了一个二维数组 `scores` 来保存每个学生的成绩。其中,第一维表示学生号,第二维表示课程号。通过遍历数组,我们可以解决上述三个问题。
需要注意的是,这里的学生号和课程号都是从 1 开始计数的,而不是从 0 开始计数的,因此在输出时需要将学生号加 1。
阅读全文