PAT乙级1012数字分类,有一个测试点不过,求改正后通过的代码



```c
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int n, * p = NULL, i, A1 = 0, A2 = 0, A3 = 0, A5 = 0, t = 1,count=0,flag=1;
    double A4=0;
    scanf("%d", &n);
    p = malloc(n * sizeof(int));
    for (i = 0; i < n; ++i)
    {
        scanf("%d", p + i);
        switch (*(p + i)%5)
        {
        case 0:
        {
            if (*(p + i) % 2 == 0)
            A1 += *(p + i);
            break;
        }
        case 1:A2 += *(p + i) * t; t *= -1; break;
        case 2:++A3; break;
        case 3:A4 += 1.0 * *(p + i); ++count; flag = 0; break;
        default:
        {
            if (A5 < *(p + i))
                A5 = *(p + i);
            break;
        }
        }
    }
    A4 = A4 / (1.0 * count);

    if (A1 == 0)
        printf("N");
    else
        printf("%d", A1);

    if (A2 == 0)
        printf(" N");
    else
        printf(" %d", A2);

    if (A3 == 0)
        printf(" N");
    else
        printf(" %d", A3);

    if (flag==1)
        printf(" N");
    else
        printf(" %.1lf", A4);

    if (A5 == 0)
        printf(" N");
    else
        printf(" %d", A5);

}
































```

如果我的回答对你有帮助,请点击采纳按钮,谢谢


#include<iostream>
using namespace std;
int main()
{
    int i,n;
    int a1 = 0, a2 = 0, a3 = 0, a4sum = 0, a5=0,a4n=0,flag=1;
    float a4 = 0;
    bool flag1=false,flag2= false,flag3= false,flag4= false,flag5= false;
    cin >> n;
    int* a = new int[n];
    for (i=0;i<n;i++)
        cin >> a[i];
    for (i = 0; i < n; i++)
    {
        if (a[i] % 5 == 0)
        {
            if (a[i] % 2 == 0)
            {
                a1 += a[i];
                flag1 = true;
            }
        }
        else if (a[i] % 5 == 1)
        {
            if (flag==1)
            {
                a2 += a[i];
                flag = -flag;
            }
            else
            {
                a2 -= a[i];
                flag = -flag;
            }
            flag2 = true;
        }
        else if (a[i] % 5 == 2)
        {
            a3++;
            flag3 = true;
        }
        else if (a[i] % 5 == 3)
        {
            a4sum += a[i];
            a4n++;
            flag4 = true;
        }
        else
        {
            if (a[i] > a5)
                a5 = a[i];
            flag5 = true;
        }
    }
    a4 = float(a4sum) / float(a4n);
    if (flag1)
        cout << a1 << " ";
    else
        cout << "N" << " ";
    if (flag2)
        cout <<  a2 << " " ;
    else
        cout << "N" << " ";
    if(flag3)
        cout << a3<<" ";
    else
        cout << "N" << " ";
    if (flag4)
        printf("%.1f ", a4);
    else
        cout << "N" << " ";
    if (flag5)
        cout << a5;
    else
        cout << "N";
    return 0;
}