一、分析
1.输入格式
由题意分析知:、测试用例先给出一个不超过 1000 的正整数 N,可以作为一个数组长度。该数组即为随后给出 N 个不超过 1000 的待分类的正整数。
int n;//数组长度
do{
scanf("%d",&n);
}while(n > 1000);//不超过 1000 的正整数
int* a=new int[n];
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
if(a[i] > 1000) i--;//不超过 1000 的正整数
}
delete []a;
2.计算A1,A2,A3,A4,A5
int a1 = 0, a2 = 0,a3 = 0,a5 = 0;
float a4 = 0.0;
int index = 0,count =0;
for(int i=0;i<n;i++){
if(a[i] % 5 == 0 && a[i] % 2 == 0) a1 += a[i]; //`A1= 能被 5 整除的数字中所有偶数的和`
if(a[i] % 5 == 1) a2 += pow(-1,index++) * a[i];//A2=将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n1-n2+n3-n4+......
if(a[i] % 5 == 2) a3++; //A3= 被 5除后余 2 的数字的个数
if(a[i] % 5 == 3) {a4++;count++;} //A4=被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;
if(a[i] % 5 == 4) {if(a[i] > a5) a5 = a[i];} //A5=被 5 除后余 4 的数字中最大数字
}
if(count) a4/=count;//count为0时不能进行除法运算
3.输出格式:使用条件运算符?:
实现
<表达式1>?
<表达式2>:
<表达式3>
运算过程:先求表达式1的值,若其值不为0,则求出表达式2的值;否则求出表达式3的值
a1 ? printf("%d ",a1) : printf("N ");
index ? printf("%d ",a2) : printf("N ");//因为a2是交错相加,所以a2为0时,不代表它没有累加计算
a3 ? printf("%d ",a3) : printf("N ");
a4 ? printf("%.1f ",a4) : printf("N ");
a5 ? printf("%d",a5) : printf("N");
完整代码如下:
#include<math.h>
#include<iostream>
using namespace std;
int main(){
int n;
do{
scanf("%d",&n);
}while(n > 1000);
int* a=new int[n];
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
if(a[i] > 1000) i--;
}
int a1 = 0, a2 = 0,a3 = 0,a5 = 0;
float a4 = 0.0;
int index = 0,count =0;
for(int i=0;i<n;i++){
if(a[i] % 5 == 0 && a[i] % 2 == 0) a1 += a[i]; //`A1= 能被 5 整除的数字中所有偶数的和`
if(a[i] % 5 == 1) a2 += pow(-1,index++) * a[i];//A2=将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n1-n2+n3-n4+......
if(a[i] % 5 == 2) a3++; //A3= 被 5除后余 2 的数字的个数
if(a[i] % 5 == 3) {a4+=a[i];count++;} //A4=被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;
if(a[i] % 5 == 4) {if(a[i] > a5) a5 = a[i];} //A5=被 5 除后余 4 的数字中最大数字
}
if(count) a4/=count;//count为0时不能进行除法运算
//对给定的 N 个正整数,按题目要求计算A1~A5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。
//若分类之后某一类不存在数字,则在相应位置输出 N。
a1 ? printf("%d ",a1) : printf("N ");
index ? printf("%d ",a2) : printf("N ");
a3 ? printf("%d ",a3) : printf("N ");
a4 ? printf("%.1f ",a4) : printf("N ");
a5 ? printf("%d",a5) : printf("N");
delete []a;
return 0;
}