C++入门 PAT乙级B1012 数字分类

C++入门 PAT乙级B1012 数字分类
C++入门 PAT乙级B1012 数字分类_第1张图片题目描述
给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:

A​1​​ = 能被 5 整除的数字中所有偶数的和;
A​2​​ = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n​1​​−n​2​​+n​3​​−n​4​​⋯;
A​3​​ = 被 5 除后余 2 的数字的个数;
A​4​​ = 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;
A​5​​ = 被 5 除后余 4 的数字中最大数字。

输入格式

每个输入包含 1 个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数。数字间以空格分隔。

输出格式

对给定的 N 个正整数,按题目要求计算 A​1​​~A​5​​ 并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。

若其中某一类数字不存在,则在相应位置输出 N。

输入样例

13 1 2 3 4 5 6 7 8 9 10 20 16 18

输出样例

30 11 2 9.7 9

思路分析

(1)这道题目需要细心的去做,因为很容易就出错。
比如,A2的结果是否要输出‘N’,不能直接用A2是否等于0或者其他来判断,而是需要判断满足A2条件的数的数目。

(2)输出要注意最后一个数后面不能有空格。

(3)注意题目要求,A4要求输出结果精确到小数点后1位,那么需要注意设置变量时就设为float类型,并且输出时使用cout<

代码

#include
#include 
#include
#include 
using namespace std;
int main()
{
    int num_in[1000];
    int i=0;
    int N;              //输入的测试用例的总数

    float a[5];  //按题目要求记录五类数的情况
    a[0]=0;
    a[1]=0;
    a[2]=0;
    a[3]=0;
    a[4]=0;
    int cnt=1;  //交错求和时计数
    int cnt2=0;
    char c;
    cin>>N;
    if(N<=0||N>1000)   //错误输入判断和处理
    {
        return 0;
    }
    while(i='0'&&c<='9')  //输入正整数
		{
			ungetc(c,stdin);
			cin>> num_in[i++];
		}
    }

    for(int j=0;j1000||num_in[j]<=0)
        {
            return 0;
        }
        if(num_in[j]%2==0&&num_in[j]%5==0)  {a[0]=a[0]+num_in[j];}   //计算偶数的数量
        if(num_in[j]%5==1)          //交错求和
        {
            if(cnt%2!=0)
            {a[1]=a[1]+num_in[j];}
            else a[1]=a[1]-num_in[j];
            cnt++;
        }
        if(num_in[j]%5==2)  a[2]++;
        if(num_in[j]%5==3)
        {
            a[3]=a[3]+num_in[j];
            cnt2++;   //记录数目
        }
        if(num_in[j]%5==4)
        {
            if(num_in[j]>a[4])
            {
                a[4]=num_in[j];
            }
        }
    }
    if(cnt2==0)  a[3]=0;   //没有符合要求的数,则平均数等于0
    else
        {
            a[3]=a[3]/cnt2; //计算平均数
    }

    if(a[0]==0)
    {
         cout<<'N'<<' ';
    }
    else{
     cout<

以上代码仅供参考

结果截图

C++入门 PAT乙级B1012 数字分类_第2张图片

C++入门 PAT乙级B1012 数字分类_第3张图片如需转载,请联系版主!

你可能感兴趣的:(C++入门,PAT乙级真题)