用C语言写程序有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均成绩存放在磁盘文件stud中。在线文件stud写入数据后,应检查验证stud文件中的内容是否正确?
时间: 2024-01-02 13:05:15 浏览: 136
有5个学生,么个学生有三门课成绩,从键盘键入以上数据,存放在文件中
5星 · 资源好评率100%
这是一个关于C语言编程的问题,我可以为您提供一些思路和代码示例。
首先,您需要定义一个结构体来存储每个学生的信息,包括学号、姓名、3门课成绩和平均成绩:
```c
struct student {
int id;
char name[20];
float score[3];
float avg_score;
};
```
然后,您可以使用循环来从键盘读入每个学生的信息,并计算平均成绩:
```c
struct student stu[5];
for (int i = 0; i < 5; i++) {
printf("请输入第%d个学生的学号、姓名和3门课成绩:\n", i+1);
scanf("%d %s %f %f %f", &stu[i].id, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
stu[i].avg_score = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3.0;
}
```
接下来,您需要打开一个文件,并将每个学生的信息和平均成绩写入该文件中:
```c
FILE *fp;
fp = fopen("stud", "w");
if (fp == NULL) {
printf("无法打开文件\n");
exit(1);
}
for (int i = 0; i < 5; i++) {
fprintf(fp, "%d %s %.2f %.2f %.2f %.2f\n", stu[i].id, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].avg_score);
}
fclose(fp);
```
最后,您可以编写一个函数来验证文件中的数据是否正确:
```c
void check_file() {
FILE *fp;
fp = fopen("stud", "r");
if (fp == NULL) {
printf("无法打开文件\n");
exit(1);
}
struct student stu_check[5];
for (int i = 0; i < 5; i++) {
fscanf(fp, "%d %s %f %f %f %f", &stu_check[i].id, stu_check[i].name, &stu_check[i].score[0], &stu_check[i].score[1], &stu_check[i].score[2], &stu_check[i].avg_score);
if (stu_check[i].avg_score != (stu_check[i].score[0] + stu_check[i].score[1] + stu_check[i].score[2]) / 3.0) {
printf("文件内容错误\n");
exit(1);
}
}
fclose(fp);
printf("文件内容正确\n");
}
```
您可以在程序的主函数中调用这个函数来验证文件的内容:
```c
int main() {
// 读入学生信息并写入文件
// ...
// 验证文件内容是否正确
check_file();
return 0;
}
```
希望这些代码能帮助您解决问题。如果您有任何疑问,请随时问我。
阅读全文