1012 数字分类

给定一系列正整数,请按要求对数字进行分类,并输出以下 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 个正整数,按题目要求计算 A1​​~A5​​ 并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。

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

输入样例 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



#include <stdio.h>
#include <string.h>

int main()
{
    int count=0;
    int a[1000];
    int b1=0;
    int b2=0;
    int b3=0;
    float b4=0;
    int b5=0;
    char out[1000];
    //输入
    scanf("%d",&count);
    int i;
    for(i=0;i<count;i++){
        scanf("%d",&a[i]);
    }

    //A1
    for(i=0;i<count;i++){
        if(a[i]%10==0) b1+=a[i];
    }
    if(b1==0) strcpy(out, "N ");
    else sprintf(out, "%d ", b1);
    //A2
    int j=0;
    for(i=0;i<count;i++){
        if(a[i]%5==1){
            if(j%2==0) b2+=a[i];
            else b2-=a[i];
            j++;
        }
    }
    if(j==0) strcat(out, "N ");
    else sprintf(out+strlen(out), "%d ", b2);
    //A3
    for(i=0;i<count;i++){
        if(a[i]%5==2) b3++;
    }
    if(b3==0) strcat(out, "N ");
    else sprintf(out+strlen(out), "%d ", b3);
    //A4
    for(i=j=0;i<count;i++){
        if(a[i]%5==3) {
            j++;
            b4+=a[i];
        }
    }
    if(j==0) strcat(out, "N ");
    else sprintf(out+strlen(out), "%.1f ", b4/j);
    //A5
    for(i=0;i<count;i++){
        if(a[i]%5==4) {
            if(b5<a[i]) b5=a[i];
        }
    }
    if(b5==0) strcat(out, "N");
    else sprintf(out+strlen(out), "%d", b5);
    //输出
//    printf("%d %d %d %.1f %d",b1,b2,b3,b4,b5);
    puts(out);

    return 0;
}



原文地址:https://www.cnblogs.com/shuicaojing/p/13879946.html