这道题不难吧,可最后一个点也太坑了吧,不,是我太傻。
这个在代码的注释里说明
- A1 = 能被 5 整除的数字中所有偶数的和;
- A2 = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n1−n2+n3−n4⋯;
- A3 = 被 5 除后余 2 的数字的个数;
- A4 = 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;
- A5 = 被 5 除后余 4 的数字中最大数字
写相应的if语句就好了,录入一个数,把它扔到相应的位置。
#include<iostream> using namespace std; int main() { int a1=0,a2=0,a3=0; int n,x,z=0,flag=1,count=0,max=0; double sum=0; cin>>n; for(int i=0;i<n;i++) { cin>>x; if(x%5==0&&x%2==0)a1+=x; else if(x%5==1) { a2+=flag*x; flag=-flag; z=1;//重中之重的标记位 } else if(x%5==2)a3++; else if(x%5==3) { sum+=x; count++; } else if(x%5==4) { if(max<x)max=x; } } if(a1==0)printf("N "); else printf("%d ",a1); if(a2==0&&z==0)printf("N ");//之前的思路,最后检验一波,0换成N输出就好了
//可是我没有考虑到加加减减最后等于零的情况,这波糗大了,19分 else printf("%d ",a2); if(a3==0)printf("N "); else printf("%d ",a3); if(sum==0)printf("N "); else printf("%.1f ",sum/count); if(max==0)printf("N"); else printf("%d",max); return 0; }