ACM文件测试数据及文件操作
来源:互联网 发布:spss软件怎么下载 编辑:程序博客网 时间:2024/06/05 03:34
一、文件测试数据
以前在做题时,遇到需要控制台输入数据的时候,总是从键盘一个一个敲进去,再一个个检查输出的是否正确。虽然当时也感觉效率太低了,但一直没想到还有解决办法。最近在看算法竞赛入门经典时,才发现可以用文件读入读出的方式检查程序。先上代码。
#include<cstdio>#include<math.h>#include<iostream>#include<algorithm>#include<cstring>#define LOCALusing namespace std;int main(){ #ifdef LOCAL freopen("data.in.txt","r",stdin); freopen("data.out.txt","w",stdout); #endif XXX return 0;}
其中,#ifdef和#endif中的代码块只有在本地运行时才会执行,并且接下来的输入都将从data.in中读入,最后结果输出到data.out文件中
需要注意的是:最后提交代码时,要把#define LOCAL删掉或者注释掉,这样就可以从控制台输入输出了
二、文件操作
这种方法用在比赛要求文件输入输出,同时又禁止用重定向方式(上述方式即为重定向方式)
#include<cstdio>#define INF 10000000000 using namespace std;int main(){ FILE *fin,*fout; fin=fopen("data.in.txt","rb"); fout=fopen("data.out.txt","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;}
相比于从控制台输入输出,只是把scanf改为fscanf,并且添加第一个参数fin;把printf改为fprintf,并且添加第一个参数fout。最后再关闭两个文件
三、重定向和fopen的比较
重定向虽然写起来简单,但是不能同时读写文件和标准输入输出;fopen可以反复打开并读写文件(想把fopen版的改为标准输入输出,只需要把fin=stdin;fout=stdout)
1 0
- ACM文件测试数据及文件操作
- ACM文件测试数据及文件操作
- ACM文件操作
- 测试数据文件的删除
- 文件夾及文件操作
- 文件及目录操作
- 文件及文件夹操作
- acm 头文件及宏定义
- C# 文件操作(文件夹 及 文件)
- matlab文件操作及读txt文件
- matlab文件操作及读txt文件
- matlab文件操作及读txt文件
- matlab文件操作及读txt文件
- PHP_文件操作及文件下载
- 【Android】文件读写及文件下载操作
- Matlab文件操作及读txt文件
- 17、C语言文件及文件操作
- Java--文件操作,删除文件及文件夹
- 第六周 项目六(1):复数模板类
- 关于手写验证码
- VS使用技巧
- 机器学习 Support Vector Machines 1
- 《c++ primer》整理
- ACM文件测试数据及文件操作
- yum的变量从哪里来?
- Android Continuous Integration
- Windows下C++实现编码转换(SDK、MFC)
- session和cookie使用说明
- php执行函数总结
- 去见你想见的人吧!
- requestWindowFeature(Window.FEATURE_NO_TITLE)
- 关于CSS中的*