給定一系列正整數,請按要求對數字進行分類,並輸出以下 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
【注】輸入樣例中的第一個數字是即將要輸入多少個數字
【參考代碼】
#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;
}