C语言 有10个学生,每个学生的数据包括学号姓名3门课的成绩,从键盘输入10个学生的数据,要求打印出3门课的总、平均成绩,并计算出每人的平均成绩,将原有数据和计算出的平均成绩存放在磁盘文件stu.txt
时间: 2023-12-14 12:40:15 浏览: 67
下面是C语言的实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define NUM_OF_STUDENTS 10
#define NUM_OF_COURSES 3
struct student {
int id;
char name[20];
int scores[NUM_OF_COURSES];
float avg_score;
};
int main()
{
struct student students[NUM_OF_STUDENTS];
int i, j;
// 从键盘输入10个学生的数据
for (i = 0; i < NUM_OF_STUDENTS; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
printf("学号:");
scanf("%d", &students[i].id);
printf("姓名:");
scanf("%s", students[i].name);
for (j = 0; j < NUM_OF_COURSES; j++) {
printf("第%d门课的成绩:", j+1);
scanf("%d", &students[i].scores[j]);
}
}
// 计算每门课程的总成绩和平均成绩
int total_scores[NUM_OF_COURSES] = {0};
float avg_scores[NUM_OF_COURSES] = {0};
for (i = 0; i < NUM_OF_STUDENTS; i++) {
for (j = 0; j < NUM_OF_COURSES; j++) {
total_scores[j] += students[i].scores[j];
}
students[i].avg_score = (float)(students[i].scores[0] + students[i].scores[1] + students[i].scores[2]) / NUM_OF_COURSES;
}
for (j = 0; j < NUM_OF_COURSES; j++) {
avg_scores[j] = (float)total_scores[j] / NUM_OF_STUDENTS;
}
// 将数据写入文件stu.txt
FILE *fp = fopen("stu.txt", "w");
if (fp == NULL) {
printf("无法打开文件:stu.txt\n");
exit(1);
}
fprintf(fp, "学号\t姓名\t第一门课成绩\t第二门课成绩\t第三门课成绩\t平均成绩\n");
for (i = 0; i < NUM_OF_STUDENTS; i++) {
fprintf(fp, "%d\t%s\t%d\t%d\t%d\t%.2f\n", students[i].id, students[i].name, students[i].scores[0], students[i].scores[1], students[i].scores[2], students[i].avg_score);
}
fprintf(fp, "总成绩\t\t%d\t%d\t%d\n", total_scores[0], total_scores[1], total_scores[2]);
fprintf(fp, "平均成绩\t%.2f\t%.2f\t%.2f\n", avg_scores[0], avg_scores[1], avg_scores[2]);
fclose(fp);
printf("计算结果已存入文件:stu.txt\n");
return 0;
}
```
程序先定义了一个 `struct student` 结构体,用来存储每个学生的数据。然后从键盘输入每个学生的数据,并计算出每门课程的总成绩和平均成绩,以及每个学生的平均成绩。最后将所有数据写入文件 `stu.txt` 中。
阅读全文