例题2-5 单组数据统计

输入一些整数,求出它们的最小值,最大值和平均值(保留3为小数)。输入保证着些数都是不超过1000的整数。

样例输入:

2 8 3 5 1 7 3 6

样例输出:

1 8 4.375

//数据统计单组数据(有bug未考虑最大值和最小值的初始值)
#include <stdio.h>
main() 
{
	int x,max=0,min=0,s,i=0;
	while(scanf("%d",&x))
	{
		s+=x;
		if(min>x)
		{
			min=x;
		}
		if(max<x)
		{
			max=x;
		}
		i++;
	} 
	printf("%d %d %lf",min,max,(double)s/i) ;
}
//数据统计单组数据(bug修复)
#define LOCAL 
#include <stdio.h>
#define INF 1000000000
main() 
{
	#ifdef LOCAL
	freopen("data1.txt","r",stdin);	
	freopen("data.txt","w",stdout);
	#endif
	int x,max=-INF,min=INF,s,i=0;
	while(scanf("%d",&x))
	{
		s+=x;
		if(min>x)
		{
			min=x;
		}
		if(max<x)
		{
			max=x;
		}
		i++;
	} 
	printf("%d %d %lf",min,max,(double)s/i) ;
}

重要知识点:

1、scanf("%d",&x)可以作为循环控制条件

while(scanf("%d",&x))

2、使用文件操作的格式如下:

	freopen("data1.txt","r",stdin);	
	freopen("data.txt","w",stdout);

需要注意的问题是:data1.txt和data.txt必须要和.exe.c在同一目录下(使用环境devc++ +windows)

3、输入结束标记:(1)先按enter;再按ctrl+z,在按enter(2)enter,再按ctrl+d,再按enter

4、关于文件重定向

#define LOCAL 
#include <stdio.h>
#define INF 1000000000
main() 
{
#ifdef LOCAL
freopen("data1.txt","r",stdin);
freopen("data.txt","w",stdout);

#endif

去掉#define LOCAL ,就可以实现手动输入

5、调试程序过程中遇到的实际问题

程序运行采用文件操作无法出现结果,在in文件或输入文件末尾加上EOF

猜你喜欢

转载自blog.csdn.net/weixin_27848283/article/details/80979511
2-5