C/C++
在处理A2正负相加求和时,通过加减变量flag控制正负号。当flag为0时为加号,为1时为减号。控制循环语句一开始使用两个if,即if(flag==0)A[1]+=a[i];flag++;if(flag==1)A[1]-=a[i];flag--;结果报错,将后者的if改为else if报对。原因是前者将flag已经加一,使程序又通过了后者的判断,导致了错误。
#include<cstdio>
int main()
{int a[1000]={},count=0,A[5]={},Ac[5]={};scanf("%d",&count);for(int i=0; i<count; i++)scanf("%d",&a[i]);for(int i=0; i<count; i++)if(a[i]%5==0 && a[i]%2==0){A[0] += a[i];Ac[0]++;}int flag=0;for(int i=0; i<count; i++)if(a[i]%5==1){if(flag==0){A[1] += a[i];flag++;Ac[1]++;}else{A[1] -= a[i];flag--;Ac[1]++;}}for(int i=0; i<count; i++)if(a[i]%5==2){A[2]++;Ac[2]++;}for(int i=0; i<count; i++)if(a[i]%5==3){A[3] += a[i];Ac[3]++;}for(int i=0; i<count; i++)if(a[i]%5==4 && A[4]<a[i]){Ac[4]++;A[4] = a[i];}if(Ac[0]==0)printf("N ");elseprintf("%d ",A[0]);if(Ac[1]==0)printf("N ");else printf("%d ",A[1]);if(Ac[2]==0)printf("N ");else printf("%d ",A[2]);if(Ac[3]==0)printf("N ");elseprintf("%.1f ",(double)A[3]/Ac[3]);if(Ac[4]==0)printf("N");elseprintf("%d",A[4]);return 0;
}