题目:
输入一些整数, 求出它们的最小值, 最大值和平均值 (保留 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;
- }
来源: http://www.bubuko.com/infodetail-3357046.html