- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2012年YHOI试题解析.ppt
* * * * 2012年YHOI试题解析 第一题 加法器(plus) 问题描述 某外星球,由于他们常用进制不是我们常用的十进制。正因为如此,十进制加法,对于他们来说,也会成为一个问题。 你作为与该星球沟通小使者,需要编写一个计算十进制加法的程序。 输入格式 两个自然数m、n。 输出格式 一个自然数x,表示m与n的和。 输入样例 1 2 输出样例 3 分析 a+b问题,无算法可言,考察基本编程能力。 这里没有给出数据范围,问了不失分,尽量使用长整型,如果可能则使用高精度加法。当然该题最终的测试数据没有超过长整型,所以只要用长整型就可拿满分。 第一题 加法器(plus) 参考程序 var a,b:longint; begin assign(input,plus.in); assign(output,plus.out); reset(input); rewrite(output); read(a,b); writeln(a+b); close(input); close(output); end. 第一题 加法器(plus) 第二题 计算器(counter) 问题描述 当然,只会加法运算是不够的,该外星球的人们还希望你开发一个计算器,可以计算十进制加减乘除。 请你设计一个简单的计算器,具有加减乘除功能。用户键入的两个数和一个运算符,由计算机输出运算结果。 输入格式 分二行输入,第一行是两个自然数,第二行是运算符。 输出格式 一个小数,保留两位小数。 输入样例1 15 3 + 输出样例1 18.00 输入样例2 5 2 / 输出样例2 2.50 / 输入样例3 5 0 / 输出样例3 error 分析 简单的计算器,典型的多分支选择结构(case语句)。 这里需要考虑的是一些特殊情况,比如除数不能为0,若遇到除数为0是给出结果“error”;其次注意输出结果是实型,精确到0.01(即小数点后两位),需要通过场宽控制小数点数位。 第二题 计算器(counter) 参考程序 var x,y:real; ch:char; begin assign(input,counter.in); assign(output,counter.out); reset(input); rewrite(output); readln(x,y); read(ch); 第二题 计算器(counter) case ch of +:write(x+y:0:2); -:write(x-y:0:2); *:write(x*y:0:2); /:if y0 then write(x/y:0:2) else write(error); end; close(input); close(output); end. 第三题 算术表达式(exp) 问题描述 上面计算器的输入,你是不是觉得有些怪怪的呢?因为它太不符合我们地球人的表达习惯,我们算术表达式,其实是“中缀表达式”,即运算符在中间。但是外星人既不使用十进制,也不使用中缀表达式,他们还想请你编写一个可以直接计算算术表达式的程序。当然本着循序渐进的原则,只是计算包含加号的表达式。 输入格式 一个加法表达式。 输出格式 一个自然数x,表示表达式的值。 输入样例 1+2 输出样例 3 分析 此题需要用字符串解决。 先定义一个字符串,将加法表达式读取后进行分解取数。转换成数字再进行运算。 第三题 算术表达式(exp) 参考程序 var s:string; x,y:longint; begin assign(input,exp.in); assign(output,exp.out); reset(input); rewrite(output); read(s); val(copy(s,1,pos(+,s)-1),x); val(copy(s,pos(+,s)+1,length(s)-pos(+,s)),y); write(x+y); close(input); close(output); end. 第三题 算术表达式(exp) 第四题 二进制转换(bin) 问题描述 尽管有了你的帮助,但外星人还是更习惯使用二进制。现在请你编写一个程序,帮助外星人进行二进制转换。 手算是如何进行二进制转换的呢?除二取余法——除以2取余,逆序排列。举一个例子说明这种方法! 将十进制的110转化二进制的过程是这样的: 110÷2=55…0 55÷2=27…1 27÷2=13…1 13÷2=6…1 6÷2=3…0 3÷2=1…1 1÷2=0…1 十进制的110转换为二进制就是1101110。 现在,请你编写一个
文档评论(0)