最新noip普及组初赛模拟试卷1附答案(供参考)

最新noip普及组初赛模拟试卷1附答案(供参考)
最新noip普及组初赛模拟试卷1附答案(供参考)

1.最新noip普及组初赛模拟试卷1附答案(供参考)

A.指数与基数

B. 尾数与小数

C. 阶码与尾数

D. 整数与小数

2.在衡量存储器容量时,计量单位由小到大的顺序是(A )

A. KB GB TB

B. TB KB GB

C. TB GB KB

D. KB TB GB

3. 下列( D)不属于计算机病毒的预防措施

A. 拥有计算机病毒检测扫描器

B. 拥有实时监控程序

C. 对未知计算机病毒进行检测

D. 对已知的计算机病毒进行杀毒

4. 文件夹组织是一个有层次的树状结构,其中最顶层的是(C )

A. 我的电脑

B. 网上邻居

C. 桌面

D. 资源管理器

5. (D )是用来在计算机之间进行文件传输。利用该服务不仅可以从远程计算机上获取文件,而且还可以将文件从本地机器传送到远程计算机上。

A. DNS

B. NFS

C. WWW

D. FTP

6.下列4个不同数制表示的数中,最大的一个数是(C )

A. 十进制数220.1

B. 二进制数.1

C. 八进制数334.1

D. 十六进制数DC.1

7. 若采用32*32点阵的汉字字模,存放1600个汉字信息需要的存储容量是( B)KB。

A.25

B.200

C. 800

D.1600

8. 十进制数-103的补码是(A )

A. B. C. D. 00011001

9. 下列软件依次对应于图像浏览、屏幕撷取、文件压缩、杀毒软件的排列顺序是(D )。①HyperCam ②WinRAR ③NortonAntiVirus ④ACDSee

A. ①②④③

B. ②①③④

C. ③④②①

D. ④①②③

10.在微型计算机中,常用( A)码实现十进制数与二进制数之间的自动转换。

A. BCD码

B. ASCII码

C. 海明码

D. 机内码

11. 插入排序是一种简单实用的工具,在对数组排序时,我们可能用二分查找,对要插入的元素快速找到在已经排好元素序列中的位置。下面的描述中正确的是(C )。

A. 二分查找的时间复杂度为O(lgN),因此排序的时间复杂度为O(N*lgN)

B. 二分查找的时间复杂度为O(N),因此排序的时间复杂度为O(N*lgN)

C. 二分查找的时间复杂度为O(lgN),排序的时间复杂度不变,为O(N*N)

D. 二分查找的时间复杂度为O(N),排序的时间复杂度不变,为O(N*N)

12. 微型计算机在工作中电源突然中断,则计算机中( C)全部丢失,再次通电后也不能恢复。

A. ROM和RAM中的信息

B. ROM中的信息

C. RAM中的信息

D. 硬盘中的信息

13. 如下的叙述中哪一个是类型的正确描述( D)

A. 是一组值的集合

B. 不包含子结构的信息

C. 一条信息或是其值属于某个类型的一条记录

D. 指一组值的集合以及定义在该集合上的一组操作

14.Google 是万维网上最大的搜索引擎,使用户能够访问一个包含超过 80 亿个网址的索引。Google 坚持不懈地对其搜索功能进行革新,始终保持着自己在搜索领域的领先地位。 Google的创始人是( A )

A、Sergey Brin 、 Larry Page

B、陈天桥

C、Bill Gates

D、 Alan M. Turing

答案:A (塞奇·布林、拉里·佩奇)

15.下列说法中不正确的是( D )

A、在同一台PC机上可以安装多个操作系统

B、在同一台PC机上可以安装多个网卡

C、在PC机的一个网卡上可以同时绑定多个IP地址

D、一个IP地址可以同时绑定到多个网卡上

16.数组A[0..5,0..6]的每个元素占5个单元,将其按列优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5,5]的地址为( A )

A.1175

B.1180

C.1205

D.1210

分析:1、搞清楚列优先的含义

2、A[5,5]前面有0,1,2,3,4共5列,每列有0..5共6个元素,第5列前面有0..4五个元素,共有5*6+5=35

3、地址:(5*6+5)*5+1000=1175

17.在下列各软件中,不属于NOIP竞赛(复赛)推荐使用的语言环境有(B)。

A. gcc/g++

B. Turbo Pascal

C. RHIDE

D. free pascal

18.将5个数的序列排序,不论原先的顺序如何,最少都可以通过(B )次比较,完成从小到大的排序。

A. 6

B. 7

C. 8

D. 9

分析1、既然是追求最少比较次数,必定不会用n^2的算法排序。

2、排序本质可说是循环查找各个位置上数

(1)用二分查找

(2)总次数=3+2+2=7

19.高度为n的均衡的二叉树是指:如果去掉叶结点及相应的树枝,它应该是高度为n-1的满二叉树。在这里,树高等于叶结点的最大深度,根结点的深度为0,如果某个均衡的二叉树共有2381个结点,则该树的树高为(B)。

A. 10

B. 11

C. 12

D. 13

分析1、满二叉树指的是:对于第i层,节点数必定是2^i。

2、有i层的满二叉树的节点总数为2^(i+1)-1

3、假定均衡树的层数为x,那么该均衡树对应的满二叉树(比均衡树小1层)节点数

为2^x-1,则必定有:

2^x-1<2381<2^(x+1)-1

X=11。

20.八进制数25.63转换成二进制数为( B )

A.10101.11011

B.10101.110011

C.10101.0110011

D. 10101.111011

问题求解

10名划船运动员中,3人只会划左舷,2人只会划右舷,5人左右舷都会划,从中选6人,平均分在左、右舷,共有多少种不同的选法?

?采用穷举划左舷的所有情况进行分析

?1、会划左舷的全划左舷。左舷一共只有1种,右舷为7选3,方法共有:

?C(3,3)*C(7,3)=35

?2、派一个全能的划左舷,共有方法:

?C(5,1)*C(3,2)*C(6,3)=5*3*20=300

?3、派二个全能的划左舷,共有方法:

?C(5,2)*C(3,1)*C(5,3)=10*3*10=300

?4、派三个全能的划左舷,共有方法:

?C(5,3)*C(3,3)*C(4,3)=10*1*4=40

?因此,方法数共有:35+300+300+40=675

2.一位银矿勘探员无力预付3月份的房租。他有一根长31英寸的纯银条,因此他和女房东达成如下协议。他说,他将把银条切成小段。3月份的第一天,他给女房东1英寸长的一段,然后每天给她增加1英寸,以此作为抵押。勘探员预期到3月份的最后一天,他能全数付清租金,而届时女房东将把银条小段全部还给他。3月份有31天,一种办法是把银条切成31段,每段长1英寸。可是这处花很多功夫。勘探员希望既履行协议,又能使银条的分段数目尽量减少。例如,他可以第一天给女房东1英寸的一段,第二天再给1英寸的一段,第三开他取回这两段1英寸的而给她3英寸的一段。假设银条的各段是按照这种方式来回倒换的话,勘探员至少需要把他的银条切成______段?

?31 / 2 = 15.5

即只要用最少的数组成1至15的所有组合就行了,因为16至31都可以通过前面的

数与16来组成,得到必有数值16

?16 / 2 = 8

同理,只要用最少的数组成1至8的所有组合就可以了,因为9-15都可以通过前面

的数与8来组成,得到必有数值8

?同理可得,8 / 2 = 4

4 / 2 = 2

?又因为1也是必有数值,所以银条最少的组合为5,分别是:1, 2, 4, 8, 16

写运行结果

1.VAR A,B:INTEGER;

PROCEDURE P(VAR X:INTEGER;Y:INTEGER); VAR M,N:INTEGER;

BEGIN

M:=X*Y;

X:=X+5;

Y:=Y+5;

N:=X*Y;

WRITELN(M:4,N:4)

END;

BEGIN

A:=5;B:=3;

P(A,B);

P(A,B)

END

运行结果为:15 80

30120

2.function fun(x:integer):integer;

begin

if(x=1)or(x=2)then fun:=3

else fun:=x-fun(x-2)

end;

begin

writeln(fun(19));

readln;

end.

输出 8

3. var m,n,i,p,k:integer;

r:array[1..200] of integer;

b: boolean;

begin

m:=6;n:=2;

for i:=1 to m-1 do r[i]:=i+1;

r[m]:=1;i:=0;p:=1;b:=true;

while b do

begin

i:=i+1;k:=p;p:=r[p];

if k=p then begin writeln(p) ;b:=false end

else if i=n+1 then

begin

write(p,' ');i:=0;p:=r[p];r[k]:=p;

end

end

end.

输出 4 2 1 3 6 5

4. const

maxn =10000;

var

i,j,k ,n,r,p,g:longint;

a:array [1..maxn] of longint;

function gcd(m, n: longint): longint;

var r: longint;

begin

while n< >0 do

begin

r:=m mod n;

m:=n;

n:=r

end;

gcd:=m

end;

begin

n:= 1000;

r:=202;

for i:=1 to n-r do a[i]:=n-i+1;

for i:=2 to r do

begin

k:=i;

for j:=1 to n-r do

if gcd(k,a[j]) > 1 then

begin

g:= gcd(k,a[j]);

k:=k div g;

a[j]:=a[j] div g;

if k = 1 then break

end

end;

p:= 1 ;g:=0;

for i:=1 to n-r do

begin

p:=p*a[i];

while p mod 5 = 0 do

begin

p:=p div 5;

g:=g+1;

end;

p:= p mod 5;

end;

writeln(g)

end.

输出 151

完善程序

求元素之和最大的子方阵:在m ×n (m ,n ≤20)的正整数数字方阵中,找出一个p ×q 的子阵(1≤p ≤m ,1≤q ≤n )使其元素之和最大。例如,下面5×4的数字阵中,元素之和最大的一个2×3子阵。

5×4数字阵 元素之和最大的2×3子阵为 var a:array[1..20,1..20] of integer;

m,n,p,q,i,j,max,p1,q1,s,i1,j1:integer; begin for i:=1 to 20 do for j:=1 to 20 do a[i,j]:=0; readln(m,n);

for i:=1 to m do

begin

for j:=1 to n do read(a[i,j]);

readln

3 8

4 22 11 1 7 9

5 21 6

2 10

3 8

9 2 7

12 3 5 21 6 10 3 8

end;

readln(p,q);

max:=0;

for i:=1 to m-p+1 do

for j:=1 to n-q+1 do

begin

①;

for i1:=i to p+i-1 do

for j1:=j to q+j-1 do

②;

if s>max then begin

③;

p1:=i;

q1:=j

end;

end;

for i:=p1 to ④do

begin

for j:=q1 to ⑤do

write(a[i,j]:3);

writeln

end;

readln

end.

将一个含有运算符为:(、)、+、-、*、/、^(乘幂运算)、~(求负运算)的中缀表达式,如:((1+2)*5)^2-(3+5)/2转化为后缀表达式,如:12+5*2^35+2/-.

[解题思路]将中缀表达式转化为后缀表达式,首先规定运算符的优先数如下:

┌───┬───┬───┬─────┬──────┬───┬───┐

│运算符│( │) │+,-│* ,/ │~ │~ │

├───┼───┼───┼─────┼──────┼───┼───┤

│优先数│0 │ 1 │ 2 │ 3 │ 4 │ 5 │

└───┴───┴───┴─────┴──────┴───┴───┘1.若输入是运算量,则将该运算量输出;

2.若是左括号“(”,则将该符号的优先数压入设置的运算符堆栈e[p]中去;

3.输入运算符优先数是2,3,4,5时,如果栈空,则将运算符的优先数进栈。如果栈不空,则将它与栈顶元素进行比较,倘若优先数大于栈顶元素的优先数,则进栈;小于顶元的,则顶元退栈并输出该运算符,然后再继续比较,直到大于顶元或栈空时进栈;

4.若是右括号“)”,同时栈顶元又为左括号“(”,则栈顶元退栈,并抹去右括号“)”.否则转3处理;

5.输入完而栈非空,则将栈内内容逐一退栈并输出。所有输出的结果就为后缀表达式。

过程中用到的相关数据结构如下:

type arraydata = array[1..100] of string[20];

const fh:array[1..8] of string[1]

=('(',')','+','-','*','/','~','^');

b:array[1..8] of byte =(0,1,2,2,3,3,4,5);

var d: arraydata; {存储运算量及运算符号}

i,j,m,k: byte;

[过程程序]

procedure hzbds(var d: arraydata; var m: byte );

var: array [ 1'-. 100 ] of byte;

i,p,k ,bi:byte;

bl: boolean;

begin

p:=O;k:=1;bj:=0;

while k<=m do

begin

if ___(1)___ then

begin

p:=p+1;e[p]:=1

end

else begin

for i:=2 to 8 do

if ___(2)___ then

begin

b1:= true;

repeat

if ___(3)___ then

begin

p:= p+1 ;e[p]:=i;bj:= 1 ;b1:= false

end

else if ____(4)___ then

if e[p] < >1 then

begin

p:=p+1;e[p]:=i;bj:=1;b1:=false

end

else if d[k] < >')' then

begin

p:=p+1;e[p]:=i;bj:=1;b1:=false

end

else begin

___(5)___;bj:= 1 ;b1:= false;

end

else begin

write(fh[e[p]] ,' ') ;p:=p-1

end;

until b1 = false;

end

if ___(6)___ then write(d[k] ,' ') else bj:=0;

end;

k:=k+1

end

b1:= true;

repeat

if p=0 then b1:= false

else begin

___(7)___;p:=p-1;

end

until b1 = false;

writeln;

end;

答案:

d[k]:='('

d[k]:=fh[i]

p=0

b[e[p]] < b[i]

p:=p-1

bj=0

write(fh[e[p]],'')①s:=0 ②s:=s+a[i1,j1] ③max:=s ④p1+p-1 ⑤q1+q-1

相关主题
相关文档
最新文档