一、可借鉴的
1. switch的使用
基本使用方法
switch(表达式){case 0:{...;break;}case 1:...}
也可以用else if()代替
2. 浮点数的格式化输出
小数点后面的是保留几位小数,小数点前面的是补全至多少位
printf("%.1f ",((double)a4sum/count2));
3. 要注意是否有盲点
最后一个测试点过不去就是因为A2类的交错求和的结果本身就是0,而把0作为判断这一类数字不存在的条件是错误的。
二、代码
算法笔记上的解法是为每一个类别设置一个count和一个ans
使用count[5]和ans[5]来存储相关结果,用count来作为判断依据,因此没有上面说的盲点。
#include<cstdio>int main(){int num;int a[1000] = {0};int a1sum = 0,a2sum = 0,a4sum = 0;int flag = 0;int count = 0,count2 = 0;int max = 0;scanf("%d",&num);for (int i = 0;i < num;i++){scanf("%d",&a[i]);// }// for (int i = 0;i < num;i++)// {switch(a[i]%5){case 0:{if(a[i]%2==0){a1sum +=a[i];}break;};case 1:{if(flag%2 == 1){a2sum -= a[i];}else{a2sum += a[i];}flag++;break;};case 2:{count++;break;};case 3:{a4sum +=a[i];count2++;break;};case 4:{if(max<a[i]){max = a[i];}break;};}}if(a1sum == 0){printf("N ");}else{printf("%d ",a1sum);}if(flag == 0){printf("N ");}else{printf("%d ",a2sum);}if(count == 0){printf("N ");}else{printf("%d ",count);}if(count2 == 0){printf("N ");}else{printf("%.1f ",((double)a4sum/count2));}if(max == 0){printf("N");}else{printf("%d",max);}}
