在练习刘汝佳的《算法竞赛入门经典》(P26)时,遇到这种问题:
(题目是为了输出几个数的最大值,最小值,平均值)
程序版本1:
//#define LOCAL
#include<stdio.h>
#define INF 1000000000
int main()
{
#ifdef LOCAL
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
#endif
int x,n,s=0,min=INF,max=-INF;
while(scanf("%d",&x)==1)
{
s+=x;
if(x<min)
min=x;
if(x>max)
max=x;
// printf("x=%d,min=%d,max=%d\n",x,min,max);
n++;
}
printf("%d %d %.3lf\n",min,max,(double)s/n);
return 0;
}
结果图:
程序版本2:
//#define LOCAL
#include<stdio.h>
#define INF 1000000000
int main()
{
#ifdef LOCAL
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
#endif
int x,n=0,min=INF,max=-INF,s=0;
while(scanf("%d",&x)==1)
{
s+=x;
if(x<min)
min=x;
if(x>max)
max=x;
// printf("x=%d,min=%d,max=%d\n",x,min,max);
n++;
}
printf("%d %d %.3lf\n",min,max,(double)s/n);
return 0;
}
结果图:
注意对比,知道为什么吗?HELP!