为神马我的总是50分!C语言师兄师姐们看一下

P1093 [NOIP2007 普及组] 奖学金

Lying_Flat666 @ 2017-02-23 13:42:43

#include<stdio.h>
struct student
{
    int num;
    int yuwen;
    int shuxue;
    int yingyu;
    int sum;
}a[100],temp;
int main()
{
    int n,i,j;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    scanf("%d %d %d",&a[i].yuwen,&a[i].shuxue,&a[i].yingyu);
    for(i=1;i<=n;i++)
{
    a[i].num=i;
    a[i].sum=a[i].yuwen+a[i].shuxue+a[i].yingyu;
}
    for(j=1;j<=n-1;j++)
    for(i=1;i<=n;i++)
{
    if(a[i].sum<a[i+1].sum)
{
    temp=a[i];
    a[i]=a[i+1];
    a[i+1]=temp;
}
    if(a[i].sum==a[i+1].sum)
    if(a[i].num<a[i+1].num)
{
    temp=a[i];
    a[i]=a[i+1];
    a[i+1]=temp;
}
}
    for(i=1;i<=5;i++)
    printf("%d %d\n",a[i].num,a[i].sum);
    return 0;
}

by Sonorous @ 2017-02-23 14:35:28

期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学 排在前面,这样,每个学生的排序是唯一确定的。

如果总分相同先按语文成绩排序……我看你的代码好像直接按学号排了吧

@wuhanru0001


by Sonorous @ 2017-02-23 14:38:03

@ wuhanru0001


by Lying_Flat666 @ 2017-03-01 13:31:15

扫得寺内,谢谢


by Rieman_sum @ 2023-08-02 20:44:22

考古


|