https://www.nowcoder.com/pat/6/problem/4078
给定一系列正整数,请按要求对数字进行分类,并输出以下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
#include<stdio.h>
#include<stdlib.h>
#define MAX(a,b) (a>b)?a:b
int main()
{
int sum=0,sum1=0,sum1_flag=1,num2=0,sum3=0,sum3_num=0,max4=0,num,data;
scanf("%d",&num);
for(;num>0;num--){
scanf("%d",&data);
switch(data%5){
case 0:
if(!(data%2))
sum+=data;
break;
case 1:
sum1+=sum1_flag*data;
sum1_flag*=-1;
break;
case 2:
num2++;
break;
case 3:
sum3+=data;
sum3_num++;
break;
case 4:
max4=MAX(max4,data);
break;
default :
break;
}
}
if(sum>0&&sum1>0&&num2>0&&sum3_num>0&&max4>0)
printf("%d %d %d %.1f %d\n",sum,sum1,num2,1.0*sum3/sum3_num,max4);
else{
if(sum!=0)
printf("%d ",sum);
else
printf("N ");
if(sum1!=0)
printf("%d ",sum1);
else
printf("N ");
if(num2!=0)
printf("%d ",num2);
else
printf("N ");
if(sum3!=0)
printf("%.1f ",1.0*sum3/sum3_num);
else
printf("N ");
if(max4!=0)
printf("%d",max4);
else
printf("N");
}
return 0;
}
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。