求一份noip普及组pascal语言的模拟试题(笔试)

RT

第1个回答  2013-10-17
NOIP2006第十二届全国青少年信息学奥林匹克联赛初赛试题 普及组 Pascal 语言2007年03月02日 星期五 05:17 P.M.第十二届全国青少年信息学奥林匹克联赛初赛试题
( 普及组 Pascal 语言 二小时完成 )
● ● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●● 一、 单项选择题 (共20题,每题1.5分,共计30分。每题有且仅有一个正确答案.)。
1. 在下面各世界顶级的奖项中,为计算机科学与技术领域做出杰出贡献的科学家设立的奖项是( )。
A. 沃尔夫奖 B. 诺贝尔奖 C. 菲尔兹奖 D. 图灵奖
2. 在下列各软件中,不属于NOIP竞赛(复赛)推荐使用的语言环境有( )。
A. gcc/g++ B. Turbo Pascal
C. RHIDE D. free pascal
3. 以下断电之后仍能保存数据的有( )。
A. 寄存器 B. ROM C. RAM D. 高速缓存
4.Linux是一种( )。
A. 绘图软件 B. 程序设计语言 C. 操作系统 D. 网络浏览器
5. CPU是( )的简称。
A. 硬盘 B. 中央处理器 C. 高级程序语言 D. 核心寄存器 6. 在计算机中,防火墙的作用是( )。
A. 防止火灾蔓延 B.防止网络攻击
C. 防止计算机死机 D. 防止使用者误删除数据
7. 在下列关于计算机语言的说法中,不正确的是( )。
A. Pascal和C都是编译执行的高级语言
B. 高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机上
C. C++是历史上的第一个支持面向对象的计算机语言
D. 与汇编语言相比,高级语言程序更容易阅读
8. 在下列关于计算机算法的说法中,不正确的是( )。
A. 一个正确的算法至少要有一个输入
B. 算法的改进,在很大程度上推动了计算机科学与技术的进步
C. 判断一个算法的好坏的主要标准是算法的时间复杂性与空间复杂性
D. 目前仍然存在许多涉及到国计民生的重大课题,还没有找到能够在计算机上实施的有效算法
9. 在下列各种排序算法中,不是以"比较"作为主要操作的算法是( )。
A. 选择排序 B. 冒泡排序 C. 插入排序 D. 基数排序
10.在编程时(使用任一种高级语言,不一定是Pascal),如果需要从磁盘文件中输入一个很大的二维数组(例如1000*1000的double型数组),按行读(即外层循环是关于行的)与按列读(即外层循环是关于列的)相比,在输入效率上( )。
A. 没有区别 B. 按行读的方式要高一些
C. 按列读的方式要高一些 D. 取决于数组的存储方式。
11.在Pascal语言中,表达式 (21 xor 2)的值是( )
A. 441 B. 42 C.23 D.24
12.在Pascal语言中,判断a不等于0且b不等于0的正确的条件表达式是( )
A. not a=0 or not b=0 B. not((a=0)and(b=0))
C. not(a=0 and b=0) D. (a<>0)and (b<>0)
13.某个车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。已知某时刻该车站状态为空,从这一时刻开始的出入记录为:"进,出,进,进,进,出,出,进,进,进,出,出"。假设车辆入站的顺序为1,2,3,……,则车辆出站的顺序为( )。
A. 1, 2, 3, 4, 5 B. 1, 2, 4, 5, 7
C. 1, 4, 3, 7, 6 D. 1, 4, 3, 7, 2
14.高度为n的均衡的二叉树是指:如果去掉叶结点及相应的树枝,它应该是高度为n-1的满二叉树。在这里,树高等于叶结点的最大深度,根结点的深度为0,如果某个均衡的二叉树共有2381个结点,则该树的树高为( )。
A. 10 B. 11 C. 12 D. 13
15. 与十进制数1770 对应的八进制数是( )。
A. 3350 B. 3351 C. 3352 D. 3540
16.将5个数的序列排序,不论原先的顺序如何,最少都可以通过( )次比较,完成从小到大的排序。
A. 6 B. 7 C. 8 D. 9
17. 设A=B=D=true,C=false,以下逻辑运算表达式值为真的有( )。
A. (A∧B)∨(C∧D) B. ((A∨B∨D)∧C)
C. A∧(B∨C∨D) D. (A∧B∧C)∨ D
18. (2010)16 + (32)8的结果是( )。
A. (8234)10 B. (202B)16
C. (20056)8 D. (100000000110)2
19. 设栈S的初始状态为空,元素a, b, c, d, e 依次入栈,以下出栈序列不可能出现的有( )。
A. a, b, c, e, d B. b, c, a, e, d
C. a, e, c, b, d D. d, c, e, b, a
20. 已知6个结点的二叉树的先根遍历是1 2 3 4 5 6(数字为结点的编号,以下同),后根遍历是3 2 5 6 4 1,则该二叉树的可能的中根遍历是( )
A. 3 2 1 4 6 5 B. 3 2 1 5 4 6
C. 2 1 3 5 4 6 D. 2 3 1 4 6 5
二.问题求解(共2题,每题5分,共计10分)
1.(寻找假币) 现有80枚硬币,其中有一枚是假币,其重量稍轻,所有真币的重量都相同,如果使用不带砝码的天平称重,最少需要称几次,就可以找出假币?你还要指出第1次的称重方法。请写出你的结果:_________________________________________________。
2.(取石子游戏) 现有5堆石子,石子数依次为3,5,7,19,50,甲乙两人轮流从任一堆中任取(每次只能取自一堆,不能不取), 取最后一颗石子的一方获胜。甲先取,问甲有没有获胜策略(即无论乙怎样取,甲只要不失误,都能获胜)?如果有,甲第一步应该在哪一堆里取多少?请写出你的结果:
_________________________________________________。
三.阅读程序写结果(共4题,每题8分,共计32分)
1. Program ex301;
var
u:array[0..3] of integer;
i,a,b,x,y:integer;
begin
y:=10;
for i:=0 to 3 do
read(u[i]);
a:=(u[0]+u[1]+u[2]+u[3]) div 7;
b:=u[0] div ((u[1]-u[2]) div u[3]);
x:=(u[0]+a+2)-u[(u[3]+3) mod 4];
if (x>10) then
y:=y+(b*100-u[3]) div (u[u[0] mod 3]*5)
else
y:=y+20+(b*100-u[3]) div (u[u[0] mod 3]*5);
writeln (x,',',y);
end. {*注:本例中,给定的输入数据可以避免分母为0或下标越界。 }
输入:9 3 9 4
输出:_______________
2.Program ex302;
const
m:array[0..4] of integer=(2,3,5,7,13);
var
i,j:integer;
t: longint;
begin
for i:=0 to 4 do
begin
t:=1;
for j:=1 to m[i]-1 do
t:=t*2;
t:=(t*2-1)*t;
write (t,' ');
end;
writeln;
end.
输出:____________________
3.Program ex303;
Const
NN=7;
Type
Arr1=array[0..30] of char;
var
s:arr1;
k,p:integer;
Function fun(s:arr1; a:char;n:integer):integer;
var
j:integer;
begin
j:=n;
while (a<s[j])and(j>0) do dec(j);
fun:=j;
end;
begin
for k:=1 to NN do
s[k]:=chr(ord('A')+2*k+1);
k:=fun(s,'M',NN);
writeln(k);
end.
输出:_____________
4.program ex304;
var
x,x2:longint;
procedure digit(n,m:longint);
var n2:integer;
begin
if(m>0) then
begin
n2:=n mod 10;
write(n2:2);
if(m>1) then digit(n div 10,m div 10);
n2:=n mod 10;
write(n2:2);
end;
end;
begin
writeln('Input a number:');
readln(x);
x2:=1;
while(x2<x) do x2:=x2*10;
x2:=x2 div 10;
digit(x,x2);
writeln; 5
end.
输入:9734526
输出:______________________________
四.完善程序 (前4空,每空2.5分,后6空,每空3分,共28分)
1.(全排列)下面程序的功能是利用递归方法生成从1到n(n<10)的n个数的全部可能的排列(不一定按升序输出)。例如,输入3,则应该输出(每行输出5个排列):
123 132 213 231 321
312
程序:
Program ex401;
Var
i,n,k:integer;
a:array[1..10] of integer;
count:longint; {变量count记录不同排列的个数,这里用于控制换行}
Procedure perm(k:integer);
var j,p,t:integer;
begin
if ① then
begin
inc(count);
for p:=1 to k do
write(a[p]:1);
write(' ');
if ( ② ) then writeln;
exit;
end;
for j:=k to n do
begin
t:=a[k]; a[k]:=a[j]; a[j]:=t;
③ ;
t:=a[k]; ④ ;
end
end;
begin
writeln('Entry n:');
read(n);
count:=0;
for i:=1 to n do a[i]:=i;
⑤ ;
end.
2. 由键盘输入一个奇数 P (P<100,000,000),其个位数字不是5,求一个整数 S,使 P×S = 1111...1 ( 在给定的条件下,解 S 必存在)。要求在屏幕上依次输出以下结果:
(1)S 的全部数字。除最后一行外,每行输出 50 位数字。 (2) 乘积的数字位数。
例1:输入p=13,由于13*8547=111111,则应输出(1)8547,(2)6
例2:输入p=147,则输出结果应为(1)755857898715041572184429327286470143613
(2)42,即等式的右端有42个1。
程序:
program ex402;
var
p,a,b,c,t,n:longint;
begin
while (true) do
begin
writeln ('Input p, the last digit is 1 or 3 or 7 or 9:');
readln(p);
if (p mod 2<>0)and(p mod 5<>0) then
⑥ ; {如果输入的数符合要求,结束循环 }
end;
a:=0; n:=0;
while (a<p) do
begin
a:=a*10+1; inc(n);
end;
t:=0;
repeat
b:=a div p;
write(b:1);
inc(t);
if ( ⑦ ) then writeln;
c:= ⑧ ; a:= ⑨ inc(n);
until c<=0;
dec(n);
writeln; writeln('n=', ⑩ );
end.

来源: http://hi.baidu.com/noip2007/blog/item/9bc3b9ee9f84d6292cf53457.html
第2个回答  2013-10-17
一.选择 1. 美籍匈牙利数学家冯·诺依曼对计算机科学发展所做出的贡献是( )。A. 提出理想计算机的数学模型,成为计算机科学的理论基础。B. 是世界上第一个编写计算机程序的人。C. 提出存储程序工作原理,并设计出第一台具有存储程序功能的计算机EDVAC。D. 采用集成电路作为计算机的主要功能部件。E. 指出计算机性能将以每两年翻一番的速度向前发展。 2.下列哪个不是CPU(中央处理单元)( )。A. Intel Itanium B. DDR SDRAM C. AMD Athlon64D. AMD Opteron E. IBM Power 5 3. 下列网络上常用的名字缩写对应的中文解释错误的是( )。A. WWW(World Wide Web):万维网。B. URL(Uniform Resource Locator):统一资源定位器。C. HTTP(Hypertext Transfer Protocol):超文本传输协议。D. FTP(File Transfer Protocol):快速传输协议。E. TCP(Transfer Control Protocol):传输控制协议。 4. 下面哪个部件对于个人桌面电脑的正常运行不是必需的( )。A. CPU B. 图形卡(显卡) C. 光驱 D. 主板 E. 内存 5. 下列哪个软件属于操作系统软件( )。A. Microsoft Word B. 金山词霸 C. Foxmail D. WinRAR E. Red Hat Linux 6. 下列哪个不是计算机的存储设备( )。A. 文件管理器 B. 内存 C. 高速缓存 D. 硬盘 E. U盘 7. 下列说法中错误的是( )。A. CPU的基本功能就是执行指令。B. CPU访问内存的速度快于访问高速缓存的速度。C. CPU的主频是指CPU在1秒内完成的指令周期数。D. 在一台计算机内部,一个内存地址编码对应唯一的一个内存单元。E. 数据总线的宽度决定了一次传递数据量的大小,是影响计算机性能的因素之一。 8. 彩色显示器所显示的五彩斑斓的色彩,是由红色、蓝色和( )色混合而成的。A. 紫 B. 白 C. 黑 D. 绿 E. 橙 9. 用静电吸附墨粉后转移到纸张上,是哪种输出设备的工作方式( )。A. 针式打印机 B. 喷墨打印机 C. 激光打印机 D. 笔式绘图仪 E. 喷墨绘图仪 10. 一台计算机如果要利用电话线上网,就必须配置能够对数字信号和模拟信号进行相互转换的设备,这种设备是( )。A. 调制解调器 B. 路由器 C. 网卡 D. 网关 E. 网桥 11. 下列哪个不是数据库软件的名称( )。A. MySQL B. SQL Server C. Oracle D. 金山影霸 E. Foxpro 12. 下列哪个程序设计语言不支持面向对象程序设计方法( )。A. C++ B. Object Pascal C. C D. Smalltalk E. Java 13. 由3个a,1个b和2个c构成的所有字符串中,包含子串“abc”的共有( )个。A. 20 B. 8 C. 16 D. 12 E. 24 14. 某个车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。已知某时刻该车站状态为空,从这一时刻开始的出入记录为:“进,出,进,进,出,进,进,进,出,出,进,出”。假设车辆入站的顺序为1,2,3,……,则车辆出站的顺序为( )。A. 1, 2, 3, 4, 5 B. 1, 2, 4, 5, 7 C. 1, 3, 5, 4, 6 D. 1, 3, 5, 6, 7 E. 1, 3, 6, 5, 7 15. 二叉树T,已知其前序遍历序列为1 2 4 3 5 7 6,中序遍历序列为4 2 1 5 7 3 6,则其后序遍历序列为( )。A. 4 2 5 7 6 3 1 B. 4 2 7 5 6 3 1 C. 4 2 7 5 3 6 1 D. 4 7 2 3 5 6 1 E. 4 5 2 6 3 7 1 16. 满二叉树的叶结点个数为N,则它的结点总数为( )。A. N B. 2 * N C. 2 * N – 1 D. 2 * N + 1 E. 2N – 1 17. 十进制数2004等值于八进制数( )。A. 3077 B. 3724 C. 2766 D. 4002 E. 3755 18. (2004)10 + (32)16的结果是( )。A. (2036)10 B. (2054)16 C. (4006)10 D. (100000000110)2 E. (2036)16 19. 在下图中,从顶点( )出发存在一条路径可以遍历图中的每条边一次,而且仅遍历一次。A. A点 B. B点 C. C点 D. D点 E. E点 20. 某大学计算机专业的必修课及其先修课程如下表所示: 课程代号C0C1C2C3C4C5C6C7课程名称高等数学程序设计语言离散数学数据结构编译技术操作系统普通物理计算机原理先修课程 C0, C1C1, C2C3C3, C7C0C6 请你判断下列课程安排方案哪个是不合理的( )。A. C0, C6, C7, C1, C2, C3, C4, C5 B. C0, C1, C2, C3, C4, C6, C7, C5C. C0, C1, C6, C7, C2, C3, C4, C5 D. C0, C1, C6, C7, C5, C2, C3, C4E. C0, C1, C2, C3, C6, C7, C5, C4 二.问题求解 (每题5分,共10分) 1. 一个家具公司生产桌子和椅子。现在有113个单位的木材。每张桌子要使用20个单位的木材,售价是30元;每张椅子要使用16个单位的木材,售价是20元。使用已有的木材生产桌椅(不一定要把木材用光),最多可以卖 元钱。 2. 75名儿童到游乐场去玩。他们可以骑旋转木马,坐滑行铁道,乘宇宙飞船。已知其中20人这三种东西都玩过,55人至少玩过其中的两种。若每样乘坐一次的费用是5元,游乐场总共收入700,可知有 名儿童没有玩过其中任何一种。 三.阅读程序 (每题8分,共32分) 1.program program1;var a, b, c, d, e: integer;begin a := 79; b := 34; c := 57; d := 0; e := -1; if (a < c) or (b > c) then d := d + e else if (d + 10 < e) then d := e + 10 else d := e - a; writeln(d);end.输出: 。 2.program program2;var i, j: integer; str1, str2: string;begin str1 := 'pig-is-stupid'; str2 := 'clever'; str1[1] := 'd'; str1[2] := 'o'; i := 8; for j := 1 to 6 do begin str1[i] := str2[j]; inc(i); end; writeln(str1);end.输出: 。 3.program progam3;var u: array [0..3] of integer; a, b, c, x, y, z: integer;begin read(u[0], u[1], u[2], u[3]); a := u[0] + u[1] + u[2] + u[3] - 5; b := u[0] * (u[1] - u[2] div u[3] + 8); c := u[0] * u[1] div u[2] * u[3]; x := (a + b + 2) * 3 - u[(c + 3) mod 4]; y := (c * 100 - 13) div a div (u[b mod 3] * 5); if((x+y) mod 2 = 0) then z := (a + b + c + x + y) div 2; z := (a + b + c – x - y) * 2; writeln(x + y - z);end输入:2 5 7 4输出: 。 4.program program4;var c: array[1..3] of string[200]; s: array[1..10] of integer; m, n, i: integer;procedure numara;var cod: boolean; i, j, nr: integer;begin for j := 1 to n do begin nr := 0; cod := true; for i := 1 to m do if c[i, j] = '1' then begin if not cod then begin cod := true; inc(s[nr]); nr := 0; end end else begin if cod then begin nr := 1; cod := false; end else inc(nr); end; if not cod then inc(s[nr]); end;end;begin readln(m, n); for i := 1 to m do readln(c[i]); numara; for i := 1 to m do if s[i] <> 0 then write(i, ' ', s[i], ' ');end.输入:3 101110000111 11000011111000000011输出: 。 四、完善程序 (前4空,每空2分,后5空,每空4分,共28分) 1.三角形内切圆的面积题目描述:给出三角形三边的边长,求此三角形内切圆(如下图所示,三角形的内切圆是和三角形三边都相切的圆)的面积。输入:三个正实数a、b、c(满足a+b>c,b+c>a,c+a>b), 表示三角形三边的边长。输出:三角形内切圆的面积,结果四舍五入到小数点后面2位。输入样例:3 4 5输出样例:3.14程序:program program1;var a, b, c, r, s, t: real;begin read(a, b, c); s := ( ① ) / 2; t := ② (s * (s - a) * (s - b) * (s - c)); r := t / s; writeln(3.1415927 * r * ③ : 0 : ④ );end. 2.Joseph题目描述:原始的Joseph问题的描述如下:有n个人围坐在一个圆桌周围,把这n个人依次编号为1,…,n。从编号是1的人开始报数,数到第m个人出列,然后从出列的下一个人重新开始报数,数到第m个人又出列,…,如此反复直到所有的人全部出列为止。比如当n=6,m=5的时候,出列的顺序依次是5,4,6,2,3,1。现在的问题是:假设有k个好人和k个坏人。好人的编号的1到k,坏人的编号是k+1到2k。我们希望求出m的最小值,使得最先出列的k个人都是坏人。输入:仅有的一个数字是k(0 < k <14)。输出: 使得最先出列的k个人都是坏人的m的最小值。输入样例:4输出样例:30程序:program program2;var i, k, m, start: longint; find: boolean;function check(remain: integer): boolean;var result: integer;begin result:=( ① ) mod remain; if( ② )then begin start := result; check := true; end else check := false;end;begin find := false; read(k); m := k; while ( ③ ) do begin find := true; start := 0; for i := 0 to k-1 do if( not check( ④ )) then begin find := false; break; end; inc(m); end; writeln( ⑤ );end.
答案可以自己去找