『算法学习笔记』11th day. 文件操作<2>
来源:互联网 发布:一致性哈希算法php 编辑:程序博客网 时间:2024/06/05 05:32
例题2-4 数据统计(续)
输入一些整数,求出它们的最小值,最大值和平均值(保留3位小数)。输入保证这些数都是不超过1000整数。
自己增加一个输出和的功能 这样平时可以用来记分。
并不是所有比赛都允许用重定向方式访问文件。
比赛前需要了解文件读写的相关规定:是标准输入输出(也就是标准I/O),还是文件输入输出?如果是文件输入输出,是否禁止用重定向方式访问文件?
如果比赛要求用文件输入输出,但是禁止使用重定向方式。
1 #include<stdio.h> 2 #define INF 1000000000 3 int main() 4 { 5 FILE *fin, *fout; 6 fin=fopen("exa2-4.data.in","rb"); 7 fout=fopen("exa2-4.data.out","wb"); 8 int x, n =0, min =INF, max =-INF, s=0; 9 while(fscanf(fin,"%d",&x)==1) 10 { 11 s+=x; 12 if(min>x)min=x; 13 else if(max<x)max=x; 14 n++; 15 } 16 17 fprintf(fout, "%d %d %.3lf\n",min,max,(double)s/n ); 18 fclose(fin); 19 fclose(fout); 20 return 0; 21 }~
对比之前的重定向程序,代码如下:
1 #include<stdio.h> 2 #define INF 1000000000 3 int main() 4 { 5 #ifdef LOCAL 6 freopen("exa2-4.data.in","r",stdin); 7 freopen("exa2-4.data.out","w",stdout); 8 #endif 9 int x, n =0, min =INF, max =-INF, s=0; 10 while(scanf("%d",&x)==1) 11 { 12 s+=x; 13 if(min>x)min=x; 14 else if(max<x)max=x; 15 n++; 16 } 17 18 printf("%d %d %.3lf\n",min,max,(double)s/n ); 19 return 0; 20 }~
可看到一些直观的改变,已用红色标明。
重定向和fopen方法各有优劣。重定向的方法写起来简单,但是不能同时读写文件和标准输入输出;fopen写法比较繁琐,但是灵活性好(可以反复打开并读写文件)。
输出技巧 编号q2-1
1 #include<stdio.h> 2 int main() 3 { 4 int i, n; 5 scanf("%d", &n); 6 for(i=1;i<=n;i++) 7 printf("%d\n",i); 8 return 0; 9 }
为了输出2,4,6,8...2n, 每个一行。试通过修改下列程序来实现
任务1修改第7行,不修改第6行
显然应该改为 printf("%d\n",2*i);
任务2 修改第6行, 不修改第7行
改为 for(i=2;i<=2*n;i+=2)
浮点数陷阱 编号q2-2
运行下面的程序,看看结果是不是和想象的一样。
1 #include<stdio.h>
2 int main()
3 {
4 double i;
5 for(i=0;i!=10;i+=0.1)
6 printf("%.1lf\n",i);
7 return 0;
8 }
果然。。。 很震惊! ---> 我必须专门花一天学习时间研究清楚浮点数问题,否则这家伙以后会很麻烦!
0 0
- 『算法学习笔记』11th day. 文件操作<2>
- 『算法学习笔记』10th day. 文件操作<1>
- 『算法学习笔记』24th day. 字符数组
- 『算法学习笔记』4th -8th day. 10道习题 & 常用数学函数
- 『算法学习笔记』23th-24th day. 数组
- 『算法学习笔记』9th day. 循环结构 & 计时器函数的使用
- 『算法学习笔记』13-15th day. 10道习题
- 『算法学习笔记』2nd day. 分支程序设计
- 『算法学习笔记』3rd day. 数据类型实验
- 算法第四版Algorethms 4th学习笔记(2)
- 『算法学习笔记』1st day. 顺序结构程序设计
- UE4学习笔记11th
- Flex学习笔记(Day 2)
- UE4学习笔记4th:编程和绑定游戏操作
- day 030 文件操作
- 算法第四版Algorethms 4th学习笔记(1)
- [学习笔记] 文件操作
- Perl语言学习笔记 day 2
- jquery扩展函数详解
- Media Foundation学习笔记(六)Media Foundation的架构 Media Session
- DOM加载——缓解图片,影音加载慢影响内容显示
- CMake find_package for OpenCV
- 控制输出精度
- 『算法学习笔记』11th day. 文件操作<2>
- 执行计划中各个字段的含义描述及获取方法
- 线程同步
- Mysql 多个子查询 多个LEFT JOIN 视图创建
- 数据结构 -- 二叉树中序遍历
- tomcat加载web.xml
- HDU 1271
- 创业型团队需要的云计算
- 有趣的linux命令