17. 数据统计2
题目:
输入一些整数,求出它们的最小值,最大值和平均值(保留3位小数),输入保证这些数都是不超过1000的整数。
输入包含多组数据,每组数据第一行是整数个数 n ,第二行是 n 个整数。 n = 0 为输入结束标记,程序应当忽略这组数据。相邻两组数据之间应输出一个空行。
样例输入:
8
2 8 3 5 1 7 3 6
4
-4 6 10 0
0
样例输出:
Case 1:1 8 4.375
Case 2:-4 10 3.000
思路:
这一题与上一题的核心几乎一样,但是多了一些细节处理。
第一,要读入多组数据,并且每组数据都会给出数量。用变量 n 来记录数据数量,然后循环读入每个数据,按照步骤计算即可。
第二,要输出数据编号,于是使用一个数据编号计数器,在每一组有效数据读入后,就进行累加。
代码:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
const int INF = 100000000;
int n = 0, cnt = 0;
cin >> n;
while (n) {
++cnt;
int term = 0;
int max_val = -INF, min_val = INF;
int sum = 0;
for (int i = 0; i < n; ++i) {
cin >> term;
sum += term;
if (term > max_val) {
max_val = term;
}
if (term < min_val) {
min_val = term;
}
}
double average = static_cast<double>(sum) / n;
cout << "Case " << cnt << ": " << min_val << " " << max_val << " ";
cout << setprecision(3) << fixed << average << endl;
cin >> n;
}
return 0;
}