1012 数字分类
1. 题目描述及在线测试位置
1.1 按题目要求进行数字分类
1.2 在线测试位置:PAT1012 数字分类
2. 具体实现
2.1 基本思路
1.按要求编写代码即可
2.对于输出要求 “若其中某一类数字不存在,则在相应位置输出 N”,这里的N是字符’N’
2.2 AC代码
#include <iostream>
using namespace std;
#define max 1000
void Func1(int a[], int N);
void Func2(int a[], int N);
void Func3(int a[], int N);
void Func4(int a[], int N);
void Func5(int a[], int N);
int main()
{
int N;
int a[max];
//cin >> N;
scanf("%d", &N);
for (int i = 0; i < N; i++)
scanf("%d", &a[i]);//cin >> a[i];
Func1(a, N);
Func2(a, N);
Func3(a, N);
Func4(a, N);
Func5(a, N);
return 0;
}
void Func5(int a[], int N) //被 5 除后余 4 的数字中最大数字
{
int MaxNumber = 0;
for (int i = 0; i < N; i++)
{
if (a[i] % 5 == 4)
if (a[i] > MaxNumber)
MaxNumber = a[i];
}
if (MaxNumber)
printf(" %d", MaxNumber);
else
printf(" %s", "N");
}
void Func4(int a[], int N)//被 5 除后余 3 的数字的平均数,精确到小数点后 1 位
{
float average = 0;
int sum = 0, count = 0;
for (int i = 0; i < N; i++)
{
if (a[i] % 5 == 3)
{
count++;
sum += a[i];
}
}
average = (float)sum / count;
if(count)
printf(" %.1f", average);
else
printf(" %s", "N");
}
void Func3(int a[], int N)// 被 5 除后余 2 的数字的个数
{
int count = 0;
for (int i = 0; i < N; i++)
{
if (a[i] % 5 == 2)
count++;
}
if(count)
printf(" %d", count);
else
printf(" %s", "N");
}
void Func2(int a[], int N)//将被 5 除后余 1 的数字按给出顺序进行交错求和,n1-n2+n3
{
int sum = 0; bool flag = true; bool mark = false;
for (int i = 0; i < N; i++)
{
if (a[i] % 5 == 1)
{
mark = true;
if (flag)
{
sum += a[i];
flag = false;
}
else
{
sum -= a[i];
flag = true;
}
}
}
if(mark)
printf(" %d", sum);
else
printf(" %s", "N");
}
void Func1(int a[], int N) // 能被 5 整除的数字中所有偶数的和
{
int sum = 0;
for (int i = 0; i < N; i++)
{
if (!(a[i] % 5) && !(a[i] % 2))
sum += a[i];
}
if (sum)
printf("%d", sum);
else
printf("%s", "N");
}