乐逍遥xwl

导航

1012 数字分类

给定一系列正整数,请按要求对数字进行分类,并输出以下 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 }

 

 

posted on 2019-01-01 14:21  乐逍遥xwl  阅读(188)  评论(0编辑  收藏  举报