C语言有 N 个学生,每个学生的信息包括:学号、姓名和3门成绩,要求编程从键盘上输入这 N 个学生的信息,计算出每个学生3门课的平均成绩,将原有数据和计算出的平均成绩存入文件 stu 中,然后再从文件中取出来,显示在屏幕上
时间: 2025-01-29 11:16:35 浏览: 23
在C语言中,你可以通过以下几个步骤完成这个任务:
- 首先,你需要定义一个结构体
Student
,用于存储学生的学号、姓名和三门成绩。
typedef struct {
int id;
char name[50];
float score1, score2, score3;
} Student;
- 然后创建一个函数
input_students()
来读取用户输入并创建学生数组。
void input_students(Student students[], int n) {
for (int i = 0; i < n; ++i) {
printf("请输入学生 %d 的信息:\n", i + 1);
scanf("%d%s%f%f%f", &students[i].id, students[i].name, &students[i].score1, &students[i].score2, &students[i].score3);
}
}
- 创建另一个函数
calculate_average()
来计算学生的平均成绩,并更新结构体中的值。
void calculate_average(Student students[], int n) {
for (int i = 0; i < n; ++i) {
float total = students[i].score1 + students[i].score2 + students[i].score3;
students[i].average_score = total / 3.0;
}
}
- 将数据保存到文件
stu.txt
中,可以使用fopen
和fprintf
。
void save_to_file(Student students[], int n) {
FILE* file = fopen("stu.txt", "w");
if (file == NULL) {
printf("Error opening file.\n");
return;
}
for (int i = 0; i < n; ++i) {
fprintf(file, "%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",
students[i].id, students[i].name, students[i].score1, students[i].score2, students[i].score3, students[i].average_score);
}
fclose(file);
}
// 同理,创建一个函数来从文件读取数据
void read_from_file(Student students[], int n) {
FILE* file = fopen("stu.txt", "r");
if (file == NULL) {
printf("Error opening file.\n");
return;
}
// 读取文件内容并显示在屏幕上
for (int i = 0; i < n; ++i) {
fscanf(file, "%d\t%s\t%f\t%f\t%f\t%f", &students[i].id, students[i].name, &students[i].score1, &students[i].score2, &students[i].score3, &students[i].average_score);
printf("%d - %s: 平均成绩 %.2f\n", students[i].id, students[i].name, students[i].average_score);
}
fclose(file);
}
最后,在主函数中调用这些函数。
int main() {
const int n = ...; // 输入的学生总数
Student students[n];
// 输入学生信息
input_students(students, n);
// 计算平均成绩并保存到文件
calculate_average(students, n);
save_to_file(students, n);
// 读取文件并显示结果
read_from_file(students, n);
return 0;
}
相关推荐


















