//数字分类:给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:
- A1 = 能被 5 整除的数字中所有偶数的和;
- A2 = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n1−n2+n3−n4⋯;
- A3 = 被 5 除后余 2 的数字的个数;
- A4 = 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;
- A5 = 被 5 除后余 4 的数字中最大数字。
#include<stdio.h>
int main()
{
int n, i, a[10]={0};
int num, count[10]={0};
scanf("%d", &n);
for (i=0; i<n; i++) {
scanf("%d", &num); //读入就处理就不用存在数组里了
if (num%5==0 && num%2==0) { //有时候PAT里面正整数会包括0
a[1]+=num;
count[1]++;
}else if (num%5==1) {
count[2]++;
if(count[2]%2==0) a[2]=a[2]-num;
else a[2]=a[2]+num; //既然不能用a[2]是否为0作为输出判断条件,就要考虑换一个判断条件
}else if (num%5==2) {
a[3]++;
count[3]++;
}
else if (num%5==3) {
a[4]+=num;
count[4]++;
}
else if (num%5==4 && num>=a[5]) {
a[5]=num;
count[5]++;
}
} //处理输入的数据
for (i=1; i<=3; i++) {
if (count[i]==0) printf("N ");
else printf("%d ", a[i]);
} //输出前三个数据
if (count[4]==0) printf("N ");
else printf("%.1f ",(double)a[4]/count[4]); //输出第四个数据
if (count[5]==0) printf("N");
else printf("%d", a[5]); //输出第五个数据
}
1、一个串数字一个一个的输入,并马上处理则不用存为数组,存为临时变量即可。
2、经常犯一个错误就是数组定义的不够大。
3、事实上用计数来判断是否进行过数据处理是最可靠的。