输入一些整数,求出他们的最小值最大值平均值(保留三位小数)。输入保证这些数都是不超过1000的整数。
输入包含多组数据,每组数据第一行是整数个数n,第二行是n个整数。n=0为输入结束标记,程序应当忽略这组数据。相邻两组数据之间应输出一个空行。
样例输入:
8
2 8 3 5 1 7 3 6
4
-4 6 10 0
1
0
样例输出:
Case1: 1 8 4.375
Case2:-4 10 3.000
Case3: 0 0 0.000
代码:
#include<stdio.h>
#define INF 1000000000
int main()
{
int x, n = 0, min = INF, max = -INF, s = 0, kase = 0;
//x记录每组数据,n记录组数,
//min,max,s记下每组数据的最小值,最大值,和
//kase标志变量记下组数
//定义常量INF:变量在未赋值之前的值是不确定的
//min保存的是很小的值其初值应该是一个很大的常数,max保存的是很大的值其初值应该是一个很小的常数
while (scanf("%d", &n) == 1 && n)
//scanf无法再读取时将返回0
{
int s = 0;
min = INF; max = -INF;
//多组数据的题目一定要重置数据
//当嵌套的两个代码中有同名变量时,内层变量会屏蔽外层变量
for (int i = 0; i < n; i++) {
scanf("%d", &x);
//输入每组数据,数据无需保存故不用数组
s += x;//求和
if (x < min)min = x;//求每组数据中的最值
if (x > max)max = x;
}
if (kase)printf("\n");//输出完一组数据后换行
printf("Case %d:%d %d %.3lf\n", ++kase, min, max, (double)s / n);
}
return 0;
}