1012 数字分类 (20 分)

在这里插入图片描述

Notice:
1.关于样例的测试:
	建立一个in.txt文件,复制题目的输入样例进去,在代码里边(code block或者dev c++)
	直接用C类型的freopen,也可以用C++类型的fstream。可以实现直接从文件中输入测试数据。
	具体见:https://blog.csdn.net/Apie_CZX/article/details/45200921
	
2.关于printf:
	一开始我平均值那个数据我输出来一直是0.0,百思不得其解。后来发现原来是
	printf函数参数类型和打印格式不匹配。
	应该是:printf("%.1f",1.0*arr[3]/count); //9.7
	而我是:printf("%.1f",arr[3]/count);  //0.0、
	
	输出结果并非像预期的那样会自行转换数据类型!原因在于printf后边的变量以栈的方式存储,
	而%f、%lld等转换说明符的操作方式是从栈中读取该符号对应数据类型的字节数,
	并不关心后边对应的数据类型具体是什么!
	具体见:https://blog.csdn.net/baidu_24694009/article/details/107851701
		   https://blog.csdn.net/u011497904/article/details/42454483
	
3.此处控制空格的格式输出直接用的
	for(int i = 0;i < 5;i++){
        if(i != 0) cout << " ";
    }
4.此题的A2(余数为1时候),可能出现加加减减最终为0的情况,所以在最后输出判断是否存在的时候
(对其赋值为'N',需要排除掉这种情况。不然该题的最后一个测试点通过不了。

5.关于Code Block的debug:
		https://jingyan.baidu.com/article/8065f87f3e14ee6330249806.html
		
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
    //1.输入
    int arr[6] = {0};
    int N,a,count = 0,flag = -1;
    cin >> N;
    //2.处理
    for(int i = 0;i < N;i++){
        cin >> a;
        switch(a % 5){
            case 0:
                if(a % 2 == 0) arr[0] += a;
                break;
            case 1:
                if(flag == 0 || flag == -1){
                    arr[1] += a;
                    flag = 1;
                }
                else{
                    arr[1] -= a;
                    flag = 0;
                }
                break;
            case 2:
                arr[2]++;
                break;
            case 3:
                arr[3] += a;
                count++;
                break;
            case 4:
                if(arr[4] < a) arr[4] = a;
                break;
        }
    }
    //3.输出
    for(int i = 0;i < 5;i++){
        if(i != 0) cout << " ";
        if(i == 1 && arr[i] == 0 && flag == -1){//余数为1时候,可能会出现加减之后为0的情况
            cout << 'N';
            continue;
        }else if(i != 1 && arr[i] == 0){
            cout << 'N';
            continue;
        }else if(i == 3){
            printf("%.1f",1.0*arr[3]/count);
        }else
            cout << arr[i];
    }
    return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值