.RAZVA EHT 2019-12-26 00:26 采纳率: 0%
浏览 235

学生一枚,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条回答 默认 最新

  • tangxiaoren 2019-12-26 10:48
    关注

    #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;
    

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

    评论

报告相同问题?

悬赏问题

  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示