Steve_Jobless
2021-08-25 17:46
采纳率: 50%
浏览 54

pat 乙级 1012 部分测试点无法通过(C语言)

#测试点1、6无法通过

题目:

img

img

以下是代码:

#include<stdio.h>
int main()
{
    int N;
    scanf("%d",&N);
    int s[N];
    for(int i=0;i<N;i++)
    scanf("%d",&s[i]);
    int a0[1000],a1[1000],a2[1000],a3[1000],a4[1000];
    int j=0,k=0,m=0,n=0,p=0;
    for(int i=0;i<N;i++)
    {
        if(s[i]%5==0)
        {
            a0[j]=s[i];
            j++;
        }
        else if(s[i]%5==1)
        {
            a1[k]=s[i];
            k++;
        }
        else if(s[i]%5==2)
        {
            a2[m]=s[i];
            m++;
        }
        else if(s[i]%5==3)
        {
            a3[n]=s[i];
            n++;
        }
        else
        {
            a4[p]=s[i];
            p++;
        }
    }
    //余数为0:
    if(j==0)
    printf("N ");
    else
    {
        int sum=0;
        for(int i=0;i<j;i++)
        {
            if(a0[i]%2==0)
            sum+=a0[i];
        }
        printf("%d ",sum);
    }
    //余数为1
    if(k==0)
    printf("N ");
    else
    {
        int sum=0;
        for(int i=0;i<k;i++)
        {
            if(i%2==0)
            sum=sum+a1[i];
            else
            sum=sum-a1[i];
        }
        printf("%d ",sum);
    }
    //余数为2
    if(m==0)
    printf("N ");
    else
    printf("%d ",m);
    //余数为3
    if(n==0)
    printf("N ");
    else
    {
        double average=0;
        for(int i=0;i<n;i++)
        average+=a3[i];
        average=1.0*average/n;
        printf("%.1f ",average);     //  %.nf表示保留n位小数
    }
    //余数为4
    if(p==0)
    printf("N");
    else
    {
        int max=a4[0];
        for(int i=0;i<p;i++)
        {
            if(max<a4[i])
            max=a4[i];
        }
        printf("%d",max);
    }
    return 0;
}

请求点拨

3条回答 默认 最新

相关推荐 更多相似问题