题目
设存储在D盘根目录下的文本文件score.dat中记录着学生的姓名和成绩,每一行表示一个学生的信息,包括学生姓名(姓名中不存在空格等特殊符号)和成绩,它们之间用制表符(\t)分隔,例如:
zhangsan 84.5
lisi 78
wangwu 65.5
maliu 90
请针对该文件写一个程序,该程序的功能是计算所有学生的平均成绩,并输出其中成绩
最高的3个学生的信息(姓名和成绩);若学生总人数不足3人,则输出全部学生的信息。
抛砖引玉
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct student_type {
char name[10];
char scoreStr[10];
float score;
} STU;
int main( int argc, char *argv[] )
{
int i=0,maxScoreList[3]={0,0,0};//用于记录前三高分
int maxScoreIndexList[3]={-1,-1,-1};//用于记录高分的索引
FILE *fp;
STU stud[10];
float totalScore=0;
fp = fopen("score.dat","r");
char ch[255],name[10],*p,*p_end;
while(fgets(ch, 255, (FILE*)fp)!=NULL){
p = strchr(ch,'\t'); //获取制表符的位置
p_end = strchr(ch,'\n');
for(int k=0;k<p-ch;k++){
stud[i].name[k] = ch[k];
}

该程序从D盘根目录的score.dat文件中读取学生姓名和成绩,计算平均成绩,并输出最高分的前3名学生信息。若学生总数少于3人,则显示所有学生信息。

1728

被折叠的 条评论
为什么被折叠?



