求助大佬!样例过了但是0分

P1093 [NOIP2007 普及组] 奖学金

aciel @ 2022-12-29 17:57:38

#include <stdio.h>
int sum[301],num[301],yuwen[301],eng[301],math[301];
int main()
{
    int n;//n为学生人数
    scanf("%d",&n);
    //输入各科成绩 学号 计算总分,用数组进行储存
    for(int i=0;i<n;i++){
        scanf("%d %d %d",&yuwen[i],&math[i],&eng[i]);
        num[i]=i+1;//赋值学号,下标从1开始
        sum[i]=0;//每次赋值为0,细节
        sum[i]+=yuwen[i]+math[i]+eng[i];
    }
    //进行排序
    int temp=0;
    for(int i=0;i<n-1;i++){
        for (int j=0;j<n-1-i;j++){
            if(sum[j+1]>sum[j]){
                temp=sum[j+1];
                sum[j+1]=sum[j];
                sum[j]=temp;
                //排完总分后 语文和学号也变
                temp=yuwen[j+1];
                yuwen[j+1]=yuwen[j];
                yuwen[j]=temp;

                temp=num[j+1];
                num[j+1]=num[j];
                num[j]=temp;
            }
            //总分相同时
            if(sum[j]==sum[j+1]){
                if(yuwen[j+1]>yuwen[j]){
                    temp=yuwen[j+1];
                    yuwen[j+1]=yuwen[j];
                    yuwen[j]=temp;

                    temp=num[j+1];
                    num[j+1]=num[j];
                    num[j]=temp;
                }
                if(yuwen[j+1]==yuwen[j])
                {
                    if(num[j+1]<num[j])
                    {
                        temp=num[j];
                        num[j]=num[j+1];
                        num[j+1]=temp;
                    }
                }
            }
        }
    }
    for(int i=0;i<5;i++){
        printf("%d  %d\n",num[i],sum[i]);
    }
    return 0;
}

by 违规用户名690561 @ 2022-12-29 18:17:40

倒数第4行的printf输出两个%d之间多打了一个空格


#include <stdio.h>
int sum[301],num[301],yuwen[301],eng[301],math[301];
int main()
{
    int n;//n为学生人数
    scanf("%d",&n);
    //输入各科成绩 学号 计算总分,用数组进行储存
    for(int i=0;i<n;i++){
        scanf("%d %d %d",&yuwen[i],&math[i],&eng[i]);
        num[i]=i+1;//赋值学号,下标从1开始
        sum[i]=0;//每次赋值为0,细节
        sum[i]+=yuwen[i]+math[i]+eng[i];
    }
    //进行排序
    int temp=0;
    for(int i=0;i<n-1;i++){
        for (int j=0;j<n-1-i;j++){
            if(sum[j+1]>sum[j]){
                temp=sum[j+1];
                sum[j+1]=sum[j];
                sum[j]=temp;
                //排完总分后 语文和学号也变
                temp=yuwen[j+1];
                yuwen[j+1]=yuwen[j];
                yuwen[j]=temp;

                temp=num[j+1];
                num[j+1]=num[j];
                num[j]=temp;
            }
            //总分相同时
            if(sum[j]==sum[j+1]){
                if(yuwen[j+1]>yuwen[j]){
                    temp=yuwen[j+1];
                    yuwen[j+1]=yuwen[j];
                    yuwen[j]=temp;

                    temp=num[j+1];
                    num[j+1]=num[j];
                    num[j]=temp;
                }
                if(yuwen[j+1]==yuwen[j])
                {
                    if(num[j+1]<num[j])
                    {
                        temp=num[j];
                        num[j]=num[j+1];
                        num[j+1]=temp;
                    }
                }
            }
        }
    }
    for(int i=0;i<5;i++){
        printf("%d %d\n",num[i],sum[i]);
    }
    return 0;
}

by 违规用户名690561 @ 2022-12-29 18:18:20

@aciel

修改后已AC


by aciel @ 2022-12-29 18:58:36

@tzxxzt 感谢!


|