用C语言写1、文件“stu_info1.txt”包含学生的基本信息(姓名、学号、籍贯三项),现在需\r\n要从该文件中读出信息,并依次为每位学生输入三门课程成绩,计算平均成绩,再将学生\r\n完整信息(姓名、学号、籍贯
时间: 2023-11-28 21:49:24 浏览: 72
C语言专业课程设计学生籍贯信息记录簿设计.doc
和平均成绩)存入“stu_info2.txt”文件中。请问应该如何实现此功能?
ChitGPT: 首先,我们需要编写C语言程序来读取"stu_info1.txt"文件中的学生基本信息,并依次为每位学生输入三门课程成绩,并计算平均成绩。然后,将每个学生的完整信息(包括姓名、学号、籍贯和平均成绩)存入"stu_info2.txt"文件中。
以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENT_NUM 100
typedef struct {
char name[20];
char id[10];
char hometown[20];
double score[3];
double avg_score;
} student;
int main() {
FILE *fp1, *fp2;
char filename1[] = "stu_info1.txt";
char filename2[] = "stu_info2.txt";
student stu_list[MAX_STUDENT_NUM];
int stu_num = 0;
// 读取学生基本信息
fp1 = fopen(filename1, "r");
if (fp1 == NULL) {
printf("Error: Failed to open file %s!\n", filename1);
return 0;
}
while (!feof(fp1)) {
fscanf(fp1, "%s %s %s", stu_list[stu_num].name, stu_list[stu_num].id, stu_list[stu_num].hometown);
stu_num++;
}
fclose(fp1);
// 为每位学生输入三门课程成绩,并计算平均成绩
for (int i = 0; i < stu_num; i++) {
printf("Enter the scores of Student %d (%s):\n", i+1, stu_list[i].name);
for (int j = 0; j < 3; j++) {
scanf("%lf", &stu_list[i].score[j]);
stu_list[i].avg_score += stu_list[i].score[j];
}
stu_list[i].avg_score /= 3;
}
// 将每个学生的完整信息存入"stu_info2.txt"文件中
fp2 = fopen(filename2, "w");
if (fp2 == NULL) {
printf("Error: Failed to open file %s!\n", filename2);
return 0;
}
for (int i = 0; i < stu_num; i++) {
fprintf(fp2, "%s %s %s %.2lf\n", stu_list[i].name, stu_list[i].id, stu_list[i].hometown, stu_list[i].avg_score);
}
fclose(fp2);
printf("Complete!\n");
return 0;
}
```
以上是一个简单的C语言程序,可以实现读取"stu_info1.txt"文件中的学生基本信息,为每位学生输入三门课程成绩并计算平均成绩,将每个学生的完整信息存入"stu_info2.txt"文件中。需要注意的是,这里假设"stu_info1.txt"文件中每行只包含一位学生的基本信息。如果文件中包含多行信息,需要将读取方式做相应的修改。
阅读全文