“讯飞杯”合肥市第二十八届青少年信息学奥林匹克竞赛(小学组)解题报告

时间:2025-07-01

“讯飞杯”合肥市第二十八届青少年信息学奥林匹克竞赛(小学组)解题报告

胡周国

2011年11月26日 14:00-16:30 (请选手务必仔细阅读本页内容)

一、题目概况

二、注意事项

1. 考试时间为150分钟。 2. 务必看清题目,严格按照所要求的格式输入、输出。 3. 在调试程序时请先使用题目中的示例数据,然后再自行设计多组测试数据进行调试。

4. 每题一般有10个测试点,测试有严格的时间限制,请尽可能优化算法。 5. 命名规则:

(1)每题都规定了该题的英文名称。

(2)程序文件和数据文件的主文件名都是该题的英文名字。

(3)程序文件扩展名采用语言环境的默认扩展名。 (4)数据文件都是文本文件,输入和输出文件的扩展名分别是.in和.out。 6. 程序应从输入文件读取数据,并严格地按照规定的输出格式将结果输出到输出文件中。输入数据文件和输出数据文件都与程序在同一个目录中,由于程序所在目录是不确定的,因此不允许在文件名中含有盘符信息和任何形式的路径信息。 7. 选手在竞赛结束时应在D盘的根目录下建立以准考证号命名的文件夹,并将所完成各题的源程序文件和可执行文件拷贝到该文件夹中。

1.聪聪买书

(book.bas/book.pas/book.c)

【问题描述】

圣诞节快到了,聪聪准备给他的好朋友们买些小礼

物。当然,聪聪知道这些好朋友们都非常喜欢看漫画书,所以,聪聪就决定买些好看的漫画书送给他们。经过一段时间的调查,聪聪发现有3种买书的方式:

1 .书店现场购买:10元/本,超过5本以外的,8元/本,超过10本以外的,则6.5元/本;

2.网上购买:9元/本,超过10本,全部打8折,超过50本,则全部打六折;

3.团购:10本起团购,7元/本,达到或超过30本,则6元/本,达到或超过50本,则5元/本。

聪聪想用其中一种方式购n本书,请你帮他计算应付多少元钱? 【输入文件】

输入文件只有1行为两个数k和n,中间以一个空格隔开 其中k表示选择的购买方式(k=1表示书店现场购买,k=2表示网上购买,k=3表示团购),n表示购买的本数(n<=200)。 【输出文件】

应付钱数(结果四舍五入保留到个位) 【输入输出样例】

【数据说明】

保证输入数据符合题目要求。

这题就是考我们对for循环的掌握和题目的理解能力。还要考虑到是这个编程软件是四舍五入,还是五舍六入。 程序如下:

var k,n,i,j:longint; s:real;

“讯飞杯”合肥市第二十八届信息学奥林匹克竞赛 begin

assign(input,'book.in'); assign(output,'book.out'); reset(input); rewrite(output); readln(k,n); if k=1 then begin

if n<=5 then s:=n*10 else

if n<=10 then s:=(n-5)*8+50 else

s:=(n-10)*6.5+90; end; if k=2 then begin s:=n*9; if n>50 then s:=s*0.6 else

小学组

“讯飞杯”合肥市第二十八届信息学奥林匹克竞赛 小学组

if n>10 then s:=s*0.8; end; if k=3 then begin

if n>=50 then s:=n*5 else

if n>=30 then s:=n*6 else

if n>=10 then s:=n*7; end;

write(s+0.1:0:0); close(input); close(output); end.

但这次是四舍五入的软件,所以只得了90分,后来听老师讲了一不管他是五舍六入还是四舍五入。那就是trunc(s+0.5)。 程序如下:

var k,n,i,j:longint; s:real; begin

assign(input,'book.in'); assign(output,'book.out'); reset(input); rewrite(output); readln(k,n); if k=1 then begin

if n<=5 then s:=n*10 else

if n<=10 then s:=(n-5)*8+50 else

s:=(n-10)*6.5+90; end; if k=2 then begin s:=n*9; if n>50 then

s:=s*0.6 else

if n>10 then s:=s*0.8; end; if k=3 then begin

if n>=50 then s:=n*5 else

if n>=30 then s:=n*6 else

if n>=10 then s:=n*7; end;

write(trunc(s+0.5)); close(input); close(output); end.

2.魅力镜片

(magic.bas/magic.pas/magic.c)

【问题描述】

由于聪聪一次性购买的书比较多,所以客气的书店老

板免费赠送一块好玩的镜片给聪聪玩。一段时间以后,聪聪发现这块镜片真的不简单:只要我们随便在纸上写一个整数,经过这个镜片一照,组成这个整数的各位数字顺序就会反转,得到一个新数,当然,神奇的不仅是这些,镜片产生的新数依然符合整数的常见情形,即除非给定的整数为零,否则反转得到的新数最高位数字不能为0。

好奇的聪聪大胆猜测这个镜片中肯定有些智能化的东

西。但是,这个东西到底是怎么实现的呢?聪聪想用计算机程序来模拟这一功能,于是,他就找到了擅长编程的你,请你帮助聪聪来解决这一问题。 【输入文件】

输入共一行,一个整数N。 【输出文件】

输出共一行,表示经镜片反转后得到的新数。 【输入输出样例1】

【输入输出样例2】

【数据范围】

-1,000,000,000≤N≤1,000,000,000。

这题就是要把他用字符串判‘-’,预处理末尾的‘0’,然后反过来输出。 程序如下:

var i,j,k:longint; …… 此处隐藏:2936字,全部文档内容请下载后查看。喜欢就下载吧 ……

“讯飞杯”合肥市第二十八届青少年信息学奥林匹克竞赛(小学组)解题报告.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219