某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有超过30人参加考试。考试后需要计算每个学生的总分和平均分,按总分成绩由高到低排出成绩的名次表格,任意输入一个学号,还能查找该学生在班级中的排名和考试分数。通过输入学生的人数和每个学生的人数信息,进行计算。用C语言
时间: 2024-01-02 20:03:49 浏览: 276
来实现这个功能,你需要先定义一个结构体来存储每个学生的信息,如下所示:
```c
typedef struct {
char name[20]; // 学生姓名
int id; // 学生学号
int score[3]; // 学生的三门科目成绩
int total; // 学生的总分
float average; // 学生的平均分
int rank; // 学生的排名
} Student;
```
然后,你需要在程序中进行以下步骤:
1. 输入学生数量和每个学生的信息,并计算每个学生的总分和平均分。
2. 根据总分从高到低对学生进行排序,并输出名次表格。
3. 输入一个学生的学号,查找该学生在班级中的排名和考试分数。
下面是一个简单的实现:
```c
#include <stdio.h>
#include <string.h>
typedef struct {
char name[20]; // 学生姓名
int id; // 学生学号
int score[3]; // 学生的三门科目成绩
int total; // 学生的总分
float average; // 学生的平均分
int rank; // 学生的排名
} Student;
int main() {
int n; // 学生数量
printf("请输入学生数量:");
scanf("%d", &n);
Student students[n];
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的姓名、学号、数学成绩、英语成绩、物理成绩(用空格分隔):", i + 1);
scanf("%s %d %d %d %d", students[i].name, &students[i].id, &students[i].score[0], &students[i].score[1], &students[i].score[2]);
students[i].total = students[i].score[0] + students[i].score[1] + students[i].score[2];
students[i].average = students[i].total / 3.0;
}
// 按总分从高到低排序
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (students[i].total < students[j].total) {
Student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
// 输出名次表格
printf("\n名次\t姓名\t学号\t数学\t英语\t物理\t总分\t平均分\n");
for (int i = 0; i < n; i++) {
printf("%d\t%s\t%d\t%d\t%d\t%d\t%d\t%.1f\n", i + 1, students[i].name, students[i].id, students[i].score[0], students[i].score[1], students[i].score[2], students[i].total, students[i].average);
students[i].rank = i + 1;
}
// 查找学生排名和考试分数
int id;
printf("\n请输入要查询的学生学号:");
scanf("%d", &id);
for (int i = 0; i < n; i++) {
if (students[i].id == id) {
printf("\n该学生排名为第%d名,考试分数为:%d(数学:%d,英语:%d,物理:%d)\n", students[i].rank, students[i].total, students[i].score[0], students[i].score[1], students[i].score[2]);
break;
}
if (i == n - 1) {
printf("\n未找到该学生!\n");
}
}
return 0;
}
```
需要注意的是,以上代码中假设输入的学生数量不超过数组的长度,实际应用中需要根据实际情况进行修改。
阅读全文