最新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