水煮千秋 2021-12-12 15:41 采纳率: 100%
浏览 12
已结题

请找出这段代码运行的时候为什么出现运行错误,并指正。


/*本题要求用结构体来存储三个学生的成绩,
每个学生有3门课的成绩(成绩为小数),
从键盘输入以上数据(包括姓名以及各课程成绩),
计算出平均成绩,然后按照平均分的降序排列输出。
*/
#include <stdio.h>
#include <stdlib.h>
#define N 3
#define T 30

struct student
{
    char name[T];
    double subject1;
    double subject2;
    double subject3;
}student[N];

int Max(struct student student[])//求最高成绩学生
{
    double max=student[0].subject1+student[0].subject2+student[0].subject3;
    for(int i=0;i<N;i++)
        max=max>student[i].subject1+student[i].subject2+student[i].subject3?max:student[i].subject1+student[i].subject2+student[i].subject3;
    for(int i=0;i<N;i++)
        if(max==student[i].subject1+student[i].subject2+student[i].subject3)
        return i;
}

int Min(struct student student[])//求最低成绩学生
{
    double min=student[0].subject1+student[0].subject2+student[0].subject3;
    for(int i=0;i<N;i++)
        min=min<student[i].subject1+student[i].subject2+student[i].subject3?min:student[i].subject1+student[i].subject2+student[i].subject3;
    for(int i=0;i<N;i++)
        if(min==student[i].subject1+student[i].subject2+student[i].subject3)
        return i;
}
int compare(struct student student[],int (*p)(struct student student[]))//通用函数
{
    int r=(*p)(student);
    return r;
}

int main()
{
    for(int i=0;i<N;i++)
        scanf("%s %lf %lf %lf",&student[i].name,
                               &student[i].subject1,
                               &student[i].subject2,
                               &student[i].subject3);

    int j=compare(student,Max);
    int j2=compare(student,Min);
    int j1;

    for(int i=0;i<N;i++)
        if(i!=j&&i!=j2)
        j1=i;

    double eva=(student[j].subject1+student[j].subject2+student[j].subject3)/3;
    printf("%s %.2lf\n",student[j],eva);

    double eva1=(student[j1].subject1+student[j1].subject2+student[j1].subject3)/3;
    printf("%s %.2lf\n",student[j1],eva1);

    double eva2=(student[j2].subject1+student[j2].subject2+student[j2].subject3)/3;
    printf("%s %.2lf\n",student[j2],eva2);
    return 0;
}

  • 写回答

1条回答 默认 最新

  • 水煮千秋 2021-12-12 20:06
    关注

    输出部分错误。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月20日
  • 已采纳回答 12月12日
  • 创建了问题 12月12日

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站