我踩到的坑是:
A2分类中得到的和可能为0,而我却在输出时以和是否为0来控制是否输出 ‘N’。
正确代码:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n, a1 = 0, a2 = 0, a3 = 0, a5 = 0;
int ct = 0, ct2=0;
float a4=0;
cin >> n;
for(int i = 0; i < n; i++) {
int num;
cin >> num;
switch(num % 5) {
case 0: {
if(num % 2 == 0) a1 += num;
break;
}
case 1: {
a2 = a2 + pow(-1, ct) * num;
ct ++;
break;
}
case 2: a3++; break;
case 3: {
a4 += num;
ct2 ++;
break;
}
case 4: {
if(num > a5) a5 = num;
break;
}
}
}
if(a1) printf("%d ", a1);
else printf("N ");
if(ct) printf("%d ", a2); // ============= 原来误写为 if(a2) printf("%d ", a2);
else printf("N ");
if(a3) printf("%d ", a3);
else printf("N ");
if(a4) printf("%.1f ", a4/ct2);
else printf("N ");
if(a5) printf("%d", a5);
else printf("N");
return 0;
}