请应用结构体类型编写程序,输入 10 位学生的姓名、学号、《C 语言程序设计》期中及期末考试成绩,计算其平均成绩,并按照平均成绩从高分到低分进行降序排列并输出成绩表。
时间: 2024-04-09 20:28:02 浏览: 88
好的,下面是使用结构体类型编写的程序,实现输入 10 位学生的信息并计算平均成绩,并按照平均成绩从高分到低分进行降序排列输出成绩表的功能:
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
struct Student {
char name[20];
char studentID[20];
float midtermScore;
float finalScore;
float averageScore;
};
// 函数声明
void sortStudents(struct Student students[], int n);
void printScoreTable(struct Student students[], int n);
int main() {
int i, n = 10;
struct Student students[n];
// 输入学生信息
for (i = 0; i < n; i++) {
printf("请输入第%d位学生的姓名:", i + 1);
scanf("%s", students[i].name);
printf("请输入第%d位学生的学号:", i + 1);
scanf("%s", students[i].studentID);
printf("请输入第%d位学生《C语言程序设计》期中考试成绩:", i + 1);
scanf("%f", &students[i].midtermScore);
printf("请输入第%d位学生《C语言程序设计》期末考试成绩:", i + 1);
scanf("%f", &students[i].finalScore);
// 计算平均成绩
students[i].averageScore = (students[i].midtermScore + students[i].finalScore) / 2;
}
// 按平均成绩降序排列学生信息
sortStudents(students, n);
// 输出成绩表
printScoreTable(students, n);
return 0;
}
// 按平均成绩降序排列学生信息
void sortStudents(struct Student students[], int n) {
int i, j;
struct Student temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (students[j].averageScore < students[j + 1].averageScore) {
temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
// 输出成绩表
void printScoreTable(struct Student students[], int n) {
int i;
printf("\n成绩表如下:\n");
printf("-------------------------------------------\n");
printf("姓名\t\t学号\t\t平均成绩\n");
printf("-------------------------------------------\n");
for (i = 0; i < n; i++) {
printf("%-20s%-20s%.2f\n", students[i].name, students[i].studentID, students[i].averageScore);
}
printf("-------------------------------------------\n");
}
```
这段代码会依次输入每位学生的姓名、学号、期中和期末考试成绩,并计算其平均成绩。然后,根据平均成绩从高到低进行降序排列,并输出成绩表。注意,成绩表按照姓名、学号和平均成绩的格式进行输出。
希望对你有帮助!如果有任何疑问,请随时提出。
阅读全文