有五个学生,每个学生有三门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课的成绩),计算出平均成绩将原有的数据和计算出的平均分数存放在磁盘文件“stud”中的C语言代码
时间: 2024-11-09 16:20:14 浏览: 53
为了编写一个简单的C语言程序,用于处理上述任务,你可以创建一个结构体来存储学生的相关信息,然后通过循环读取输入并计算平均成绩。以下是基本的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义一个结构体来存储学生信息
typedef struct {
int student_id;
char name[50];
float score1, score2, score3;
} Student;
void input_data(Student students[], int num_students) {
for (int i = 0; i < num_students; ++i) {
printf("请输入学生 %d 的信息:\n", i + 1);
scanf("%d", &students[i].student_id);
fgets(students[i].name, sizeof(students[i].name), stdin); // 注意去除换行符
scanf("%f", &students[i].score1);
scanf("%f", &students[i].score2);
scanf("%f", &students[i].score3);
}
}
float calculate_average(const Student* student) {
return (student->score1 + student->score2 + student->score3) / 3.0;
}
void save_to_file(Student students[], int num_students, const char* filename) {
FILE* file = fopen(filename, "w");
if (file == NULL) {
perror("无法打开文件");
return;
}
fprintf(file, "%d\t%s\t%.2f\t%.2f\t%.2f\n", students[0].student_id, students[0].name,
calculate_average(&students[0]), calculate_average(&students[1]),
calculate_average(&students[2])); // 仅示例三个学生
// 对于其他学生...
// 使用循环遍历并追加到文件
fclose(file);
}
int main() {
int num_students;
printf("请输入学生人数: ");
scanf("%d", &num_students);
Student students[num_students];
input_data(students, num_students);
save_to_file(students, num_students, "stud.txt");
printf("数据已保存到文件 'stud.txt'\n");
return 0;
}
```
这个代码只是一个基础示例,实际应用中需要对用户输入进行错误检查,并在文件操作失败时提供合适的错误处理。同时,如果你需要为所有学生计算平均分并保存到文件,你需要在`save_to_file`函数内部添加一个循环。
阅读全文