有5个学生,每个学生的数据包括:学号、姓名、三门课成绩,编写程序要求从键盘输入学生们的数据,并输出成绩报表(包括每人的学号,姓名、三门成绩及平均分数),还要求输出平均分在前3名的学生姓名及平均成绩的c语言代码
时间: 2023-12-15 08:50:23 浏览: 105
数据结构-学生数据结构成绩管理系统.doc
以下是基于C语言的代码实现:
```c
#include <stdio.h>
#include <string.h>
struct student {
int id;
char name[20];
float score1;
float score2;
float score3;
float average;
};
int main() {
struct student stu[5];
float sum = 0;
int i, j, k;
// 输入每个学生的数据
for (i = 0; i < 5; i++) {
printf("请输入第%d个学生的学号:", i+1);
scanf("%d", &stu[i].id);
printf("请输入第%d个学生的姓名:", i+1);
scanf("%s", stu[i].name);
printf("请输入第%d个学生的三门成绩:\n", i+1);
scanf("%f%f%f", &stu[i].score1, &stu[i].score2, &stu[i].score3);
stu[i].average = (stu[i].score1 + stu[i].score2 + stu[i].score3) / 3;
sum += stu[i].average;
}
// 输出成绩报表
printf("\n学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分\n");
for (i = 0; i < 5; i++) {
printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", stu[i].id, stu[i].name, stu[i].score1, stu[i].score2, stu[i].score3, stu[i].average);
}
// 计算平均分前三名
float avg[5];
for (i = 0; i < 5; i++) {
avg[i] = stu[i].average;
}
for (i = 0; i < 3; i++) {
float max = avg[0];
k = 0;
for (j = 1; j < 5-i; j++) {
if (avg[j] > max) {
max = avg[j];
k = j;
}
}
if (k != 4-i) {
struct student temp = stu[4-i];
stu[4-i] = stu[k];
stu[k] = temp;
float t = avg[4-i];
avg[4-i] = avg[k];
avg[k] = t;
}
}
// 输出平均分前三名的学生姓名及平均成绩
printf("\n平均分前三名的学生姓名及平均成绩:\n");
for (i = 0; i < 3; i++) {
printf("%s\t%.2f\n", stu[i].name, stu[i].average);
}
printf("\n平均分总分为%.2f,平均分为%.2f\n", sum, sum/5);
return 0;
}
```
运行程序后,可以按照提示输入每个学生的数据,然后输出成绩报表和平均分前三名的学生姓名及平均成绩。
阅读全文