一、可借鉴的

1. switch的使用

基本使用方法

  1. switch(表达式){
  2. case 0:{...;
  3. break;}
  4. case 1:...
  5. }

也可以用else if()代替

2. 浮点数的格式化输出

小数点后面的是保留几位小数,小数点前面的是补全至多少位

  1. printf("%.1f ",((double)a4sum/count2));

3. 要注意是否有盲点

最后一个测试点过不去就是因为A2类的交错求和的结果本身就是0,而把0作为判断这一类数字不存在的条件是错误的。

二、代码

算法笔记上的解法是为每一个类别设置一个count和一个ans
使用count[5]和ans[5]来存储相关结果,用count来作为判断依据,因此没有上面说的盲点。

  1. #include<cstdio>
  2. int main(){
  3. int num;
  4. int a[1000] = {0};
  5. int a1sum = 0,a2sum = 0,a4sum = 0;
  6. int flag = 0;
  7. int count = 0,count2 = 0;
  8. int max = 0;
  9. scanf("%d",&num);
  10. for (int i = 0;i < num;i++)
  11. {
  12. scanf("%d",&a[i]);
  13. // }
  14. // for (int i = 0;i < num;i++)
  15. // {
  16. switch(a[i]%5)
  17. {
  18. case 0:{
  19. if(a[i]%2==0){
  20. a1sum +=a[i];
  21. }
  22. break;
  23. };
  24. case 1:{
  25. if(flag%2 == 1)
  26. {
  27. a2sum -= a[i];
  28. }
  29. else
  30. {
  31. a2sum += a[i];
  32. }
  33. flag++;
  34. break;
  35. };
  36. case 2:{
  37. count++;
  38. break;
  39. };
  40. case 3:{
  41. a4sum +=a[i];
  42. count2++;
  43. break;
  44. };
  45. case 4:{
  46. if(max<a[i])
  47. {
  48. max = a[i];
  49. }
  50. break;
  51. };
  52. }
  53. }
  54. if(a1sum == 0){printf("N ");}
  55. else{printf("%d ",a1sum);}
  56. if(flag == 0){printf("N ");}
  57. else{printf("%d ",a2sum);}
  58. if(count == 0){printf("N ");}
  59. else{printf("%d ",count);}
  60. if(count2 == 0){printf("N ");}
  61. else{printf("%.1f ",((double)a4sum/count2));}
  62. if(max == 0){printf("N");}
  63. else{printf("%d",max);}
  64. }