weixin_46081926 2019-12-25 15:39 采纳率: 100%
浏览 155

为什么aver也要换位?

#include<stdio.h>
#include<string.h>
struct student
{   long int num;
    char name[8];
    double score[3];
};
struct arrayst
{
struct student stu;
double nums;
};

int main()
{
    void input(struct arrayst a[],int x);
    void output(struct arrayst arr[],int x);
    void scoresort(struct arrayst arr[],int x);
    arrayst a[100];
    int n;
    while(1)
    {
        printf("请输入一个在5到100之间的数:");
        scanf("%d",&n);
        if(n>=5 && n<=100)
            break;
    }
    printf("NUM    MAME   SCORE1   SORE2   SCORE3\n");
    input(a,n);//建立学生成绩表
    printf("Before sort:\n");
    printf("NUM   MAME   SCORE1   SORE2   SCORE3   AVERAGE\n");
    output(a,n);//输出学生成绩表
    scoresort(a,n);//按平均成绩从高到低排序学生成绩表
    printf("After Sort:\n");
    printf("NUM   MAME   SCORE1   SORE2   SCORE3   AVERAGE\n");
    output(a,n);//输出学生成绩表
    return 0;
}
void input(struct arrayst a[],int x)
{  int i;
    for(i=0;i<x;i++)
    {
        scanf("%d%s%lf%lf%lf",&a[i].stu.num,&a[i].stu.name,&a[i].stu.score[0],&a[i].stu.score[1],&a[i].stu.score[2]);
    }
}
void output(struct arrayst arr[],int x)
{   float aver;
     int i;
    for(i=0;i<x;i++)
    {
    aver=(arr[i].stu.score[0]+arr[i].stu.score[1]+arr[i].stu.score[2])/3.0;
    printf("%-6d%-7s%-9.0lf%-8.0lf%-9.0lf%-.4f\n",arr[i].stu.num,arr[i].stu.name,arr[i].stu.score[0],arr[i].stu.score[1],arr[i].stu.score[2],aver);
    }
}




void scoresort(struct arrayst arr[],int x)
{
    arrayst temp;
    float aver[100];
    float temp1;
     int i,j,k,r;
    for(i=0;i<x;i++)
    {
    aver[i]=(arr[i].stu.score[0]+arr[i].stu.score[1]+arr[i].stu.score[2])/3.0;
    }
    for(i=0;i<x-1;i++)
    {
        for(j=0;j<x-i-1;j++)
            if(aver[j]<aver[j+1])
            {
                temp = arr[j];
                temp1 = aver[j];
                arr[j] = arr[j + 1];
                aver[j] = aver[j+1];
                arr[j + 1] = temp;
                aver[j+1]=temp1;

            }

    }
}

通过aver大小把学生信息换位后在output中会再计算一次aver, scoresort函数中的aver不是应该没有交换的必要吗?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
    • ¥15 微信会员卡接入微信支付商户号收款
    • ¥15 如何获取烟草零售终端数据
    • ¥15 数学建模招标中位数问题
    • ¥15 phython路径名过长报错 不知道什么问题
    • ¥15 深度学习中模型转换该怎么实现
    • ¥15 HLs设计手写数字识别程序编译通不过
    • ¥15 Stata外部命令安装问题求帮助!
    • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
    • ¥15 TYPCE母转母,插入认方向