題目:
給定一系列正整數,請按要求對數字進行分類,並輸出以下 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<iostream>
using namespace std;
int main(){
int a1=0,a2=0,a3=0,a5=0;
float a4=0;
int now,flag[5]={0};
cin>>now;
while(cin>>now){
int left=now%5;
switch (left){
case 0:
if(now%2==0)
{
a1+=now;
flag[left]++;
}
break;
case 1:
if(flag[left]%2==0)
a2+=now;
else
a2-=now;
flag[left]++;
break;
case 2:
a3++;
flag[left]++;
break;
case 3:
a4+=now;
flag[left]++;
break;
case 4:
if(now>a5)
a5=now;
flag[left]++;
break;
}
if(getchar()=='\n')
break;
}
float a44=a4/float(flag[3]);
if(flag[0]!=0)
cout<<a1<<" ";
else
cout<<"N ";
if(flag[1]!=0)
cout<<a2<<" ";
else
cout<<"N ";
if(flag[2]!=0)
cout<<a3<<" ";
else
cout<<"N ";
if(flag[3]>1){
printf("%.1f",a44); //c++浮點數輸出方法
cout<<" ";
}
else
cout<<"N ";
if(flag[4]!=0)
cout<<a5;
else
cout<<"N";
}
要點:
1、printf("%.1f",a44); //c++浮點數輸出方法
2、分別對輸入處理 :while(cin>>now){ //操作 }
3、如果很多答案錯誤:有可能是沒注意第一個輸入是後續輸入的數字個數,而不是處理的數據。