用c语言编写一个程序,要求输入一个班10个学生的学号姓名和每个学生考试四门课程(程序设计、数据库、网络基础、英语)的成绩,保存到文件中,再输出学生信息的时候要计算输出每个学生的总分和平均分,
时间: 2024-03-09 11:49:06 浏览: 73
好的,这是一个学生信息管理系统的需求,可以使用 C 语言来实现。具体实现步骤如下:
1. 定义一个结构体类型,用于存储学生的信息,包括学号、姓名、四门课程的成绩、总分和平均分。例如:
```c
struct student {
int id; // 学号
char name[20]; // 姓名
float score_design; // 程序设计成绩
float score_db; // 数据库成绩
float score_network; // 网络基础成绩
float score_english; // 英语成绩
float total_score; // 总分
float avg_score; // 平均分
};
```
2. 定义一个数组,用于存储 10 个学生的信息。例如:
```c
struct student stu[10];
```
3. 编写一个函数,用于输入学生的信息并保存到文件中。例如:
```c
void input_student_info() {
FILE *fp;
fp = fopen("student.txt", "w"); // 打开文件,如果不存在则创建
for (int i = 0; i < 10; i++) {
printf("请输入第%d个学生的学号、姓名和四门课程的成绩:\n", i+1);
scanf("%d%s%f%f%f%f", &stu[i].id, stu[i].name, &stu[i].score_design, &stu[i].score_db, &stu[i].score_network, &stu[i].score_english);
stu[i].total_score = stu[i].score_design + stu[i].score_db + stu[i].score_network + stu[i].score_english;
stu[i].avg_score = stu[i].total_score / 4;
fprintf(fp, "%d %s %.2f %.2f %.2f %.2f %.2f %.2f\n", stu[i].id, stu[i].name, stu[i].score_design, stu[i].score_db, stu[i].score_network, stu[i].score_english, stu[i].total_score, stu[i].avg_score);
}
fclose(fp); // 关闭文件
}
```
4. 编写一个函数,用于从文件中读取学生的信息并输出。例如:
```c
void output_student_info() {
FILE *fp;
fp = fopen("student.txt", "r"); // 打开文件
printf("学号\t姓名\t程序设计\t数据库\t网络基础\t英语\t总分\t平均分\n");
while (fscanf(fp, "%d%s%f%f%f%f%f%f", &stu[i].id, stu[i].name, &stu[i].score_design, &stu[i].score_db, &stu[i].score_network, &stu[i].score_english, &stu[i].total_score, &stu[i].avg_score) != EOF) {
printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", stu[i].id, stu[i].name, stu[i].score_design, stu[i].score_db, stu[i].score_network, stu[i].score_english, stu[i].total_score, stu[i].avg_score);
}
fclose(fp); // 关闭文件
}
```
5. 在主函数中调用输入学生信息和输出学生信息的函数即可。例如:
```c
int main() {
input_student_info(); // 输入学生信息并保存到文件
output_student_info(); // 从文件中读取学生信息并输出
return 0;
}
```
这样就实现了一个简单的学生信息管理系统,可以输入学生信息并保存到文件,也可以从文件中读取学生信息并输出。
阅读全文