给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:
每个输入包含 1 个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数。数字间以空格分隔。
对给定的 N 个正整数,按题目要求计算 A?1??~A?5?? 并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。
若其中某一类数字不存在,则在相应位置输出 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
解题思路
1.用两组数组分别存储A1-A5的运算结果arr[5],以及判定结果是否存在的count[5] //如果没有单独判定结果是否存在,测试点8会失败
2.循环接收数字直到换行符为止,对接收到的每一个数字进行取余,对结果进行判定,符合A1-A5条件的数字,按照条件存入结果数组arr,并使count[i]++
3.因为第一个结果输出时候前面没有空格,对第一个结果单独输出
4.A4需要取浮点数,int要转换到float再进行输出
1 #include "stdio.h" 2 int main(){ 3 int arr[5]={0,0,0,0,0},n,i=0,temp,count[5]={0,0,0,0,0},N; 4 float ave; 5 scanf("%d",&N); 6 while(scanf("%d",&n)!=EOF){ 7 temp=n%5; 8 switch(temp){ 9 case 0:{if(n%2==0){ 10 arr[0]+=n; 11 count[0]++; 12 }break;} 13 case 1:{arr[1]=count[1]%2==0?arr[1]+n:arr[1]-n;count[1]++;break;} 14 case 2:{arr[2]++;count[2]++;break;} 15 case 3:{arr[3]+=n;count[3]++;break;} 16 case 4:{arr[4]=arr[4]>n?arr[4]:n;count[4]++;break;} 17 } 18 } 19 i=0; 20 if(count[i]==0){ 21 printf("N"); 22 }else{ 23 printf("%d",arr[0]); 24 } 25 for(i=1;i<5;i++){ 26 if(count[i]==0){ 27 printf(" N"); 28 }else{ 29 if(i==3){ 30 ave =(float )arr[i]/(float)count[3]; 31 printf(" %.1f",ave); 32 } 33 else{ 34 printf(" %d",arr[i]); 35 } 36 } 37 } 38 return 0; 39 }
PTA basic 1012 数字分类 (20 分) c语言实现(gcc)
原文:https://www.cnblogs.com/ichiha/p/14677600.html