• 数字分类


    题目描述

    给定一系列正整数,请按要求对数字进行分类,并输出以下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(){
    	int n,i,temp;
    	scanf("%d",&n);
    	int asum = 0,b = 0,c = 0,d = 0,dnum = 0,emax = 0;
    	float dave = 0.0;
    	bool book = true;
    	for(i=0;i<n;i++){
    		scanf("%d",&temp);
    		if(temp%5 == 0){
    			if(temp%10 == 0){
    				asum += temp;
    			}
    		}
    		else if(temp%5 == 1){
    			if(book){
    				b += temp;
    			}else{
    				b -= temp; 
    			}
    			book = !book;
    		}
    		else if(temp%5 == 2){
    			c++;
    		}
    		else if(temp%5 == 3){
    			d += temp;
    			dnum++;
    		}
    		else if(temp%5 == 4){
    			if(emax < temp){
    				emax = temp;
    			}
    		}
    	}
    	if(dnum != 0){
    		dave = (float)d/(float)dnum;
    	}
    	
    	if(asum != 0){
    		printf("%d ",asum);
    	}else{
    		printf("N ");
    	}
    	
    	if(b != 0){
    		printf("%d ",b);
    	}else{
    		printf("N ");
    	}
    	
    	if(c != 0){
    		printf("%d ",c);
    	}else{
    		printf("N ");
    	}
    	
    	if(dave != 0){
    		printf("%.1f ",dave);
    	}else{
    		printf("N ");
    	}
    	
    	if(emax != 0){
    		printf("%d",emax);
    	}else{
    		printf("N");
    	}
    	return 0;
    }
    

    另解:

    #include <iostream>
    #include <iomanip>
    using namespace std;
     
    int main()
    {
        int c1=0,c2=0,c3=0,c4Num=0,c5=0;
        float c4=0;
        int n,x,i=1;
        cin>>n;
        while(n--)
        {
            cin>>x;
            switch(x%5)
            {
                case 0:if(x%2==0) c1+=x; break;
                case 1:c2+=(i*x);i=-i;break;
                case 2:c3++;break;
                case 3:c4+=x;c4Num++;break;
                case 4:if(x>c5)c5=x;break;
            }
        }
        (c1>0)?(cout<<c1<<" "):(cout<<"N ");
        (c2!=0)?(cout<<c2<<" "):(cout<<"N ");
        (c3>0)?(cout<<c3<<" "):(cout<<"N ");
        (c4>0)?(cout<<fixed<<setprecision(1)<<c4/c4Num<<" "):(cout<<"N ");
        (c5>0)?(cout<<c5):(cout<<"N");
        return 0;
    }
    
  • 相关阅读:
    tracert命令与tracert (IP地址)-d有什么区别?
    linux下通过进程名查看其占用端口
    Union和Union All的区别
    外连接、内连接
    Linux 删除文件夹和文件的命令(强制删除包括非空文件)
    linux查看当前目录
    Linux chmod命令及权限含义
    MySQL的if,case语句
    case when
    java生成验证码图片
  • 原文地址:https://www.cnblogs.com/techgy/p/14352378.html
Copyright © 2020-2023  润新知