因为没有分清有效数字和小数点而错误了很久
头文件<iomanip>中
cout << setprecision(1) << num ; //有效数字1位
cout << setiosflags(ios::fixed) << setprecision(1) << num ; //精确到小数点后1位
setprecision() 控制浮点数输出的位数
setiosflags(ios::fixed)表示 用定点的方式表示实数
合用后表示精确到小数点几位
给定一系列正整数,请按要求对数字进行分类,并输出以下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
-
#include<iostream> #include <iomanip> using namespace std; int main() { int n; cin >> n; int *num = new int[n]; int a1 = 0, a2 = 0, a3 = 0, a5 = 0, a4c = 0, a2f = 1; double a4 = 0; bool f2 = 0; for (int i = 0; i < n; i++) { cin >> num[i]; if (num[i] % 10 == 0) a1 += num[i]; if (num[i] % 5 == 1) { f2 = 1; a2+=num[i]*a2f; a2f=-a2f; } if (num[i] % 5 == 2) a3++; if (num[i] % 5 == 3) { a4 += num[i]; a4c++; } if (num[i] % 5 == 4) a5 = a5 > num[i] ? a5 : num[i]; } if (a1 == 0) cout << "N "; else cout << a1 << " "; if (f2 == 0) cout << "N "; else cout << a2 << " "; if (a3 == 0) cout << "N "; else cout << a3 << " "; if (a4c == 0) cout << "N "; else { a4 = a4 / a4c; cout << setiosflags(ios::fixed) << setprecision(1) << a4 << " "; } if (a5 == 0) cout << "N"; else cout << a5 ; return 0; }