.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 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)