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.评分统计-读文件
设有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
#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;
}
你试试这个,但是感觉自己查查相关函数的用法什么的然后再编写程序收获会更多