有10个学生,每个学生的数据包括学号,姓名,3门课的成绩。从键盘输入10个学生数据,要求打印出3门课总平均成绩,并计算出每人的平均成绩,将原有数据和计算出的平时分数存放在磁盘文件stu.txt中使用C语言设计
时间: 2023-12-15 18:15:36 浏览: 34
好的,这是一个简单的学生成绩管理系统,我们可以使用结构体来存储学生信息和成绩数据。以下是代码示例:
```c
#include <stdio.h>
#define MAX_STUDENT 10
#define MAX_NAME 20
struct Student {
int id;
char name[MAX_NAME];
int score[3];
float average;
};
int main() {
struct Student students[MAX_STUDENT];
float totalScore[3] = {0};
// 输入学生信息和成绩数据
for (int i = 0; i < MAX_STUDENT; i++) {
printf("请输入第%d个学生的学号:", i + 1);
scanf("%d", &students[i].id);
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", students[i].name);
printf("请输入第%d个学生的语文成绩:", i + 1);
scanf("%d", &students[i].score[0]);
printf("请输入第%d个学生的数学成绩:", i + 1);
scanf("%d", &students[i].score[1]);
printf("请输入第%d个学生的英语成绩:", i + 1);
scanf("%d", &students[i].score[2]);
// 计算每个学生的平均成绩
float sum = 0;
for (int j = 0; j < 3; j++) {
sum += students[i].score[j];
totalScore[j] += students[i].score[j];
}
students[i].average = sum / 3;
}
// 计算每门课的总平均成绩
for (int i = 0; i < 3; i++) {
totalScore[i] /= MAX_STUDENT;
}
// 打印每个学生的平均成绩和总平均成绩
FILE *fp = fopen("stu.txt", "w");
if (fp == NULL) {
printf("打开文件失败\n");
return 1;
}
fprintf(fp, "学号\t姓名\t语文\t数学\t英语\t平均分\n");
for (int i = 0; i < MAX_STUDENT; i++) {
fprintf(fp, "%d\t%s\t%d\t%d\t%d\t%.2f\n", students[i].id, students[i].name, students[i].score[0], students[i].score[1], students[i].score[2], students[i].average);
}
fprintf(fp, "总平均分\t\t%.2f\t%.2f\t%.2f\n", totalScore[0], totalScore[1], totalScore[2]);
fclose(fp);
return 0;
}
```
代码中使用了一个结构体`Student`来存储每个学生的信息,包括学号、姓名、3门课的成绩和平均成绩。使用一个循环来输入10个学生的信息,计算每个学生的平均成绩和每门课的总平均成绩。最后将所有数据存储在一个文件`stu.txt`中。
阅读全文