输入一些整数,求出他们的最小值,最大值,平均值(保留三位小数)。保证输入数字不超过1000
方案一
#include <iostream>
using namespace std;
int main(int argc, char const *argv[])
{
int i = 0;
int max = 0;
int min = 0;
int sum = 0;
int n = 0;
while (scanf("%d", &i) == 1)
{
n++;
if (n == 1)
{
min = i;
max = i;
}
if (i > max)
max = i;
if (i < min)
min = i;
sum += i;
}
printf("最大值:%d,最小值 %d,平均值:%.3f", max, min, float(sum / n));
return 0;
}
弱点 单次循环输入,操作性太弱。并且程序结束出口繁琐。
方案二
#include <iostream>
using namespace std;
#define INF 100000000
int main(int argc, char const *argv[])
{
FILE *fin, *fout;
fin = fopen("data.in", "rb");
fout = fopen("data.out", "wb");
int x, n = 0, min = INF, max = -INF, s = 0;
while (fscanf(fin, "%d", &x) == 1)
{
s+=x;
if (x<min) min = x;
if (x>max) max = x;
n++;
}
fprintf(fout,"d% %d %.3f\n",min,max,(double)s/n);
fclose(fin);
fclose(fout);
return 0;
}