【C語言版】1012 數字分類 (20分)

 

給定一系列正整數,請按要求對數字進行分類,並輸出以下 5 個數字:

  • A​1​​ = 能被 5 整除的數字中所有偶數的和;
  • A​2​​ = 將被 5 除後餘 1 的數字按給出順序進行交錯求和,即計算 n​1​​−n​2​​+n​3​​−n​4​​⋯;
  • A​3​​ = 被 5 除後餘 2 的數字的個數;
  • A​4​​ = 被 5 除後餘 3 的數字的平均數,精確到小數點後 1 位;
  • A​5​​ = 被 5 除後餘 4 的數字中最大數字。

輸入格式:

每個輸入包含 1 個測試用例。每個測試用例先給出一個不超過 1000 的正整數 N,隨後給出 N 個不超過 1000 的待分類的正整數。數字間以空格分隔。

輸出格式:

對給定的 N 個正整數,按題目要求計算 A​1​​~A​5​​ 並在一行中順序輸出。數字間以空格分隔,但行末不得有多餘空格。

若其中某一類數字不存在,則在相應位置輸出 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

【注】輸入樣例中的第一個數字是即將要輸入多少個數字

 

【參考代碼】

#include <stdio.h>
int main()
 {
  	int n,i=0,j=0,flag=1,count=0,t=0,array[1000],An[5];
  	char ch;

  	scanf("%d",&n);//輸入樣例中的第一個數字是即將要輸入多少個數字  
  	do 
  		{
  			scanf("%d",&array[j++]);
			  ch=getchar();	
		}
	while(ch!='\n');//共有j個數字 
	
	for(i=0;i<5;i++)
		An[i]=0;//初試化 0 

	for(i=0;i<j;i++) //數據處理 
		{
			if((array[i]%5)==0 && (array[i]%2)==0)//能被 5 整除的數字中所有偶數的和;
				An[0]+=array[i];
				
			if((array[i]%5)==1)//將被 5 除後餘 1 的數字按給出順序進行交錯求和
				{
					An[1]+=flag*array[i];
					flag=-flag;
					t++; //交錯求和 結果可能也爲0,後面判斷輸出用的 
				}
				
			if((array[i]%5)==2)//被 5 除後餘 2 的數字的個數;
				An[2]+=1;
					
			if((array[i]%5)==3)//被 5 除後餘 3 的數字的平均數,精確到小數點後 1 位;
				{
					An[3]+=array[i];
					count=count+1;//統計個數,平均值 輸出時處理 
				}
							
			if((array[i]%5)==4)//被 5 除後餘 4 的數字中最大數字。
				An[4] = (array[i]>An[4]) ? array[i]:An[4];//條件表達式:表達式1? 表達式2:表達式3 
		}
			
	//數據的輸出	
	if((An[0]==0)) printf("N ");
		else printf("%d ",An[0]);
		
	if(t==0) printf("N ");
		else printf("%d ",An[1]);
		
	if((An[2]==0)) printf("N ");
		else printf("%d ",An[2]);
		
	if((An[3]==0)) printf("N ");
		else printf("%.1lf ",(An[3]*1.0/count));
		
	if((An[4]==0)) printf("N");
		else printf("%d",An[4]);

    return 0;
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章