Codeup-数字分类 (20)
作者:互联网
题目描述
给定一系列正整数,请按要求对数字进行分类,并输出以下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
8 1 2 4 5 6 7 9 16
样例输出
30 11 2 9.7 9
N 11 2 N 9
刚拿到这题,就是觉得有点麻烦,但是做起来很简单,但是提交到了第6次才正确,反复找原因,最后还是对题目的分析不准确,我起初是采用sum1,sum2,sum3,sum4和maxn来统计和,但是对于sum3,sum4和maxn,他们如果存在,一定是大于0的值,所以可以采用是否大于0来判断是否存在,但是对于sum1和sum2来说,存在着等于0的情况,比如对于sum1,0便是符合条件的,对于sum2,如果只输入两个数且相同,则结果为0,但是也是存在的,所以要额外设置两个标志来记录存在的个数。以后想题目还是要严谨呀!!
代码:
#include <cstdio>
int main()
{
int n,i,x;
while(scanf("%d",&n)!=EOF)
{
int sign=1;
int sum1=0,sum2=0,sum3=0,maxn=0,temp=0;
int temp1=0,temp2=0;
double sum4=0;
for(i=0;i<n;i++)
{
scanf("%d",&x);
if(x%5==0)
{
if(x%2==0)
{
sum1+=x;
temp1++;
}
}
else if(x%5==1)
{
sum2+=x*sign;
sign=-sign;
temp2++;
}
else if(x%5==2)
{
sum3++;
}
else if(x%5==3)
{
sum4+=x;
temp++;
}
else if(x%5==4)
{
if(x>maxn)
maxn=x;
}
}
if(temp1>0)
printf("%d ",sum1);
else
printf("N ");
if(temp2>0)
printf("%d ",sum2);
else
printf("N ");
if(sum3>0)
printf("%d ",sum3);
else
printf("N ");
if(sum4>0)
printf("%.1f ",sum4/temp);
else
printf("N ");
if(maxn>0)
printf("%d\n",maxn);
else
printf("N\n");
}
return 0;
}
标签:sum4,20,数字,分类,sum3,sum2,maxn,Codeup,printf 来源: https://blog.csdn.net/Zizizi9898/article/details/88778351