sinat_31829943 2015-10-17 08:07 采纳率: 60%
浏览 1418
已采纳

C语言 超级排序

输入文件(sort.in)
共n+1行
第1行,两个整数n,k,表示有n个同学参加了考试,考了k门;
第1~n+1行,每行k+1个整数,描述1位同学的学号、科目1成绩、科目2成绩、……科目k成绩。
输出文件(sort.out)
共一行,10个整数,排名顺序输出前10名同学的学号,两个数据之间用一个空格隔开。

#include<stdio.h>
int m[10];
int s[100000];
long int n;
void sort()
{
    int i,j,k,t,max,x=0;
    scanf("%ld %d",&n,&k);
    for(i=0;i<n;i++)
    {
        scanf("\n");    
        s[i]=0;     
        for(j=0;j<k;j++)
        {
            scanf("%d",&t);
            getchar();
            s[i]=s[i]+t;
        }s[i]=s[i]-i-1;//总分记录,减去第一个学号数
    }
    while(x<=10)
    {
        max=s[0];
        m[x]=1;//学号记录
        for(i=1;i<n;i++)
        {
            if(s[i]>max)
            {
                max=s[i];
                m[x]=i+1;
            }       
        }
        s[m[x-1]]=0;
        x++;
    }
}
void print()
{   
    int i;
    for(i=0;i<10;i++)
        printf("%d",m[i]);
}
void main()
{
    sort();
    print();
}

求看程序问题

  • 写回答

3条回答 默认 最新

  • 纵横车 2015-10-17 09:06
    关注

    问题略多,sort()里接收并计算成绩那部分s[i]=s[i]-i;是什么意思?
    下面找最高的10个成绩时 s[t]=0;岂不不是最高的成绩都清0了?
    m[x++]=max;这句m[]数组里面不应该放学号吗?怎么放成绩了?
    print()函数里面的for循环循环条件不能等于10。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题