题目描述
现有 100 名学生的姓名、学号、英语、数学、语文成绩,存储在一个二进制文件 student.dic
中(姓名用 char[20]
,学号和各科成绩用 int
存储),现要求将指定行数的学生信息输出,每条信息占一行。
前 5 行学生信息为:
akdh 13773 84 83 66
fjka 30257 15 14 88
sfhklas 61281 87 8 31
hfu 38635 55 50 60
iwehfk 92803 54 6 77
输入
要输出行号的整数序列,以 0作为结束标志。
输出
输出学生信息,每个学生占一行。
输入输出样例
样例输入 #1
1 3 5 0
样例输出 #1
akdh 13773 84 83 66
sfhklas 61281 87 8 31
iwehfk 92803 54 6 77
参考解答:
#include<stdio.h>
typedef struct
{
char name[20];
int num;
int english;
int math;
int chinese;
}Stu;
int main()
{
FILE* fp;
Stu s[100];
int i = 0, n;
fp = fopen("student.dic", "rb");
while (!feof(fp))
{
fread((void*)&s[i], sizeof(Stu), 1, fp);
++i;
}
fclose(fp);
while (scanf("%d", &n) && n)
{
printf("%s %d %d %d %d\n", s[n-1].name, s[n-1].num, s[n-1].english, s[n-1].math, s[n-1].chinese);
}
return 0;
}