用数组实现学生成绩管理:要求有输入、输出、计算、排序等 C语言代码
时间: 2023-06-27 10:01:56 浏览: 88
下面是用数组实现学生成绩管理的 C 语言代码:
```c
#include <stdio.h>
#define MAX_STUDENTS 100 // 最大学生数
struct student {
int id; // 学号
char name[20]; // 姓名
int score; // 分数
};
int main() {
struct student students[MAX_STUDENTS]; // 学生数组
int n; // 学生数
int i, j; // 循环变量
struct student temp; // 临时变量,用于交换
int sum = 0; // 总成绩
double avg; // 平均成绩
printf("请输入学生数(不超过 %d):", MAX_STUDENTS);
scanf("%d", &n);
// 输入学生信息
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的学号、姓名和分数:", i + 1);
scanf("%d%s%d", &students[i].id, students[i].name, &students[i].score);
sum += students[i].score; // 累加总成绩
}
// 计算平均成绩
avg = (double)sum / n;
// 输出学生信息
printf("\n学生信息如下:\n");
printf("学号\t姓名\t分数\n");
for (i = 0; i < n; i++) {
printf("%d\t%s\t%d\n", students[i].id, students[i].name, students[i].score);
}
printf("总成绩:%d,平均成绩:%.2f\n", sum, avg);
// 按分数从高到低排序
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (students[i].score < students[j].score) {
temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
// 输出排序后的学生信息
printf("\n按分数从高到低排序后的学生信息如下:\n");
printf("学号\t姓名\t分数\n");
for (i = 0; i < n; i++) {
printf("%d\t%s\t%d\n", students[i].id, students[i].name, students[i].score);
}
return 0;
}
```
示例运行结果:
```
请输入学生数(不超过 100):3
请输入第1个学生的学号、姓名和分数:1001 张三 85
请输入第2个学生的学号、姓名和分数:1002 李四 92
请输入第3个学生的学号、姓名和分数:1003 王五 78
学生信息如下:
学号 姓名 分数
1001 张三 85
1002 李四 92
1003 王五 78
总成绩:255,平均成绩:85.00
按分数从高到低排序后的学生信息如下:
学号 姓名 分数
1002 李四 92
1001 张三 85
1003 王五 78
```
阅读全文