#define LOCAL
#include <stdio.h>
#define INF 100000000
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("%d %d %.3f\n",min,max,(double)s/n);
n++;
}
printf("%d %d %.3lf\n",max,min,(double)s/n);
return 0;
}
注意1是重定向的部分被写在了#ifdef和#endif中,它的含义是:只有定义了符号LOCAL,才编译两条freopen语句
2输出中间结果的printf语句卸载了主食中———它在最后版本的程序中不应该出现,将它注释化:防止发现新的漏洞
3如果本机用重定向文件,但是比赛要求读写标准输入输出,秩序在提交之前删除#define LOCAL即可
优化:是在编译选项而不是程序里定义这个LOCAL符号,这样提交之前不需要修改程序,进一步降低了出错的可能