ACM第一课正确处理输入输出文档格式.docx

上传人:b****4 文档编号:14266412 上传时间:2022-10-21 格式:DOCX 页数:19 大小:568.15KB
下载 相关 举报
ACM第一课正确处理输入输出文档格式.docx_第1页
第1页 / 共19页
ACM第一课正确处理输入输出文档格式.docx_第2页
第2页 / 共19页
ACM第一课正确处理输入输出文档格式.docx_第3页
第3页 / 共19页
ACM第一课正确处理输入输出文档格式.docx_第4页
第4页 / 共19页
ACM第一课正确处理输入输出文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

ACM第一课正确处理输入输出文档格式.docx

《ACM第一课正确处理输入输出文档格式.docx》由会员分享,可在线阅读,更多相关《ACM第一课正确处理输入输出文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

ACM第一课正确处理输入输出文档格式.docx

其中用途是将输入流重定向为一个文档文件in.txt

同理是将输出流重定向为一个文档文件out.txt

打开当前cpp文件所在目录

新建一个名字为in的txt文档,在里面输入

13

45

67

保存,然后执行上一段代码,会自动生成一个out.txt

打开里面,你就看到输出结果

5

9

13

怎样?

是不是和题目给的samplein和sampleout格式看起来一样了?

所以你在考虑编程的时候要把输入输出流分开考虑。

不必先把所有输出流存下来然后输出,来一个输一个就OK了。

细心的人会发现我在循环里面写的是

EOF是endoffile明白了吧?

默认系统给他的值是-1用-1替换EOF也行,不过为了程序的可阅读性。

还是用EOF好。

为啥不用cin?

cin,cout的处理速度很慢,之所以你没有体会到,是因为给你的用力少,如果给你1000000000个用力,cin接收字符的速度慢就会被放大,有的题就会超时。

所以建议大家全用scanf和printf。

Scanf函数返回值就是读出的变量个数,如:

scanf(“%d%d”,&

a,&

b);

如果只有一个整数输入,返回值是1,如果有两个整数输入,返回值是2,如果一个都没有,则返回值是-1。

所以用来结束程序。

好多人用while

(1)晕,不超时才怪。

二,常见的输入

1),

Input

Theinputwillconsistofaseriesofpairsofintegersaandb,separatedbyaspace,onepairofintegersperline.

SampleInput

15

1020

这种输入是以EOF为文件结尾,所以只要检测EOF就OK了。

就是上面我写的那种方法。

2),

InputcontainsanintegerNinthefirstline,andthenNlinesfollow.Eachlineconsistsofapairofintegersaandb,separatedbyaspace,onepairofintegersperline.

2

先给出测试用力个数n,然后给出n行。

解决方法就是先接收字符n,然后控制循环循环n次,每次接收两个数。

代码不提供了,自己写。

3),

Inputcontainsmultipletestcases.Eachtestcasecontainsapairofintegersaandb,onepairofintegersperline.Atestcasecontaining00terminatestheinputandthistestcaseisnottobeprocessed.

1020

00

结束条件不是EOF了!

是一个指定的00所以你一定别写成EOF了。

好多用例很阴的比如

23

66

46

如果用EOF结束,你应该知道发生了啥。

方法就是输入两个数,检测一下是不是00,简单吧?

4),

以上三种情况的组合。

给你举个比较复杂的例子:

Inputcontainsmultipletestcases.EachtestcasecontainsaintegerN,andthenNintegersfollowinthesameline.Atestcasestartingwith0terminatestheinputandthistestcaseisnottobeprocessed.

41234

512345

0

每行先给一个数字N,然后后面跟着N个数,以0为结束。

所以你只要检测第一个数是否是0,如果不是,接收N个字符,是退出。

5),字符输入,比较恶心。

Inputtothisproblemwillconsistofa(non-empty)seriesofupto100datasets.Eachdatasetwillbeformattedaccordingtothefollowingdescription,andtherewillbenoblanklinesseparatingdatasets.Allcharacterswillbeuppercase.

Asingledatasethas3components:

Startline-Asingleline,"

START"

Ciphermessage-Asinglelinecontainingfromonetotwohundredcharacters,inclusive,comprisingasinglemessagefromCaesar

Endline-Asingleline,"

END"

Followingthefinaldatasetwillbeasingleline,"

ENDOFINPUT"

.

 

START

NSBFW,JAJSYXTKNRUTWYFSHJFWJYMJWJXZQYTKYWNANFQHFZXJX

END

NBTZQIWFYMJWGJKNWXYNSFQNYYQJNGJWNFSANQQFLJYMFSXJHTSINSWTRJ

IFSLJWPSTBXKZQQBJQQYMFYHFJXFWNXRTWJIFSLJWTZXYMFSMJ

ENDOFINPUT

其中有几个特殊字符startendendofinput读懂题意就明白啥意思了。

字符比较就能解决。

主要是怎么去接收这些字符串呢?

而且还有空格。

scanf(“%s”,str);

可以么?

不行啊,,,有空格,比如第一个他收到NS就退出了。

gets(str);

显然他是可以的。

但在用gets时要注意题目的输入中是否有数值输入,gets()会吸收‘\n’所以如果是一个数值后面跟着一个字符串,就要先吸收掉一个‘\n’然后再接收字符串。

getline是一个函数,它可以接受用户的输入的字符,直到已达指定个数,或者用户输入了特定的字符。

它的函数声明形式(函数原型)如下:

istream&

getline(charline[],intsize,charendchar='

\n'

);

不用管它的返回类型,来关心它的三个参数:

charline[]:

就是一个字符数组,用户输入的内容将存入在该数组内。

intsize:

最多接受几个字符?

用户超过size的输入都将不被接受。

charendchar:

当用户输入endchar指定的字符时,自动结束。

默认是回车符。

结合后两个参数,getline可以方便地实现:

用户最多输入指定个数的字符,如果超过,则仅指定个数的前面字符有效,如果没有超过,则用户可以通过回车来结束输入。

charname[4];

cin.getline(name,4,'

由于endchar默认已经是'

,所以后面那行也可以写成:

cin.getline(name,4);

相关注意的事项请参考咱们本校资料里面的cin和scanf在使用时的注意事项

三,常见的输出

输出就比较容易了。

1),见的最多

1

3

4

这种输出只要在正常输出的数值后面加个换行符就ok

Output

Foreachpairofinputintegersaandbyoushouldoutputthesumofaandb,andfollowedbyablankline.

每两个输出之间有空行。

好多人刚开始都是用的这种方法:

直接两个\n\n你提交,他会提示你格式出错因为结尾的地方你给了两个空行,显然是不行的。

解决方法是,用一个tag初值为0,当输出的时候检查它是不是0,如果是0,说明是第一次输出,则输出xxxxxxxxxxxx\n然后把tag值变成1。

当第N次(N>

1)输出时,检查到tag为1按照\nxxxxxxxxx\n输出就OK了。

形如

12345678

23456789

34567890

这种输出看似简单,其实很阴,如果你的输出是“%d空格”那么最后一个输出也有一个空格,如果你的结果正确,提交后肯定是格式出错。

所以怎么解决这个问题呢?

还是和2一样,检测,如果是第一次,输出一个数,没有空格,如果不是第一次,空格+数值,最后补个换行。

Ok!

在做题时的一点建议:

最好把给的用例粘贴到记事本里面看,然后全选。

看看输出是不是有啥特殊的地方。

比如刚才的3),如果正常输出的话如下图

如果你的输出最后也有空格

看到了吧?

ACM第二课评测机中各种状态

Verdictsofthejudgesystem

Verdict

Abbreviation

Indication

Accepted

AC

Thesolutionhasproducedoutputthatthejudgesystemoracheckerprogram(commonlyreferredtoasaspecialjudge)acceptsascorrect.

通过

PresentationError

PE

Thesolutionhasproducedoutputthatiscorrectincontentbutincorrectinformat.

答案正确,格式出错。

TimeLimitExceeded

TLE

Thesolutionhasrunforlongertimethanpermitted.Thismeanseitherthetimespentonalltestcasesexceedsthe

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1