示例题目:
数据统计
输入一些整数,求出它们的最小值、最大值和平均值(保留3位小数)。输入保证这些书都是不超过1000的整数。
样例输入:
2 8 3 5 1 7 3 6
样例输出:
1 8 4.375
1.使用输入输出重定向的方式
#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("x = %d, min= %d, max= %d\n",x,min,max); */ n++; } printf("%d %d %.3f\n", min,max,(double)s/n); return 0; } //重定向版本
如果比赛要求用文件输入输出,但禁止用重定向的方式,又当如何呢?
#include<stdio.h> #define INF 100000000 int main() { FILE *fin,*fout; fin = fopen("data.in","rb"); fout = fopen("data.out","wb"); int x,n=0,min = INF,max=-INF,s=0; while(fscanf(fin,"%d",&x)==1){ s += x; if(x<min) min=x; if(x>max) max = x; n++; } fprintf(fout,"%d %d %.3f\n",min,max,(double)s/n); fclose(fin); fclose(fout); return 0; } //如果比赛要求用文件输入输出,但禁止用重定向方式,可以如上的fopen方式