在哪里可以找到2007年noip初赛的试题和答案?

第13届全国信息学奥林匹克竞赛省预赛试题。

(普及组Pascal语言两小时完成)

●●●所有试题的答案都要求写在答题卡上,无效●●

a、单项选择题(***20题,每题1.5分,* * * 30分。每个问题有且只有一个正确答案。)

1.下列各项中,()不属于中央处理器。

A.控制器b .算术单元c .寄存器d .主板

2.在关系数据库中,存储在数据库中的数据的逻辑结构主要是()。

A.二叉树b .多分支树c .哈希表d .二维表

3.下列各项中,只有()不是计算机存储容量的常用单位。

A.字节

4.4的含义。ASCII码是()。

A.2 →十进制转换码B .美国信息交换标准码

C.数字的二进制编码d .能被计算机处理的字符的唯一编码

5.一个完整的计算机系统应该包括()。

A.系统硬件和系统软件b .硬件系统和软件系统

C.主机和外部设备d .主机、键盘、显示器和辅助存储器

6.6的意思。它是()。

A.通信技术b .信息技术c .网络技术d .信息学

7.7的意思。兰是()。

A.互联网局域网万男子

8.冗余数据是指可以从其他数据中导出的数据。例如,学生的数学、语文和英语成绩已经存储在数据库中。如果还存储了三科总成绩,则总成绩可视为冗余数据。冗余数据往往导致数据不一致。比如以上四项数据全部输入,由于操作失误导致总分不等于三科成绩之和,就会出现矛盾。下列关于冗余数据的说法中,正确的是()。

A.应该从数据库中删除所有冗余数据。

用高级语言编写的数据处理系统通常比用关系数据库编写的系统更容易消除冗余数据。

C.为了提高查询效率,可以在数据库中保留一些冗余数据,但更新时要进行兼容性检查。

D.做兼容性测试会降低效率,所以可以忽略数据库中的冗余数据。

9.在下列软件中,不属于NOIP竞赛(复赛)的推荐语言环境是()。

A.gcc B.g++ C.Turbo C D.Free Pascal

10.断电后仍能保存数据的有()。

A.硬盘b .缓存c .显存D. ram

11.下列关于计算机语言的说法中,正确的是()。

A.高级语言比汇编语言更高级,因为它的程序运行效率更高。

B.随着Pascal、C等高级语言的出现,机器语言和汇编语言退出了历史舞台。

c高级语言比汇编语言程序更容易从一台计算机移植到另一台计算机。

D.c是一种面向对象的高级计算机语言。

12.近20年来,许多计算机专家极力称赞递归算法是解决更复杂问题的有力工具。下列关于递归算法的说法中,正确的是()。

A.1977左右形成的标准计算机高级语言FORTRAN77禁止程序中的递归,原因之一是这种方法可能会占用更多的内存空间。

B.与非递归算法相比,递归算法解决同样的问题一般运行速度更快。

c对于更复杂的问题,用递归方式编程一般比用非递归方式更难。

d .对于定义的标准数学函数sin(x),应用程序中的语句“y = sin(sin(x));是递归调用。

13.不能被自身控制终止的循环成为“无限循环”。例如,在C语言程序中,语句“while(1)printf(" * ");”它是一个无限循环,运行时会无休止地打印*号。下列关于无限循环的陈述中,只有()是正确的。

A.没有算法可以判断任何程序和相应的输入数据是否会出现无限循环,因此,任何编译系统都不检查无限循环。

一些编译系统可以检测无限循环。

C.无限循环是一个语法错误。既然编译系统可以检查各种语法错误,那么它也应该能够检查无限循环。

D.死循环类似于多个进程中的“死锁”,死锁是可以检测到的,所以死循环也是可以检测到的。

14.在Pascal中,表达式(23或2 xor 5)的值是()。

A.18 B.1 C.23 D.32

15.在Pascal语言中,判断整数A等于0或B等于0或C等于0的正确条件表达式是()。

a . not((a & lt;& gt0)或(b & lt& gt0)或(c & lt& gt0))

b . not((a & lt;& gt0)和(b & lt& gt0)和(c & lt& gt0))

C.not ((a=0且(b=0))或(c & lt& gt0)

D.(a=0)和(b=0)和(c=0)

16.地上有A、B、C三根柱子。a柱上有10个中间带孔直径相同的圆盘,从上到下依次编号为1,2,3.....,A柱上的部分碟片可以通过B柱移入C柱或暂存在B柱上。如果B列的操作记录是“进、进、出、进、出、出、进、出、进、出、进、出、出、进、出、出”。那么,在C柱上,从下到上的数字是()。

a . 2 4 3 6 5 7 b . 2 4 1 2 5 7 c . 2 4 3 1 7 6d . 2 4 3 6 7 5

17.十进制数1770对应的八进制数是()。

3350 B.3351 C.3352 D.3540

18.设A = B =真,C = D =假,逻辑运算表达式值为假()。

A.(ĬA∧B)∨( C∧D∨A)B . ஸ(((A∧B)∨C)∧D)

C.A∧(B∨C∨D)∨D .(A∧(D∨C))∧B

19.(2070) 16+(34) 8的结果是()。

A.(8332)10 b .(208 a)16 c .(10000000110)2d .(20212)8

20.已知有7个节点的二叉树的第一根遍历是1 2 4 5 6 3 7(编号是节点的编号,下同),中间根遍历是4 2 6 5 1 7 3,那么二叉树的后根遍历是()。

a . 4 6 5 2 7 3 1 b . 4 6 5 2 1 3 7 c . 4 2 3 1 5 4 7d . 4 6 5 3 1 7 2

二、解题(***2题,每题5分,* * * 10分)。

1,(子集除法)除n个数(1,2,...n)分成r个子集。每个数恰好属于一个子集,没有两个不同的子集有相同的数或空集。将不同除法的总数写成S(n,r)。比如S(4,2)=7,七种不同的除法分别是{(1),(234)},{(2),(134)},{(3),(124)}。当n=6,r=3时,s (6,3) = _ _ _ _ _ _ _ _。

(提示:先固定一个数,剩下的五个数考虑S(5,3)和S(5,2),然后分析这两种情况下的原固定数。)

2.(最短路线)一个城市的街道是一个非常规则的矩形网络(见下图),有7条南北向的垂直街道和5条东西向的水平街道。从西南角的A走到东北角的B的最短路径是什么?___________

B

A

三、阅读程序写结果(***4题,每题8分,* * * 32分。)

1、程序j 301;

var i,a,b,c,x,y:整数;

p:数组[0..4]的整数;

开始

y:= 20;

对于i:=0到4 do read(p[I]);

readln

a:=(p[0]+p[1])+(p[2]+p[3]+p[4])div 7;

b:= p[0]+p[1]div((p[2]+p[3])div p[4]);

c:= p[0]* p[1]div p[2];

x:= a+b-p[(p[3]+3)mod 4];

if(x & gt;10)

则y:= y+(b * 100-a)div(p[p[4]mod 3]* 5)

其他

y:= y+20+(b * 100-c)div(p[p[4]mod 3]* 5);

writeln(x,',',y);

结束。

{注意:在这个例子中,给定的输入数据可以避免分母为0或者数组元素表越界。}

输入:6 6 5 5 3输出:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

2、程序j302

var a,b:整数;

var x,y:^integer;

程序fun(a,b:整数);

var k:整数;

begin k:= a;a:= b;b:= k;结束;

开始

a:= 3;b:= 6;

x:= @ a;y:= @ b;

fun(x^,y^);

writeln(a,',',b);

结束。

输出:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

3、程序j303

var a1:array[1..50]的整数;

var i,j,t,t2,n,n2:整数;

开始

n:= 50;

对于i:=1到n do a 1[I]:= 0;

N2:= round(sqrt(n));

对于i:=2到n2 do

如果(a1[i]=0)则

开始

T2:= n div I;

对于j:=2到t2做a 1[I * j]:= 1;

结束;

t:= 0;

对于i:=2到n do

如果(a1[i]=0)则

开始

写(我:4);Inc(t);

if (t mod 10=0)然后writeln

结束;

writeln

结束。

输出:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

_____________________________________________

4、程序j304

键入str 1 = string[100];

str 2 = string[200];

定义变量

s 1:str 1;S2:str 2;

function is alpha(c:char):Boolean;

Var i:整数;

开始

I:= ord(c);

如果((i & gt=65)和(i & lt=90))或((i & gt=97)和(i & lt=122))那么

isalpha:=true

else is alpha:= false;

结束;

函数is digit(c:char):Boolean;

var i:整数;

开始

I:= ord(c);如果(i & gt=48)和(i & lt=57)那么isdigit:=true

else is digit:= false;

结束;

过程展开(s 1:str 1;var S2:str 2);

var i,j:整数;a,b,c:char;

开始

j:= 1;c:= char(1);I:= 0;

while(我& lt=ord(s1[0])) do

贝京公司(一);c:= s 1[I];

如果c='-'那么开始{1}

a:= s 1[I-1];b:= s 1[I+1];

if (isalpha(a)和isalpha(b))或(isdigit(a)和isdigit(b))然后开始

第十届会议;

while(order(up case(a))& lt;order(up case(s 1[I+1]))do

开始

S2[j]:= a;Inc(j);公司(a);结束;

结束

其他

begin S2[j]:= c;Inc(j);结束;

结束{1}

否则开始S2[j]:= c;Inc(j);结束;结束;S2[0]:= char(j-2);结束;

begin readln(s 1);展开(s1,S2);writeln(S2);

结束。

输入:WER2345d-H454-82QQ输出:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _输出:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _输出

四、完善程序(前四空,每空2.5分,后六空,每空3分,***28分)。

1,(求字符逆序)下面这个程序的作用是输入几行字符串,每行输入,该行逆序输出。最后,键入-1来终止程序。

请完成程序。

程序j 401;

键入str 1 = string[100];

var线:str 1;kz:整数;

过程反向(变量s:str 1);

var I,j:整数;t:char;

开始

I:= 1;j:=长度(s);

while(我& lt开始吧

t:= s[I];s[I]:= s[j];s[j]:= t;

;;

结束;

结束;

开始

writeln('继续?-1表示结束);

readln(kz);

while ( )do

开始

readln(行);

writeln(行);

writeln('继续?-1表示结束);

readln(kz);

结束;

结束。

2 2 3 3

2 -1 1 3

4 1 1 5

4 4 5 5

2.(棋盘覆盖问题)在2k×2 k个正方形组成的棋盘中,只有一个正方形与其他正方形不同(图中标记为-1的正方形),称为特殊正方形。目前L形纸片(占据3个小方格)覆盖棋盘除特殊方格外的所有部分,每张纸片不得重叠,所以用的纸片数正好是(4 k-1)/3。在下表给出的覆盖方案中,k=2,相同的3个数字形成一张纸。

下面给出的程序是用分治法设计的。棋盘分为四个部分,依次处理左上角、右上角、左下角、右下角,递归。请完成程序。

程序j402

arr1=array[1..65]的整数;

arr2=array[1..arr1的65];

var板:arr2平铺:整数;size,dr,dc:整数;

程序棋盘(tr,tc:整数;dr,dc:整数;var大小:整数);

var t,s:整数;

开始

if(size = 1)then;

t:=平铺;inc(瓷砖);

s:=尺寸div 2;

如果然后棋盘(tr,tc,dr,dc,s)开始

board[tr+s-1]:= t;

结束;

如果(dr & lttr+s)和(dc & gt=tc+s)那么棋盘(tr,tc+s,dr,dc,s)

else begin board[tr+s-1][TC+s]:= t;

;结束;

if(dr & gt;=tr+s)和(dc & lttc+s)然后棋盘(tr+s,tc+s,dr,dc,s)否则开始

board[tr+s][TC+s]:= t;

;结束;

if(dr & gt;=tr+s)和(dc & gt=tc+s)然后棋盘(tr+s,tc+s,dr,dc,s)

否则begin board[tr+s][TC+s]:= t;

;结束;

结束;

过程prt1(n:整数);

var I,j:整数;

开始

对于I:=1到n做开始

对于j:=1到n做写(board[I][j]:3);

writeln

结束;

结束;

开始

writeln('输入大小(4/8/16/64):');

readln(大小);writeln('输入特殊块的位置(x,y):');

readln(dr,DC);板[dr][DC]:=-1;

平铺:= 1;棋盘(1,1,dr,dc,大小);prt1(大小);

结束。

2007年NOIP普及组参考答案及评分标准(Pascal语言)

1.选择题:(65438+每题0.5分)

题号是1 23455 6789 10。

回答D D C B B B B C C A

题号是112 13 14 15 16 17 18 19 20。

回答C A A A B D C D A A

二、解题: (每题5分)

1.90 2.210

第三,阅读程序写出结果

1.15,46 (4点为1的数,1点无逗号)

2.3, 6

3.2 3 5 7 11 13 17 19 23 29

31 37 41 43 47

4.wer2345defgh45456782qqq

四、完善程序(前四次清空(①-④),每次清空2.5分,后六次清空(⑤-⑩),每次清空3分)

(注意:在下面的过程中可能有一些等价的填空方法。各省可以请自己的专家在电脑上审核,不一定要报科委审核。)

1.

① inc(i)或i:=i+1

② dec(j)或j:=j-1

③kz & lt;& gt-1

④反向(直线)

2.

⑤出口

⑥(dr & lt;tr+s)和(dc & lttc+s)

⑦棋盘(tr,tc,tr+s-1,tc+s-1,s)

⑧棋盘(tr,tc+s,tr+s-1,tc+s,s)

⑨棋盘(tr+s,tc,tr+s,tc+s-1,s)

⑩棋盘(tr+s,tc+s,tr+s,tc+s,s)