PAT (Basic Level) Practice题解 1012 数字分类 [C语言实现]

题目

原题链接
在这里插入图片描述
输入样例 1:
13 1 2 3 4 5 6 7 8 9 10 20 16 18
输出样例 1:
30 11 2 9.7 9
输入样例 2:
8 1 2 4 5 6 7 9 16
输出样例 2:
N 11 2 N 9

思路

简单的条件判断,思路没什么好说的。
但有几个值得注意的点:

  • 代码的排版易读性
  • A2有加减运算,判断是否存在不能用初值==0这个条件,应该用计数变量
  • 整型转浮点型输出

代码

#include <stdio.h>

int main()
{
    int N,num;//正整数N,待分类正整数num
    //初始化A1,A2,A3,A4,A5为零,以便计数或者判断是否存在
    int A1 = 0, A2 = 0, A3 = 0, A4 = 0, A5 = 0;
    //声明计数变量,cnt2用来计数和判断加减,cnt4用来计数
    
    int cnt2 = 0, cnt4 = 0;
    scanf("%d",&N);
    for(int i = 0; i < N; i++)
    {
        scanf("%d",&num);
        int mod = num % 5;//声明取余的变量
        switch (mod)//用的switch(){case}的结构,注意语法和break;
        {
            case 0:
                if(num % 2 == 0)    A1 += num;
                break;
            case 1:
                cnt2 ++;
                if(cnt2 % 2 == 1)   A2 += num;  else    A2 -= num;
                break;
            case 2:
                A3++;
                break;
            case 3:
                cnt4++;     A4 += num;
                break;
            case 4:
                if(A5 < num)   A5 = num;
                break;
        }
    }
    //输出前先判断存在与否
    if(A1 == 0)     printf("N ");    else printf("%d ",A1);
    //特别注意A2,因为有加减,可能为零,因此不能用初始值零判断是否存在,改用计数变量cnt2判断
    if(cnt2 == 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 * 1.0 / cnt4);
    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、付费专栏及课程。

余额充值