输入一些整数,求出它们的最小值,最大值和平均值(保留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