数字分类 (20)

数字分类 (20)

时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB

题目描述

给定一系列正整数,请按要求对数字进行分类,并输出以下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

思路:设定出几种情况需要用到了变量分情况讨论即可。

需要的问题:1、强制转换类型  v1版编码时  余数为3时,平均数总不对。后来发现是除数被除数都是int型,结果不是浮点型而是自动识别为int型。所以需要强制转换下,或者设置sum变量时直接设为浮点型,此时除数和被除数有一个为浮点型,计算时即可按照浮点型运算。2、breakswitch-case语句,break表示跳至switch有括号处。若没有break则继续执行下一个case语句。

v1版↓
#include<stdio.h>
int main(){
    int num,a,a1=0,a2=0,a3=0,a5=0,n,i,b=1,sum=0,co3=0;
    float a4=0;
    bool s0=false,s1=false,s2=false,s3=false,s4=false;

    scanf("%d",&n);

    for(i=0;i<n;i++){
        scanf("%d",&num);
        a=num%5;
        switch(a)
        {
            case 0:{
                if(num%2==0){
                s0=true;
                a1=a1+num;
                break;
                }
                break;
            }
            case 1:{
                s1=true;
                a2=a2+b*num;
                b=-b;
                break;
            }
            case 2:{
                s2=true;
                a3++;
                break;
            }
            case 3:{
                    s3=true;
                    sum=sum+num;
                    co3++;
                    a4=(float)sum/co3;
                    break;
            }
            case 4:if(num>a5){
                s4=true;
                a5=num;
                break;
            }
        }
    }
    if(s0)
        printf("%d",a1);
    else
    printf("N");
    if(s1)
        printf(" %d",a2);
    else
    printf(" N");
    if(s2)
        printf(" %d",a3);
    else
    printf(" N");
    if(s3)
        printf(" %.1f",a4);
    else
    printf(" N");
    if(s4)
        printf(" %d",a5);
    else
    printf(" N");

    return 0;
}

v1代码思路清晰却有些拖沓,可优化,晚些来填坑。

时间: 2024-10-17 18:52:10

数字分类 (20)的相关文章

PAT乙级 1012. 数字分类 (20)

1012. 数字分类 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和: A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...: A3 = 被5除后余2的数字的个数: A4 = 被5除后余3的数字的平均数,精确到小数点后1位: A5 = 被5除后余4的数字中最大数

问题 G: 数字分类 (20)

问题 G: 数字分类 (20) 时间限制: 1 Sec  内存限制: 32 MB献花: 188  解决: 77[献花][花圈][TK题库] 题目描述 给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和: A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...: A3 = 被5除后余2的数字的个数: A4 = 被5除后余3的数字的平均数,精确到小数点后1位: A5 = 被5除后余4的数字中最大数字. 输入 每个

C++&#183;PAT乙级1012.数字分类 (20/20)

/* 1012. 数字分类 (20) 给定一系列正整数,请按要求对数字进行分类,并输出以下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的待分类的

1012. 数字分类 (20)

给定一系列正整数,请按要求对数字进行分类,并输出以下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的待分类的正整数.数字间以空格分隔. 输出格式:

PAT 1012. 数字分类 (20)

给定一系列正整数,请按要求对数字进行分类,并输出以下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的待分类的正整数.数字间以空格分隔. 输出格式:

PAT:1012. 数字分类 (20) AC

#include<stdio.h> #include<stdlib.h> int main() { int n; int A1,A2,A3,A4,A5,tag,numA4,max=-1,A2tag=0; A1=A2=A3=A4=A5=tag=numA4=0; scanf("%d",&n); for(int t=0 ; t<n ; ++t) { int tmp; scanf("%d",&tmp); if(tmp%5==0

数字分类

1012. 数字分类 (20) 时间限制 50 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和: A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...: A3 = 被5除后余2的数字的个数: A4 = 被5除后余3的数字的平均数,精确到小数点后1位: A5 = 被5除后余4的数字中最大数字

PAT 1012 数字分类 C语言

给定一系列正整数,请按要求对数字进行分类,并输出以下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的待分类的正整数.数字间以空格分隔. 输出格式:

*1012. 数字分类

1 /* 2 * Main.c 3 * 1012. 数字分类 4 * Created on: 2014年8月30日 5 * Author: Boomkeeper 6 ********部分通过****** 7 */ 8 9 #include <stdio.h> 10 #include <math.h> 11 12 void A1(int in,int* sum){ 13 14 if(in%5==0&&in%2==0) 15 (*sum)+=in; 16 } 17 18