- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ACM 第一课 正确处理输入输出
输入输出原理
之所以我们平时编程输入输出都是在一个黑框框里面完成的,是因为你输入流和输入流都是在这个黑框框里面看到的。所以导致好多同学看到“Sample Input”
1 2
3 4
5 6
7 8
想到的是先把所有输入存起来,然后再输出a+b的结果。因为这样在黑框框里面看到的结果才和标准的一样。
如果你真的明白了什么是输入输出流,你就不会这么写了。
如上图,你给程序一个输入流,经过程序处理后,会给出一个输出流。默认情况下,输入流由键盘敲入,就是俗称的黑框框。输出流的显示也是在黑框框里面。如果我们人工改变它,比如,输入流成了一个文本文档,输出流也成了一个文本文档。
将这两项分开。你现在就应该明白为啥会这样写了吧?
其中 用途是将输入流重定向为一个文档文件 in.txt
同理 是将输出流重定向为一个文档文件 out.txt
打开当前cpp 文件所在目录
新建一个 名字为in 的txt文档 ,在里面输入
1 3
4 5
6 7
保存,然后执行上一段代码,会自动生成一个out.txt
打开里面,你就看到输出结果
5
9
13
怎样?是不是和题目给的 sample in 和sample out 格式看起来一样了?
所以你在考虑编程的时候要把输入输出流分开考虑。不必先把所有输出流存下来然后输出,来一个输一个就OK了。
细心的人会发现我在循环里面写的是
EOF 是 end of file 明白了吧?默认系统给他的值是-1 用-1 替换EOF 也行,不过为了程序的可阅读性。还是用EOF好。
为啥不用cin?cin,cout 的处理速度很慢,之所以你没有体会到,是因为给你的用力少,如果给你1000000000个用力,cin 接收字符的速度慢就会被放大,有的题就会超时。所以建议大家全用scanf 和printf 。
Scanf函数返回值就是读出的变量个数,如:scanf( “%d %d”, a, b ); 如果只有一个整数输入,返回值是1,如果有两个整数输入,返回值是2,如果一个都没有,则返回值是-1。所以用来结束程序。好多人用while(1) 晕,不超时才怪。
常见的输入
1),
Input
The input will consist of a series of pairs of integers a and b, separated by a space, one pair of integers per line.
Sample Input
1 5
10 20
这种输入是以EOF 为文件结尾,所以只要检测EOF就OK了。就是上面我写的那种方法。
2),
Input
Input contains an integer N in the first line, and then N lines follow. Each line consists of a pair of integers a and b, separated by a space, one pair of integers per line.
Sample Input
2
1 5
10 20
先给出测试用力个数n,然后 给出n行。
解决方法就是先接收字符n ,然后控制循环循环n次,每次接收两个数。代码不提供了,自己写。
3),
Input
Input contains multiple test cases. Each test case contains a pair of integers a and b, one pair of integers per line. A test case containing 0 0 terminates the input and this test case is not to be processed.
Sample Input
1 5
10 20
0 0
结束条件不是EOF了!!是一个指定的 0 0 所以你一定别写成EOF 了。好多用例很阴的 比如
2 3
4 5
0 0
6 6
4 6
如果用EOF结束,你应该知道发生了啥。。。。。。
方法就是输入两个数,检测一下是不是0 0 ,简单吧?
4),
以上三种情况的组合。
给你举个比较复杂的例子:
Input
Input contains multiple test cases. Each test case contains a integer N, and then N integers follow in the same line. A test case starting with 0 terminates the input and this test case is not to be
原创力文档


文档评论(0)