Lemon_Tree_218 2021-08-25 17:46 采纳率: 50%
浏览 65
已结题

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条回答 默认 最新

  • StjpStjp 2021-08-25 17:48
    关注
    温馨提醒:如果我的回答对你有帮助,请点击旁边的采纳按钮,谢谢

    你这个代码的算话实现的结构有些问题:
    我给你我的代码吧:

    #include <stdio.h>
    
    int main() {
        int N;
        scanf("%d", &N);
        int arr[N], A[6] = {0}, cntA[6] = {0};
        for (int i = 0; i < N; i++) {
            scanf("%d", &arr[i]);
            if (arr[i] % 10 == 0) { //能被5整除的偶数
                A[1] += arr[i];
                cntA[1]++;
            } else if (arr[i] % 5 == 1) { //被5除后余1 
                cntA[2]++;
                if (cntA[2] % 2 == 1) { //第奇数个 
                    A[2] += arr[i]; 
                } else {
                    A[2] -= arr[i];
                }
            } else if (arr[i] % 5 == 2) { //被5除后余2
                A[3]++;
                cntA[3]++;
            } else if (arr[i] % 5 == 3) { //被5除后余3
                A[4] += arr[i];
                cntA[4]++;
            } else if (arr[i] % 5 == 4 && A[5] < arr[i]) { //被5除后余4
                A[5] = arr[i];
                cntA[5]++; 
            }
        }
        for (int i = 1; i <= 5; i++) {
            if (cntA[i] == 0) {
                if (i != 1)
                    printf(" ");
                printf("N");
            } else if (i == 1) {
                printf("%d", A[1]);
            } else if (i == 2 || i == 3 || i == 5) {
                printf(" %d", A[i]);
            } else { // i = 4
                printf(" %.1f", (double)A[i] / cntA[4]);
            }
        } 
        printf("\n");
        return 0; 
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月23日
  • 已采纳回答 3月15日
  • 修改了问题 8月25日
  • 创建了问题 8月25日

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置