学生一枚,C语言 读文件 这道题咋做呀?

1.评分统计-读文件

设有8个评委评分(这个文件我不会上传,就写在了下面 pf.txt),统计时,去掉1个最高分和1个最低分,其余6个分数的平均分即是最后得分,最后输出这个最后得分(以5位小数形式)。
注意:要求数组的赋值来源于从pf.txt文件读入。
提示:本题读数据的函数建议使用fscanf函数
pf.txt
9.2
9.5
9.8
7.4
8.5
9.1
9.3
8.8

1个回答

#define JUDGES_NUM 8
float averageGrade(float sortdata[JUDGES_NUM])
{
float grade_min = sortdata[0];
float grade_max = sortdata[0];
float sumGarde = 0;
// get the max&min
for (int i = 1; i < JUDGES_NUM; i++)
{
if (sortdata[i]> grade_max)
{
grade_max = sortdata[i];
}
if (sortdata[i]<grade_min)
{
grade_min = sortdata[i];
}
}
//aversge
printf_s("%f,%f", grade_min, grade_max);
for (int i = 0; i < JUDGES_NUM; i++)
{
//printf_s("%f", sortdata[i]);
if (sortdata[i] != grade_max)
{
if (sortdata[i] != grade_min)
{
sumGarde = sumGarde + sortdata[i];
}
}
}
return(sumGarde / (JUDGES_NUM - 2));
}
int main(int argc, char *argv[])
{
FILE *fp = NULL;
float grade[JUDGES_NUM];
float avgGrade = 0;
float per_grade = 0;
int index = 0;

fopen_s(&fp, "pf.txt", "r");
if (fp==NULL)
{
    printf("error: cann't open the file");
    return -1;
}
while (!feof(fp))
{
    fscanf_s(fp, "%f", &per_grade);
    grade[index] = per_grade;
    index++;
}
fclose(fp);
avgGrade = averageGrade(grade);
printf("%.5f", avgGrade);   
return 0;

}
你试试这个,但是感觉自己查查相关函数的用法什么的然后再编写程序收获会更多

DJKASBG
.RAZVA EHT 谢谢\(·w·)/
大约 2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问