高中计算机省赛试题,全国青少年信息学奥林匹克竞赛(高中组)初赛试题及答案...

41528d3028836879cd698677c3999917.gif全国青少年信息学奥林匹克竞赛(高中组)初赛试题及答案

NOI’95 “同创杯”全国青少年信息学(计算机)奥林匹克竞赛分区联赛初赛试题(高中组) 竞赛用时:2 小时一、基础题:执行 ①CDIR 命令后,屏幕上显示如下画面:AT COM 12145SYS COM 4878PUC BAT 126XCOPY 112164 FILE(S) 123456 bytes free接着又顺序执行了如下几条 DOS 命令:② CDIR DF.TXT //表示将列表显示的目录作为文件写盘 //③CTYPE DF.TXT ④CDIR 试问:执行命令③和④ 在屏幕上显示的结果是否与①相同?列举一个问题,使问题的解能对应相应的算法。例如对算法: X:=10 ;答 题 要 求一、全部试题答案均应写在答卷纸上,写在试卷纸上一概无效。二、算法描述中,可以使用下列过程、函数或算符:(1)算术运算:+,-,×,/,DIV,MOD整数除(DIV):是取二整数相除的商的整数部分。如:11 DIV 2 = 5取模(MOD):是取二整数相除的余数。 如:11 MOD 2 = 1(2)关系运算:,,=, 有标号为 A、B、C、D 和 1、2、3、4 的 8 个球,每两个球装一盒,分装 4 盒。标号为字母的球与标号为数字的球有着某种一一对应的关系(称为匹配) ,并已知如下条件:① 匹配的两个球不能在一个盒子内。② 2 号匹配的球与 1 号球在一个盒子里。③ A 号和 2 号球在一个盒子里。④ B 匹配的球和 C 号球在一个盒子里。⑤ 3 号匹配的球与 A 号匹配的球在一个盒子里。⑥ 4 号是 A 或 B 号球的匹配球。⑦ D 号与 1 号或 2 号球匹配。请写出这四对球匹配的情况。从入口(1)到出口(17)的可行路线图中,数字标号表示关卡:现将上面的路线图,按记录结构存储如下:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18请设计一种能从存储数据中求出从入口到出口经过最少关卡路径的算法。1 2 18 7 3 12 4 19 8 5 13 16 6 14 15 9 17 …0 1 1 1 2 2 2 3 4 5 6 8 10 11 11 11 12 …NoPRE二、根据题目要求,补充完善以下伪代码程序:求出二个整形数组错位相加的最大面积。1.数组面积的定义:(限定数组头尾不为 0)设有一个数组 C=(4,8,12,0,6)则 C 的面积为:Sc=(4+8)/2 + (8+12)/2 + 12/2 + 6/2也就是说,Sc=各梯形面积之和(其中梯形的高约定为 1,三角形作为梯形的特殊情况处理) 。又如 D=(12, 24, 6)是,其面积的定义为2.数组错位相加的定义设有 2 个正整数的数组 a,b,长度为 n,当 n=5 时:a=(34,26,15,44,12) b=(23,46,4,0,18)对 a、b 进行错位相加,可能有下列情况34 26 15 44 12+) 23 46 4 0 18 34 26 15 44 12 23 46 4 0 18或:34 26 15 44 12+) 23 46 4 0 18 34 26 15 44 35 46 4 0 18或:34 26 15 44 12+) 23 46 4 0 18 34 26 15 67 58 4 0 18或:……最后有:34 26 15 44 12+) 23 46 4 0 18 -23 46 4 0 18 34 26 15 44 12可以看到:由于错位不同,相加的结果也不同。程序要求:找出一个错位相加的方案,使得输出的数组面积为最大。[算法提要]: 设 a,b 的长度为 10,用 a,b: array[110] of integer 表示,其结果用数组C,D: array[130] of integer 表示。错位相加的过程可以从开始不重叠,然后逐步重叠,再到最后的不重叠。梯形面积的计算公式为:(上底+ 下底)×高÷2122464 81216111Sd=(12+24)/2 + (24+6)/211其中由于约定高为 1,故可写为(上底+ 下底)÷2。程序: n = 10;Function sea : real; {计算数组 C 面积}BeginJ1 := 1;While _______①______ do j1 := j1 + 1;ENDWHILE;If j1 = 3 * n then sea := 0 Else beginJ2 := 3 * n;While _______②______ do j2 := j2 - 1;If j1 = j2 then sea := 0 Else beginJ3 := c[j1] + c[j2];For j4 := j1 + 1 to j2 - 1 doINC(j3,c[j4]*2);ENDFOR;Sea := j3 / 2endENDIF;End;//主程序//For i := 1 to n do read(a[I]); endfor;For j := 1 to n do read(b[j]); endfor;__________③____________;for i := 1 to 2 * n + 1 dofor j := 1 to 3 * n do ________④__________ endfor;for j := 1 to n do c[j + n] := a[j] endfor;for j := 1 to n do_________⑤__________;endfor;p := sea;if p s then begin d := c;s := pend;endif;endfor;for I := 1 to 3 * n do write(d[I], ); endfor;write(s);End. //主程序结束//表的操作:设有一个表,记为 L=(a 1, a2, …, an) ,其中:L:表名a1, a2, …, an 为表中的元素当 ai 为 0~9 数字时,表示元素, ai 为大写字母时, 表示是另一个表,但不能循环定义。例如下列表的定义是合法的。 (约定 L 是第一个表的表名)L=(1,3,K,8,0,4)K=(3,P,4,H,7)P=(2,3)H=(4,0,5,3)程序要求:当全部表给出之后,求出表中所有元素的最大元素,以及表中全部元素的和。[算法提要]:表用记录类型定义: 长度(LENGTH)表体(是元素为字符类型的数组 ELEMENT)队列用数组 BASE 表示;队列指针用整型变量 FRONT 与 REAR。为此,设计一个字符入队的过程 inqueue,出队函数 outqueue,表中最大元素及元素求和均采用递归计算。程序:PROCEDURE INQUEUE(Q,C); //过程需要二个参数,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值