数字分类 (20)

时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小)
题目描述
给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:
A1 = 能被5整除的数字中所有偶数的和;

A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;

A3 = 被5除后余2的数字的个数;

A4 = 被5除后余3的数字的平均数,精确到小数点后1位;

A5 = 被5除后余4的数字中最大数字。

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

输出描述:
对给定的N个正整数,按题目要求计算A1~A5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。
若其中某一类数字不存在,则在相应位置输出“N”。

输入例子:
13 1 2 3 4 5 6 7 8 9 10 20 16 18

输出例子:
30 11 2 9.7 9

代码

#include <stdio.h>
int main(void)
{
    int T = 0;
    scanf("%d",&T);
    int j = 0;
    int arr[T];
    for(;j<T;j++)
    {
        scanf("%d",&arr[j]);
    }
    int a2sig = 1;
    int a1sum = 0,a1num = 0,a2sum =0,a2num = 0,a3num =0,a4sum = 0,a4num = 0,a5num = 0,a5max = 0;
    double a4ave = 0.0;
    for(int i = 0;i<j;i++)
    {
        if(arr[i]%5==0&&arr[i]%2==0)
        {
            a1sum+=arr[i];
            a1num++;
        }
        if(arr[i]%5==1)
        {
            a2sum=a2sum+arr[i]*a2sig;
            a2num++;
            a2sig =-1*a2sig;
        }
        if(arr[i]%5==2)
        {
            a3num++;
        }
        if(arr[i]%5==3)
        {
            a4sum+=arr[i];
            a4num++;
            double a = (double)a4sum;
            double b = (double)a4num;
            a4ave= a/b;
        }
        if(arr[i]%5==4)
        {
            if(arr[i]>a5max) a5max = arr[i];
            a5num++;
        }
    }
    if(a1num!=0)
    printf("%d ",a1sum);
    else printf("N ");
    if(a2num!=0)
    printf("%d ",a2sum);
    else (printf("N "));
    if(a3num!=0)
    printf("%d ",a3num);
    else printf("N ");
    if(a4num!=0)
    printf("%.1lf ",a4ave);
    else printf("N ");
    if(a5num!=0)
    printf("%d",a5max);
    else printf("N ");
}
最后修改:2022 年 11 月 20 日
如果觉得我的文章对你有用,只需评论或转发支持,谢绝投喂!