#PAT打卡练习12
1012 数字分类 (20 分)
##题解
###题目分析
这题看似简单却折磨了我很久,总是有测试点过不去。
###难点
1.在A2方面,因为交错加减导致了最后结果可能为0,使得后面输出N;
2.在我的代码中还犯了个小毛病,定义数组过小,导致错误。
3.学到一个小技巧,“%.nf”用这个可以控制输出小数点后n位。
##代码
#include <stdio.h>
#define M 10000
int main()
{
int c,j,tem=0,flag=0,n,A1=0,A2=0,A3=0,A5=0,a[M]={0},i=0;
float A4=0,count=0;
scanf("%d",&c);
for(j=0;j<c;j++)
{
scanf("%d",&n);
if(n%5==0&&n%2==0)
A1+=n;
else if(n%5==1)
{
tem++;
if(flag%2==0)
A2+=n;
else
A2-=n;
flag+=1;
}
else if(n%5==2)
A3+=1;
else if(n%5==3)
{
A4+=n;
count+=1;
}
else if(n%5==4)
{
a[i]=n;
i+=1;
}
}
A5=a[0];
for(flag=0;flag<i;flag++)
A5=(A5>=a[flag]?A5:a[flag]);
if(A1==0)
printf("N ");
else
printf("%d ",A1);
if(tem==0)
printf("N ");
else
printf("%d ",A2);
if(A3==0)
printf("N ");
else
printf("%d ",A3);
if(A4==0)
printf("N ");
else
printf("%.1f ",A4/count);
if(A5==0)
printf("N");
else
printf("%d",A5);
return 0;
}