请问代码要怎么修改才能达到要求啊?这个代码写起来一直让输入不输出了


#include<stdio.h>
int main()
{
    int n,i,j,m=0;
    scanf("%d",&n);
    int a[20],c[n];
    int p=n;
    while(n)
    {
        i=0;
        while(a[i]!=-1)
        {
            scanf("%d",&a[i]);
            i++;
        }
        int d=i;
        for(i=3;i<d-1;i++)
            for(j=3;j<n-i-1;i++)
                if(a[i+1]>a[i]){
                    int t=a[i+1];
                    a[i+1]=a[i];
                    a[i]=t;
                }
    c[m]=a[0]+a[1]+a[2]+a[3]+a[4]+a[5];
    n--;
    }
    for(m=0;m<p;m++){
        printf("%d\n",c[m]);
    }
    return 0;
}

高考计分模式今年的试点在上海、浙江开始。总体方案是 3 + 3 模式。

除了语数外三门课程的成绩外,在学业水平测试中选择 3 门成绩最好的科目计入总分。现给出一些学生各科成绩,要求求出他们的高考总成绩。

输入描述
有多组测试数据,测试数据的组数 n 在第一行给出。

接下来的 n 行中有若干个正整数 (不超过 20),前三个分别表示语数外的成绩,其余的表示学业水平测试中其他科目的成绩。每行以 -1 结尾

输出描述
对于每组测试数据,输出一行正整数,表示该考生的高考总成绩。

样例输入:
3

110 168 110 89 78 91 79 92 79 -1

100 159 108 71 79 96 91 90 67 78 -1

108 168 111 78 90 89 100 87 69 92 98 -1

样例输出:
660

644

677


 
#include<stdio.h>
int main()
{
    int n,i,j,m=0;
    scanf("%d",&n);
    int a[20],c[n];
    int p=n;
    while(n)
    {
        i=0;
        //赋值a[i]后i++,此时a[i]是没赋值的
        while(1)
        {
            scanf("%d",&a[i]);
            if(a[i]==-1)break;
            i++;
        }
        int d=i+1;
        for(i=3;i<d-1;i++)
            //改
            for(j=3;j<d-i+3-1;j++)
                if(a[j+1]>a[j]){
                    int t=a[j+1];
                    a[j+1]=a[j];
                    a[j]=t;
                }
    c[m]=a[0]+a[1]+a[2]+a[3]+a[4]+a[5];
    //m赋值后加1
    m++;
    n--;
    }
    for(m=0;m<p;m++){
        printf("%d\n",c[m]);
    }
    return 0;
}