之前一直忙着准备3月18号的PAT乙级考试,所以CSDN博客一直没有更新,现在把做过的真题代码贴出来一下。
这是数字分类题,题目描述大致是这样的:
在一行中先输入一个正整数N,随后给出N个不超过1000的正整数,要分成如下的数字:
A1:能被5整除的数字中所有偶数的和;
A2:能被5整除后余1的数字交错求和,eg.n1-n2+n3-n4...;
A3:被5除后余2的数字个数;
A4:被5除后余3数字的平均数,精确到小数点后面1位;
A5:被5除后余4的数字中的最大数字
输出A1~A5,空格分隔,如果Ai(i=1~5)数字不存在输入N
题目要求的输入输出如下:
实际运行结果如下:
代码如下:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int n, num;
while (cin >> n)
{
getchar();
if (n > 1000)
{
return -1;
}
int A1 = 0, A2 = 0, A3 = 0, A4 = 0, A5 = 0;
int A22 = 0;//奇偶计数器
int A44 = 0;//计算平均数计数器
for (int i = 0; i < n; i++)
{
cin >> num;
getchar();
//A1是10的倍数
if (num % 10 == 0)
{
A1 += num;
}
//A2+num1-num2+num3...
if (num % 5 == 1)
{
A22++;
if (A22 % 2 == 1)
{
A2 += num;
}
else
{
A2 -= num;
}
}
//A3
if (num % 5 == 2)
{
A3++;
}
//A4
if (num % 5 == 3)
{
A4 += num;
A44++;
}
//A5
if (num % 5 == 4)
{
if (num > A5)
{
A5 = num;
}
}
}
if (A1)
{
cout << A1 <<" ";
}
else
{
cout << "N ";
}
if (A2)
{
cout << A2 << " ";
}
else
{
cout << "N ";
}
if (A3)
{
cout << A3 << " ";
}
else
{
cout << "N ";
}
if (A44)
{
float a = (float)A4 / A44;
cout.setf(ios::fixed);
cout << fixed << setprecision(1) << a << " ";
}
else
{
cout << "N ";
}
if (A5)
{
cout << A5 << endl;
}
else
{
cout << "N" << endl;
}
}
return 0;
}