用C语言实现已知一个数据文件f.txt中保存了5个学生的计算机等级考试成绩,包括学号、姓名和分数,文件内容如下,请将文件的内容读出并显示到屏幕中。然后将成绩最低的和成绩最高的学生信息输出到文件maxmin.txt中 301101 张文 91 301102 陈慧 85 301103 王卫东 76 301104 郑伟 69 301105 郭温涛 55
时间: 2024-02-22 20:55:42 浏览: 317
好的,这是一道关于文件操作的C语言编程题。我来给你讲解一下思路。
首先,我们需要打开文件f.txt,读取其中的内容。由于每个学生的信息都是由学号、姓名和成绩组成的,因此我们可以定义一个结构体类型来存储每个学生的信息。结构体类型的定义如下:
```c
typedef struct {
char id[10]; // 学号
char name[20]; // 姓名
int score; // 分数
} Student;
```
接下来,我们可以定义一个数组来存储读取到的学生信息。由于题目中已经说明了学生的个数是5个,因此我们可以定义一个长度为5的数组。代码如下:
```c
Student students[5];
```
接着,我们可以使用fopen函数打开文件f.txt,并使用fscanf函数读取文件中的内容,将每个学生的信息存储到数组中。代码如下:
```c
FILE *fp = fopen("f.txt", "r");
for (int i = 0; i < 5; i++) {
fscanf(fp, "%s %s %d", students[i].id, students[i].name, &students[i].score);
}
fclose(fp);
```
现在,我们已经成功地将文件f.txt中的内容读取到了数组中。接下来,我们可以遍历数组,找到成绩最高的和成绩最低的学生,并将他们的信息输出到文件maxmin.txt中。代码如下:
```c
int max_index = 0, min_index = 0;
for (int i = 1; i < 5; i++) {
if (students[i].score > students[max_index].score) {
max_index = i;
}
if (students[i].score < students[min_index].score) {
min_index = i;
}
}
fp = fopen("maxmin.txt", "w");
fprintf(fp, "成绩最高的学生:\n学号:%s\n姓名:%s\n分数:%d\n\n", students[max_index].id, students[max_index].name, students[max_index].score);
fprintf(fp, "成绩最低的学生:\n学号:%s\n姓名:%s\n分数:%d\n", students[min_index].id, students[min_index].name, students[min_index].score);
fclose(fp);
```
最后,我们可以使用printf函数将读取到的学生信息显示到屏幕中。完整的代码如下:
```c
#include <stdio.h>
typedef struct {
char id[10]; // 学号
char name[20]; // 姓名
int score; // 分数
} Student;
int main() {
Student students[5];
FILE *fp = fopen("f.txt", "r");
for (int i = 0; i < 5; i++) {
fscanf(fp, "%s %s %d", students[i].id, students[i].name, &students[i].score);
}
fclose(fp);
printf("学号\t姓名\t分数\n");
for (int i = 0; i < 5; i++) {
printf("%s\t%s\t%d\n", students[i].id, students[i].name, students[i].score);
}
int max_index = 0, min_index = 0;
for (int i = 1; i < 5; i++) {
if (students[i].score > students[max_index].score) {
max_index = i;
}
if (students[i].score < students[min_index].score) {
min_index = i;
}
}
fp = fopen("maxmin.txt", "w");
fprintf(fp, "成绩最高的学生:\n学号:%s\n姓名:%s\n分数:%d\n\n", students[max_index].id, students[max_index].name, students[max_index].score);
fprintf(fp, "成绩最低的学生:\n学号:%s\n姓名:%s\n分数:%d\n", students[min_index].id, students[min_index].name, students[min_index].score);
fclose(fp);
return 0;
}
```
希望我的解答能够帮到你。
阅读全文