2021-05-05

这篇博客主要介绍了C++实现数字分类的问题,包括偶数、5的倍数、奇数、平均值和最大值的统计。博主分享了在编程过程中遇到的难点,如交错加减导致的特殊情况处理,以及数组大小的定义问题。文章还提到了利用‘%.nf’控制输出精度的小技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#PAT打卡练习12

1012 数字分类 (20 分)

 

##题解

###题目分析

这题看似简单却折磨了我很久,总是有测试点过不去。

###难点

1.在A2方面,因为交错加减导致了最后结果可能为0,使得后面输出N;

2.在我的代码中还犯了个小毛病,定义数组过小,导致错误。

3.学到一个小技巧,“%.nf”用这个可以控制输出小数点后n位。

##代码

#include <stdio.h>
#define M 10000
int main()
{
    int c,j,tem=0,flag=0,n,A1=0,A2=0,A3=0,A5=0,a[M]={0},i=0;
    float A4=0,count=0;
    scanf("%d",&c);
    for(j=0;j<c;j++)
    {
        scanf("%d",&n);
        if(n%5==0&&n%2==0)
        A1+=n;
        else if(n%5==1)
        {
            tem++;
            if(flag%2==0)
            A2+=n;
            else
             A2-=n;
            flag+=1;
        }
        else if(n%5==2)
            A3+=1;
        else if(n%5==3)
        {
            A4+=n;
            count+=1;
        }
        else if(n%5==4)
           {
               a[i]=n;
               i+=1;
            }
    }
    A5=a[0];
    for(flag=0;flag<i;flag++)
        A5=(A5>=a[flag]?A5:a[flag]);
        if(A1==0)
        printf("N ");
        else
        printf("%d ",A1);
        if(tem==0)
        printf("N ");
        else
        printf("%d ",A2);
        if(A3==0)
        printf("N ");
        else
        printf("%d ",A3);
        if(A4==0)
        printf("N ");
        else
        printf("%.1f ",A4/count);
        if(A5==0)
        printf("N");
        else
        printf("%d",A5);
    return 0;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值