本题无甚难度,也不是什么好题,只是刚学一周c++试下手
笔记:<iomanip>库中 cout << setiosflags(ios::fixed) << setprecision(1) << average;连用可控制浮点小数位数,只对average有效,且average后不可以再接"<<"!
#include <cstddef>//size_t定义
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int a[5] = { 0 };
int n = 0, integer = 0, sc = 0, flag = 1,count=0;
bool zero = true;
double average = 0;
cin >> n;
for (size_t i = 0;i != n;++i)
{
cin >> integer;
sc = integer % 5;
switch (sc)//switch-case比if-else更美观,效率更高!
{
case 0:
if (integer % 2 == 0)
a[0]+=integer;
break;
case 1:
zero = false;/*因为存在和恰好为零的情况,所以只有zero == true时才可以认定被 5 除后余 1 的数字不存在!*/
a[1]+= flag * integer;
flag *= -1;
break;
case 2:
++a[2];
break;
case 3:
a[3] += integer;
++count;
break;
case 4:
if (integer > a[4])
a[4] = integer;
break;
}
}
average = a[3] / static_cast<double>(count);//A1和A4使这道题变的丑陋!!!
if (a[0] != 0)
cout << a[0]<<' ';
else
cout << "N ";
if (false == zero)
cout << a[1]<<' ';
else
cout << "N ";
if (a[2] != 0)
cout << a[2] << ' ';
else
cout << "N ";
if (a[3] != 0)
{
cout << setiosflags(ios::fixed) << setprecision(1) << average;
cout << ' ';
}
else
cout << "N ";
if (a[4] != 0)
cout << a[4] ;
else
cout << "N";
return 0;
}
为什么c++标准委员会会加入setiosflags和setprecision这么又臭又长的名称....
看了下题解,我写的是什么垃圾。。。
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, num, A1 = 0, A2 = 0, A5 = 0;
double A4 = 0.0;
cin >> n;
vector<int> v[5];
for (int i = 0; i < n; i++) {
cin >> num;
v[num%5].push_back(num);
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < v[i].size(); j++) {
if (i == 0 && v[i][j] % 2 == 0) A1 += v[i][j];
if (i == 1 && j % 2 == 0) A2 += v[i][j];
if (i == 1 && j % 2 == 1) A2 -= v[i][j];
if (i == 3) A4 += v[i][j];
if (i == 4 && v[i][j] > A5) A5 = v[i][j];
}
}
for (int i = 0; i < 5; i++) {
if (i != 0) printf(" ");
if (i == 0 && A1 == 0 || i != 0 && v[i].size() == 0) {
printf("N"); continue;
}
if (i == 0) printf("%d", A1);
if (i == 1) printf("%d", A2);
if (i == 2) printf("%d", v[2].size());
if (i == 3) printf("%.1f", A4 / v[3].size());
if (i == 4) printf("%d", A5);
}
return 0; } 12345678