给定一系列正整数,请按要求对数字进行分类,并输出以下 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
思路:看起来挺复杂,但是可以把问题模块化,写五个函数解决,让代码显得简洁明了......
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<string.h>
4 #include<math.h>
5 int find1(int num[],int N);
6 int find2(int num[],int N);
7 int find3(int num[],int N);
8 int find4(int num[],int N);
9 int find5(int num[],int N);
10 int main()
11 {
12 int N;
13 scanf("%d",&N);
14 int num[N];
15 for(int i=0;i<N;i++)
16 scanf("%d",&num[i]);
17 find1(num,N);
18 find2(num,N);
19 find3(num,N);
20 find4(num,N);
21 find5(num,N);
22 return 0;
23 }
24 int find1(int num[],int N)
25 {
26 int sum=0;
27 for(int i=0;i<N;i++)
28 {
29 if(num[i]%5==0&&num[i]%2==0)
30 sum=sum+num[i];
31 }
32 if(sum==0)
33 printf("N ");
34 else
35 printf("%d ",sum);
36 }
37 int find2(int num[],int N)
38 {
39 int t=0,T=0;
40 int sum=0;
41 for(int i=0;i<N;i++)
42 {
43 if(num[i]%5==1)
44 {
45 sum=sum+num[i]*pow(-1,t);
46 t++;
47 }
48 else
49 T++;
50 }
51 if(T==N)
52 printf("N ");
53 else
54 printf("%d ",sum);
55 }
56 int find3(int num[],int N)
57 {
58 int t=0;
59 for(int i=0;i<N;i++)
60 {
61 if(num[i]%5==2)
62 t++;
63 }
64 if(t==0)
65 printf("N ");
66 else
67 printf("%d ",t);
68 }
69 int find4(int num[],int N)
70 {
71 int t=0;
72 float average,sum=0;
73 for(int i=0;i<N;i++)
74 {
75 if(num[i]%5==3)
76 {
77 sum=sum+num[i];
78 t++;
79 }
80 }
81 if(t==0)
82 printf("N ");
83 else
84 {
85 average=sum/t;
86 printf("%.1f ",average);
87 }
88 }
89 int find5(int num[],int N)
90 {
91 int max=-1,t=0;
92 for(int i=0;i<N;i++)
93 {
94 if(num[i]%5==4)
95 {
96 if(num[i]>=max)
97 max=num[i];
98 t++;
99 }
100 }
101 if(t==0)
102 printf("N");
103 else
104 printf("%d",max);
105 }