[ACM训练] ACM中巧用文件的输入输出来改写acm程序的输入输出 + ACM中八大输入输出格式...
ACM中巧用文件的输入输出来改写acm程序的输入输出
经常有见大神们使用文件来代替ACM程序中的IO,尤其是当程序IO比较复杂时,可以使自己能够更专注于代码的测试,而不是怎样敲输入。
C/C++代码中:
使用 stdio.h 中包含的另一个函数freopen函数
FILE * freopen ( const char * filename, const char * mode, FILE * stream );
文件名,打开的模式,文件指针,通常使用标准流文件(stdin/stdout/stderr)
因为文件指针使用的是标准流文件,因此我们可以不定义文件指针。
freopen("data.in", "r", stdin); //使用freopen()函数以只读方式r(read)打开输入文件data.in
freopen("data.out", "w", stdout); //使用freopen()函数以写入方式w(write)打开输出文件data.out
这样我们就不再需要修改scanf和printf,因为freopen()函数重定向了标准流,使其指向前面指定的文件。
最后只要使用fclose关闭输入文件和输出文件即可。
fclose(stdin);
fclose(stdout);
若要恢复句柄,可以重新打开标准控制台设备文件,只是这个设备文件的名字是与操作系统相关的。
DOS/Win:freopen("CON", "r", stdin);
Linux: freopen("/dev/console", "r", stdin);
//在程序目录下建立两个文件,data.in和data.out文件
1 #include <stdio.h> 2 3 int main() 4 { 5 freopen("data.in", "r", stdin); 6 //freopen("data.out", "w", stdout); 7 /* 中间按原样写代码,什么都不用修改 */ 8 9 10 11 12 fclose(stdin); 13 //fclose(stdout); 14 return 0; 15 }
//提交代码时只需要注释掉这四句话即可。
而针对于C++的版本则可以这么来写:
1 #include <fstream> 2 streambuf *backup= cin.rdbuf(); //备份标准输入 3 ifstream fin; 4 fin.open("data.in"); 5 cin.rdbuf(fin.rdbuf()); 6 // ... cin will read from file 7 8 9 10 11 cin.rdbuf(backup); // restore cin's original streambuf
不过此版本的代码不如上面的C版本的代码简洁,推荐使用C版本的代码!
最近也常使用Python来写一些在线编程的题目,这里也对应总结一下在Python中的处理方法:
pass
其实针对这里的重定向的意义在于方便对程序的输入做一个处理,故而只需要处理输入即可,输出直接输出到控制台上看起来更为直观。
下面对ACM中的相关输入输出格式做一个总结:
最常见的输入输出个是大致有八种:
1、有多组输入数据,但没有具体的告诉你有多少组,只是让你对应每组输入,应该怎样输出
C/C++中的处理情况 | Python中的处理情况 |
1 while(cin>>a>>b) 2 { 3 //处理; 4 } |
1 while True: 2 try: 3 a, b = map(int, raw_input().strip().split())#这里将前后空格去掉,并且按照空白符进行拆分 4 #pass5 except EOFError: 6 break |
2、输入一个整数n,告诉我们接下来有n组数据,然后在输入数据的具体数据
C/C++中的处理情况 | Python中的处理情况 |
1 while(cin>>n) 2 { 3 for(i=0;i<n;i++) 4 { 5 cin>>a>>b; 6 //处理; 7 } 8 } |
1 while True: 2 try: 3 tcase = int(raw_input().strip()) 4 for case in range(tcase): 5 a, b = map(int, raw_input().strip().split()) 6 7 #pass 8 except EOFError: 9 break |
#pass
3、有多组输入数据,但是没有具体明确有多少组,但是明确当遇见0,0时结束
C/C++中的处理情况 | Python中的处理情况 |
4、有多组输入数据,但是没有具体明确有多少组,但是明确当遇见0,0时结束
C/C++中的处理情况 | Python中的处理情况 |
5、有多组输入数据,但是没有具体明确有多少组,但是明确当遇见0,0时结束
C/C++中的处理情况 | Python中的处理情况 |
6、有多组输入数据,但是没有具体明确有多少组,但是明确当遇见0,0时结束
C/C++中的处理情况 | Python中的处理情况 |
7、有多组输入数据,但是没有具体明确有多少组,但是明确当遇见0,0时结束
C/C++中的处理情况 | Python中的处理情况 |
8、有多组输入数据,但是没有具体明确有多少组,但是明确当遇见0,0时结束
C/C++中的处理情况 | Python中的处理情况 |
转载于:https://www.cnblogs.com/yushuo1990/p/5952424.html
[ACM训练] ACM中巧用文件的输入输出来改写acm程序的输入输出 + ACM中八大输入输出格式...相关推荐
- python无法启动该程序因为计算机中丢失_python报错:无法启动此程序,因为计算机中丢失...
原标题:python报错:无法启动此程序,因为计算机中丢失 python报错:无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-|1-1-0.dll api-ms-win- ...
- python无法启动此程序因为计算机中丢失_python报错:无法启动此程序,因为计算机中丢失...
原标题:python报错:无法启动此程序,因为计算机中丢失 python报错:无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-|1-1-0.dll api-ms-win- ...
- ACM新手之八大输入输出格式
在ACM题库中,不管是文件输出(输入)还是标准输出(输入),都有着一定的格式,下面我就以杭电1089--1096为例子,简单的介绍一下. 第一种:A+B for Input-Output Practi ...
- python自动粘贴文字_在python中自动将文件内容复制到剪贴板并粘贴到纯文本文件中...
我只想用我写的这个小脚本来解析PDF文件中的数据.在 但是,我似乎遇到了python的问题,更具体地说,PyPDF2模块无法从pdf文件中读取文本.打印出来的数据都是模糊的,基本上不可读.然而,当我打 ...
- 小程序中input标签没有反应_解决微信小程序弹出层中input无法聚焦的问题
此处使用的是vant框架 解决聚焦问题 这里遇到的问题是,在点击搜索框后,设置了弹起的弹出层中van-search的foucs值为true 但是没有起到聚焦效果 原因在于弹出框带有一个动画效果,需要在 ...
- python中对数字降序和升序_该程序查找在Python中按升序或降序排列数字的最低成本...
假设我们有一个称为nums的数字列表,我们必须找到最小成本以任何顺序(升序或降序)对列表进行排序.此处的成本是任何元素的旧值和新值之间的差总和. 因此,如果输入类似于[2,5,4],则输出将为2. 为 ...
- 怎么将vue模板转换为html,vue中自定义html文件的模板
如果默认生成的 HTML 文件不适合需求,可以创建/使用自定义模板. 一是通过 inject 选项,然后传递给定制的 HTML 文件.html-webpack-plugin 将会自动注入所有需要的 C ...
- jar中的类文件更新遇到的问题:请分析下原因呢
1 jar包中的类文件更新后,再打开程序,发现更新的类文件没有生效,程序显示的界面仍然是更新前的界面. 2 并且更奇怪的是将jar包中对应的文件夹删掉后,重新启动运行程序的.exe 文件,发现对应功能 ...
- Git的简单使用以及在Django中有关日志文件的忽略
Git的简单使用以及在Django中有关日志文件的忽略 1.三个程序简介 2.Git配置 2.1Git查看配置 2.2git查看本地系统配置 2.3git查看用户配置的 2.4git配置用户名 2.5 ...
最新文章
- 查看linux下各数据类型的大小
- vue --- mintUI中Swipe(轮播图)的使用
- Spread / Rest 操作符
- 【转】GitHub 从单机到联机:玩转 Pull Request
- (软件工程复习核心重点)第一章软件工程概论-第四节:软件过程及相关模型
- eclipse4.2配置tomcat+jdk
- 训练中Loss为Nan的原因,梯度消失或者爆炸的优化
- mybatis多种方式注册映射文件
- 数据分类分级指南数据服务分类类目表
- Tomcat8卸载+重装
- cfd 网格划分c语言源程序,ICEM-CFD-网格划分入门 .doc
- cityscape 数据集 mmsegmentation训练记录
- 批处理从入门到精通_DOS/BAT
- 怎么判断两个多项式互素_关于两个多元多项式互素问题
- 2021年Android工作或许更难找,面试资料分享
- 【ESD专题】2.ESD防护及保护器件(电介质和压敏电阻)
- linux之CLUSTER(集群)一
- Android自定义注解不被混淆,Android 混淆压缩开启以及自定义混淆规则
- 机器学习考点---过拟合与欠拟合、CNN原理......
- ArcMap出图小技巧:图例,比例尺,指北针,标题(附练习数据)
热门文章
- iphone新旧手机数据传输已取消_如何取消iPhone手机App自动扣费?三种方法让你不再被“偷”...
- C语言 | 6种常用的转换工具函数盘点
- C语言内存/指针相关
- C语言中几个容易踩的“坑”!
- C语言预处理命令分类和工作原理
- 【lua学习】2.数据类型
- 获取客户端ip_代理IP工具能否解决反爬?
- php7设置最大连接数,sybase 15.7 修改 number of user connections 最大连接数
- 浅析C++的三大循环-以100以内的质数求解为例
- 什么是四路串口服务器?