重定向版
#include <stdio.h>
#define LOCAL
#define INF 1000000
int main()
{
#ifdef LOCAL //只有定义了符号LOCAL才可以编译#ifdef 至#endif之间的语句
freopen("D:\\input.txt","r",stdin);//文件读入 输入重定向
freopen("D:\\output.txt","w",stdout);//文件写入 输出重定向
#endif
int x ;
int n = 0;
int sum = 0 ;
int max = -INF; //一个极小的值
int min = INF; //一个极大的值
while ( scanf("%d",&x) == 1)
{
sum+= x;
if ( x> max ) max = x;
if( x< min ) min = x;
n++;
printf("%d\n",min);
}
printf("%d %d %.3f \n", min ,max ,(double) sum/n);
return 0;
}
重定义的部分被定义在#ifdef和#endif中,其含义为:只有定义了LOCAL,才能编译这两个之间的freopen语句,这就很方便了(竞赛中方便检查),当然也可删除LOCAL长定义,可以直接改成标准输入输出。有趣
fopen版
#include <stdio.h>
#define INF 1000000
int main()
{
FILE *fin, *fout;
fin = fopen("D:\\input.txt", "rb");
fout = fopen("D:\\output.txt", "wb" );
int x ;
int n = 0;
int sum = 0 ;
int max = -INF; //一个极小的值
int min = INF; //一个极大的值
while ( fscanf( fin ,"%d",&x) == 1)
{
sum+= x;
if ( x> max ) max = x;
if( x< min ) min = x;
n++;
}
fprintf( fout , "%d %d %.3f \n", min ,max ,(double) sum/n);
fclose(fin); //关闭文件
fclose(fout);
return 0;
}
划重点:除了
FILE *fin, *fout;
fin = fopen("D:\\input.txt", "rb");
fout = fopen("D:\\output.txt", "wb" );
还要改变输入输出函数,相较于麻烦,稍显繁琐,但可以反复打开并读写文件,这是重定向版,可望不可即滴,嘿嘿
同理,改为标准输入输出只需,改变 fin fout的 赋值,即改变语句为 fin = stdin;fout = stdout;
2022年1月18日16:05:55