NOIP2015普及组初赛试题及答案(Pascal)(2)

2018-12-08 18:21

四. 完善程序 (前4空,每空3分,后4空,每空4分,共28分)

1 . (打印月历)输入月份m(1?m?12),按一定格式打印2015年第m月的月历。(第三、四空2.5分,其余3分)

例如,2015年1月的月历打印效果如下(第一列为周日):

S

M 5

T 6

W 7

T 1 8

F 2 9

S 3 10

4

11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

const

dayNum: array [1..12] of longint

= (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); var

m, offset, i: longint; begin read(m);

writeln('S', #9, 'M', #9, 'T', #9, 'W', #9, 'T', #9, 'F', #9, 'S'); // #9 为 TAB 制表符 (1) ; for i := 1 to m - 1 do offset := (2) ; for i := 1 to offset do write(#9);

for i := 1 to (3) do begin

write( (4) ); if (i = dayNum[m]) or ( (5) = 0) then writeln else

write(#9); end; end.

CCF NOIP2015初赛普及组Pascal语言试题

第 6 页 共 8 页

2. (中位数)给定n(n为奇数且小于1000)个整数,整数的范围在0~m(0?m?2)之间,请使用二分法求这n个整数的中位数。所谓中位数,是指将这n个数排序之后,排在正中间的数。(第五空2分,其余3分)

const

MAXN = 1000; var

n, i, lbound, rbound, mid, m, count:longint; x: array[1..MAXN] of longint; begin

read(n, m); for i := 1 to n do read(x[i]); lbound := 0; rbound := m;

while (1) do begin

mid := (lbound + rbound) div 2; (2) ; for i := 1 to n do if (3) then (4) ; if count > n div 2 then lbound := mid + 1 else

(5) ; end;

writeln(rbound); end.

CCF NOIP2015初赛普及组Pascal语言试题

第 7 页 共 8 页

31

答 卷 部 分

一. 选择一个正确答案代码(A/B/C/D),填入每题的括号内 (每题1.5分,多选无分, 共30 分)

题号 选择 题号 选择

1 D 11 D 2 C 12 B 3 C 13 A 4 A 14 D 5 A 15 B 6 D 16 D 7 A 17 B 8 B 18 A 9 B 19 D 10 A 20 A 二.问题解答 (每题5分,共10分)

1. 答: 9 2. 答: 1008 三. 阅读程序,并写出程序的正确运行结果:(每题8分,共32分)

(1) 程序的运行结果是: 3 (2) 程序的运行结果是: 3,2 (3) 程序的运行结果是: It has 18 lowercases

(4) 程序的运行结果是: Ab

四.根据题意, 将程序补充完整 (共28分)

1.

2.

1) offset := 4 1) lbound < rbound 2) (dayNum[i] + offset) mod 7 2) count := 0 dayNum[m] 3)3) x[i] > mid i 4)4) inc(count) 5) (offset + i) mod 7 5) rbound := mid CCF NOIP2015初赛普及组Pascal语言试题

第 8 页 共 8 页


NOIP2015普及组初赛试题及答案(Pascal)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016“数学的思维方式与创新”考试满分答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

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