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