1012 数字分类 (20 分)
给定一系列正整数,请按要求对数字进行分类,并输出以下 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
解题思路:
划重点!!题多读几遍其意自现!!!
先给出共有N个数,再分别给出N个数字,这里可以用循环N个数来读取;
A1 = 能被 5 整除的数字中所有偶数的和;
//可以a%5==0 && a%2==0或者a==0;A2 = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n1−n2+n3−n4⋯;
//先定义一个i=1,再 i%2==0来实现对所得到的数字中筛选出偶数来进行操作,最后再 i++,来实现筛选序列中奇数偶数的变化;A3 = 被 5 除后余 2 的数字的个数;A4 = 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;
//注意求平均数的时候(double)sum/count;强制类型转换来实现 int / int没有小数位的情况;A5 = 被 5 除后余 4 的数字中最大数字。
//令a5=0或者一个更小的数字,if(a>a5)则a5=a;来实现取最大值;
程序源码:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int n,a;
int a1_sum=0,a2=1,a2_sum=0,a5=0,a4_sum=0,a4_count=0;
double a4=0.0;
int a1_c=0,a2_c=0,a3_c=0,a4_c=0;
cin>>n;
while(n--)
{
cin>>a;
if(a%5==0 && a%2==0)//A1 能被5整除的数字中所有偶数的和
{
a1_sum=a1_sum+a;
a1_c++;
}
else if(a%5==1) //A2 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...
{
if(a2%2==0) //注意点① 偶数位取反值
{
a2_sum=a2_sum-a;
}
else
{
a2_sum = a2_sum + a;
}
a2++;
a2_c++;
}
else if(a%5==2) //A3 被5除后余2的数字的个数
{
a3_c++;
}
else if(a%5==3) //A4 被5除后余3的数字的平均数,精确到小数点后1位
{
a4_sum=a4_sum+a;
a4_count++;
a4=(double)a4_sum/a4_count;
a4_c++;
}
else if(a%5==4) //A5 被5除后余4的数字中最大数字
{
if(a>a5)
{
a5=a;
}
}
}
//输出格式:对给定的N个正整数,按题目要求计算A1-A5并在一行中顺序输出,数字间以空格分隔,但行末不得有多余空格;
//若其中某一类数字不存在,则在相应位置输出N
if(a1_c==0)
{
cout<<"N ";
}
else //用else不用else if
{
cout<<a1_sum<<" ";
}
if(a2_c==0)
{
cout<<"N ";
}
else
{
cout<<a2_sum<<" ";
}
if(a3_c==0)
{
cout<<"N ";
}
else
{
cout<<a3_c<<" ";
}
if(a4_c==0)
{
cout<<"N ";
}
else
{
cout<<fixed<<setprecision(1)<<a4<<" ";
}
if(a5 ==0)
{
cout<<"N";
}
else
{
cout<<a5;
}
return 0;
}
反思总结:
常规题目注意细节! 最后一位输出后面不应该有空格!
cout<<fixed<<setprecision(1)<<a4 ;来实现对小数点后 1 位精度的输出
或者out<<setiosflags(ios::fixed)<<setprecision(1)<<a4; 并且要加上头文件 #include<iomanip>