index_source 2021-08-25 13:21 采纳率: 66.7%
浏览 23

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);

}
































```

  • 写回答

1条回答 默认 最新

  • StjpStjp 2021-08-25 13:23
    关注
    如果我的回答对你有帮助,请点击采纳按钮,谢谢
    
    
    #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;
    }
    
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 8月25日

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退