网站大量收购独家精品文档,联系QQ:2885784924

ACM input output.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ACM input output

函数与输入输出 by:zhangfei 一、输入 解决问题重要,但没有获取我们所要处理的信息,我们只有干着急了!O(∩_∩)O哈哈~。对于输入数据,我们常见到以下一些情况: 1、只有一组测试数据 请看:送分题-A+B Problem 这题只有一组测试数据,直接写即可。请看以下三种不同语言所写的程序: 2、有多组测试数据,但一开始就告诉你测试数据的数目 请看:A+B for Input-Output Practice (II) 对于这样的输入,我们首先读取测试数据的组数,然后用一个循环读取每组测试数据即可。 请看以下程序: 3、有多组测试数据,没有告诉你有几组,但却告诉你读到某些特定的数据后结束 请看:A+B for Input-Output Practice (III) 对于这种情况,我们可以用一个无限循环操作。在循环中设置一个判断,如果应该停止了,我们可使用一个 break 语句跳出循环即可;或者,我们可以使用 while 循环来处理。 请看以下程序: 4、有多组测试数据,既没有告诉你有几组又没有告诉你读到哪些特定的数据结束 请看:A+B for Input-Output Practice (I) 数据中什么停止的信息都没有,是不是就无法操作了呢?其实不然,要知道对于你写的程序,别人给你测试时一般不会自己亲自动手输入数据的,而是实现将数据写入一个文件中,或者对于大量的数据有些是用计算机生成的。例如,对于 A+B 我们可以生成很多组随机数以用来测试。于是,我们就可以利用这一特点来处理数据。 二、输出 输出,也就是需要按要求将结果按一定的格式输出。例如,两组输出结果之间空一行空行,两个数之间空一个空格等。当然,对于每组结果之后空一行空行,我们直接再输出一个空行即可。但对于前面的情况应该怎样解决? 三、函数 当然,如果将以上四种情况进行不同的排列和组合,又会变化出更多的花样!但是,如果你充分理解需要解决的问题并掌握了足够多的知识,这些问题便不再是问题。接下了,我将谈谈函数及利用函数来处理更多的输入问题。 1、C/C++ 函数的形式 类型标识符 函数名(形式参数列表) { …… …… } 类型标识符:用来说明返回值的类型。如果无需返回任何值,则使用 void 来说明。 2、对 scanf 函数再认识 我们再看看 scanf 函数的函数头: int scanf ( const char * format, ... ); 这里 const char * format 是格式字符串,例如:scanf(“%d%d”,a,b); 里的 “%d%d” 。这里的格式就是我们读取数据的格式。这一点大家都明白,那我们再看看这个: 第几天? 3、不同数据的读取 如果有一定的格式,我们完全可以读入不同的数据。例如,对于一行中有一个数字和一个字符串,我们可用scanf(“%d%s”,n,str); 来处理。我们再来看看这一个:Cantor 这一个我们首先要读取的是一个浮点数,但怎样处理 “END” 呢?如果一味地用浮点数形式读取,将陷入无限循环! 4、一些常见问题 1、如果使用scanf()读取字符(不是字符串,请注意!)注意这些字符的前后的空格和空行。 2、如果使用scanf()读取数值,如果数据中混有非表示数值的字符,有可能会引起无限读取而导致超时或者超内存等问题。 3、gets()函数是可能会读取空行的! 4、如果在开一个比较大的数组时,遇到堆栈溢出,可能是因为你将数组开在了函数内,使得比较小的栈溢出了。 四、宏定义与文件读取 #ifndef ONLINE_JUDGE freopen(in.txt,r,stdin); #endif 这个写法,大家一定很熟悉。因为,在我们校训练队,我们开始就会介绍这个写法的。现在,正式说明一下。 1、宏定义 C/C++教材一般都介绍宏定义,这里我就不多介绍宏定义了。我只对这里特定的定义进行解释。 这里实际上是个“条件编译”,也就是说当某种条件成立或不成立时应该做些什么。例如: #ifndef :可以解释为 if no define;也就是说在没有定义的情况下,应该做的。 2、使用文件读取的好处 1、不必亲自动手输入,省时而且不易出错。 2、对于有的格式,人为可能忽略,而用文件则不会过多的涉及这个问题。 int main() { #ifndef ONLINE_JUDGE freopen(in.txt,r,stdin); #endif char num[10]; while(scanf(%s,num), strcmp(num,END)) { memset(digit,0,sizeof(digit)); if(judge(atof(num)))

文档评论(0)

cj80011 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档