1.题目描述:
给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和; A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...; A3 = 被5除后余2的数字的个数; A4 = 被5除后余3的数字的平均数,精确到小数点后1位; A5 = 被5除后余4的数字中最大数字。 输入格式: 每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N,随后给出N个不超过1000的待分类的正整数。数字间以空格分隔。 输出格式: 对给定的N个正整数,按题目要求计算A1~A5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。 若其中某一类数字不存在,则在相应位置输出“N”。 输入样例1: 13 1 2 3 4 5 6 7 8 9 10 20 16 18 输出样例1: 30 11 2 9.7 9 输入样例2: 8 1 2 4 5 6 7 9 16 输出样例2: N 11 2 N 9
2.解题思路:
边输入边处理,记录两种数据,一个是该类型数的个数,一个是题目要求。
3.代码部分:
//count数组作为记录是否有满足对应条件的数存在;
#include<stdio.h>
int main()
{
int i,tem,jem=1,choice,count[5]={0},max,a[5]={0};
scanf("%d",&max);
for(i=0;i<max;i++)
{
scanf("%d",&tem);
choice=tem%5;
switch(choice)
{
case 0 : if(tem%2==0) {a[0]+=tem,count[0]++;} break;
case 1 : a[1]+=jem*tem;jem=-jem;count[1]++; break;
case 2 : a[2]++;count[2]++; break;
case 3 : a[3]+=tem;count[3]++; break;
case 4 : if(tem>a[4]) a[4]=tem; count[4]++; break;
default :break;
}
}
//打印出A1-A5,A3区别打印出来
for(i=0;i<5;i++)
{
if(i>0)
printf(" ");
if(count[i]!=0)
{
if(i==3)
printf("%.1lf",(double)a[3]/count[3]);
else
printf("%d",a[i]);
}
else
printf("N");
}
return 0;
}