pta数组题高于平均水平每个数据集以整数N开始,N是班级的人数(1 <= N <= 1000)。后面跟着N个整数,用空格或换行符分隔,每个整数表示一个学生的最终成绩(0到100之间的整数)

img

img

5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91

40.000%
57.143%
33.333%
66.667%
55.556%


#include <stdio.h>
int main(){
    int c;
    scanf("%d",&c);
    int a[1000];
    int i,j;
    for(i=0;i<c;i++){
        scanf("%d",&a[i]);
        int sum=0;
        for(j=1;j<=a[i];j++){
            scanf("%d",&a[j]);
            sum+=a[j];
        }
        float num=a[0];
        float aver=sum*1.0/num;
        float k=0;
        for(int j=1;j<=a[i];j++){
            if(a[j]>aver)
                k++;
        }
        printf("%.3f%%\n",k*100/num);
    }
}

img


运行只出现第一次结果

scanf("%d",&a[i]);
改成
scanf("%d",&a[0]);
a[0]记录了后面的数据数量,不是a[i]
for(j=1;j<=a[i];j++){也改为
for(j=1;j<=a[0];j++){

 
#include <stdio.h>
int main(){
    int c;
    scanf("%d",&c);
    int a[1000];
    int i,j;
    for(i=0;i<c;i++){
        scanf("%d",&a[0]);
        int sum=0;
        for(j=1;j<=a[0];j++){
            scanf("%d",&a[j]);
            sum+=a[j];
        }
        float num=a[0];
        float aver=sum*1.0/num;
        float k=0;
        for(int j=1;j<=a[0];j++){
            if(a[j]>aver)
                k++;
        }
        printf("%.3f%%\n",k*100/num);
    }
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632