题目
给定一系列正整数,请按要求对数字进行分类,并输出以下 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。
输入样例:
13 1 2 3 4 5 6 7 8 9 10 20 16 18
输出样例:
30 11 2 9.7 9
输入样例:
8 1 2 4 5 6 7 9 16
输出样例:
N 11 2 N 9
代码
#include<stdio.h>
int main()
{
int N,temp;
int sel[5]={0};
int a[5]={0};
scanf("%d",&N);
for(int i=0;i<N;i++){
scanf("%d",&temp);
if(temp % 5 == 0 ){
if( temp % 2 == 0){
a[0]+=temp;
sel[0]++;
}
}else if(temp % 5 == 1){
if(sel[1] % 2 == 0){
a[1]+=temp;
}else{
a[1]-=temp;
}
sel[1]++;
}else if(temp % 5 == 2){
sel[2]++;
}else if(temp % 5 == 3){
sel[3]++;
a[3]+=temp;
}else{
if(temp>a[4]){
a[4]=temp;
}
sel[4]++;
}
}
if(sel[0]==0){
printf("N ");
}else{
printf("%d ",a[0]);
}
if(sel[1]==0){
printf("N ");
}else{
printf("%d ",a[1]);
}
if(sel[2]==0){
printf("N ");
}else{
printf("%d ",sel[2]);
}
if(sel[3]==0){
printf("N ");
}else{
printf("%.1f ",(double)a[3]/sel[3]);
}
if(sel[4]==0){
printf("N");
}else{
printf("%d",a[4]);
}
return 0;
}
注意点:
1.小数点后一位要用“%.lf”
2.N是开始第一个值,temp是存放输入的值的用一次就ok不用储存
3.sel是记录每个条件的判别的情况的 sel++还可以记录判别后的个数
4.A2与A4的判定!