不是VIP会员,不能显示答案,请在后台“我的信息” 在线升级 VIP

一.单项选择题(共20题,每题1.5分,共计30分,每题有且仅有一个正确答案.)

1. 下列设备不具有计算功能的是:

  • A.笔记本电脑
  • B.液晶显示器
  • C.智能手机
  • D.电子计算器

2. 断电之后仍能保存数据的是:

  • A.内存
  • B.寄存器
  • C.显存
  • D.硬盘

3. 二维数组定义a:array[0..50,0..7]of boolean,则数组a需要存储空间的字节数是:

  • A.51
  • B.102
  • C.408
  • D.916

4. 下列无符号数中,最小的数是:

  • A.(1100010)2
  • B.(99)10
  • C.(143)8
  • D.(63)16

5. 以下运算结果为FALSE的是:

  • A.not(9)
  • B.(9>=4) and (11<11)
  • C.not (FALSE)
  • D.(9<8) or (9>=9)

6. 以下有关算法的理解,不正确的是:

  • A.算法的每一步必须是明确的、无异议的
  • B.递归算法就是在某个过程或函数中,自己调用了自己
  • C.对于顺序结构、选择结构、循环结构这三种算法结构,解决同一个问题只能用一种
  • D.计算机算法必须要有结果输出

7. 无符号8位二进制数能够表示的最大十进制数是:

  • A.256
  • B.255
  • C.128
  • D.127

8. 设栈S和队列Q的初始状态为空,元素a1,a2,a3,a4,a5,a6依次通过栈S,一个元素出栈后即进入队列Q若出队的顺序为a2,a4,a3,a6,a5,a1,则栈S的容量至少应该是:

  • A.2
  • B.3
  • C.4
  • D.5

9. 在使用高级语言编写程序时,一般提到的“空间复杂度”中的“空间”是:

  • A.程序运行时理论上所占的硬盘空间
  • B.程序运行时理论上所占的数组空间
  • C.程序运行时理论上所占的内存空间
  • D.程序減文件理论上所占的硬盘空间

10. 字符的ASCII码对应的二进制数为.1010100,则字符“H”的ASCII 码对应的二进制是:

  • A.1000111
  • B.1010000
  • C.1001001
  • D.1001000

11. 某处于环境恶劣高山之巅的气象台要在短期内接入Internet网,现在要选择连接山上山下节点的传输介质,恰当的选择是:

  • A.无线传输
  • B.光缆
  • C.双绞线
  • D.同轴电缆

12. 在程序运行过程中,如果递归调用的层数过多,引发错误的原因是:

  • A.系统分配的栈空间溢出
  • B.系统分配的堆空间溢出
  • C.系统分配的队列空间溢出
  • D.系统分配的链表空间溢出

13. 己知二个顺序表由256个从小到大排列的整数组成,那么釆用顺序查找算法,最坏情况下的査找次数是:

  • A.8
  • B.10
  • C.128
  • D.256

14. 如果开始时计算机处于大写状态,先按照字键A、字母键B、字母键C、字母键D、Backspace顺序按键,然后按Backspace、字母键D、字母键C、字母键B、字母键A的顺序按键,现在按以上方式反复按键。即A、B, C、D、Backspace、Backspace、D、C、B、A、A、B、C、D、Backspace、Backspace、D、C、B、A......按键 100次后,屏幕上显示的第75个字符是:

  • A.A
  • B.B
  • C.C
  • D.D

15. 假设A=15,B=16,C=17,D=18,逻辑运算表达式A and B or C and D的值是:

  • A.15
  • B.16
  • C.17
  • D.18

16. 要求以下程序的功能是计算:.s=1+1/2+1/3+...+1/50 var n:integer; s:real; begin s:=1.5; for n:=50 downto 3 do s:=s+1 div n; writeln(s:6:4); end. 程序运行后输出结果错误,导致错课结果的:

  • A.s:=1.5
  • B.for n:=50 downto 3 do
  • C.s:=s+1 div n
  • D.writeln(s:6:4)

17. 有以下程序: var s,a,n:integer: begin s:=0;a:=1;readln(n); repeat s:=s+1;a:=a-3; until a=n; writeln(s) ; end. 若要使程序的输出值为3,则应该从键盘给n输入的值是:

  • A.0
  • B.-2
  • C.-5
  • D.-8

18. 后缀表达式1 34 + 5 * 56 7 / -计算后的值是:

  • A.167
  • B.163
  • C.17
  • D.-5

19. 有6个一样的乒乓球,放到3个一样的瓶子中,共有不一样的放法是:

  • A.3
  • B.7
  • C.14
  • D.18

20. 满二叉树是一种特殊的二叉树,它除了最底下一层的结点没有任何子结点外,其他所有节点都有两个儿子结点,如右图是一颗3层的满二叉树。那么,一棵有6层的满二叉树,共有结点个数是:

  • A.31
  • B.32
  • C.63
  • D.64

二.问题求解(共2小题,每题5分,共10分)

1. 在n个无序的正整数中,同时查找最大值和最小值。如有2个正整数5, 4,同时找出最大值和最小值最少比较次数为1次。问:茬6个无序的正整数中同时找出最大值和最小值,最少比较次数为_____次。
答案:8

2. 给你一个3X3的幻方,幻方中的数都是正整数。幻方具有如下特性,它的每一行每一列和二条对角线上的各数之和为定值。但很可惜有几个数丢失了,对于给定的缺失数字的3阶幻方,求出所有缺失的数。
答案:23 93 58 203 122 41

三.阅读程序写结果(共4题,每题8分,共计32分)

1.

Program cx2016p1;
var a:integer; 
    c:string;
begin 
 readln(a); 
 c:='no test' ; 
 if a  div  10>=3 then
 if a  div  10>=4 then 
 if a  div  10>=5 then
 if a  div  10>=6 then c:='HIGH'
 else c:='AAA' else c:='BBB' else c:='CCC' else c:='TEST';
 writeln(c);
end.
输入:35
输出:CCC

2.

Program cx2016p2; 
var a, b, c: integer;
procedure suan(var x:integer; y:integer); 
var m, n: integer;
begin  
 m:=x*y; x:=x+1; 
 y:=y+10; n:=x+y;
 writeln('x=,x,'y=',y,'m=',m,'n=',n);
end; 
begin
  a:=1; b:=2;
  suan(a,b);
  suan(a,b);
end.
输出:x=2 y=12 m=2 n=14|x=3 y=12 m=4 n=15

3.

Program cx2016p3;
var x:string;
  i, j,n: integer;
  a:array[0..20, 0..20] of integer;
begin
  readln(x);
  n:=length(x);
  for i:=1 to n do
    for j:=1 to n do
	  if x[i]=x[n-j+1] then a[i,j] :=a[i-1, j-1]+1
	  else if a[i-1, j]>a[i, j-1] then a[i, j] :=a[i-1,j]
	                              else a[i, j] :=a[i, j-1];
  writeln(a[n, n]);
end.
输入:acbfaebkbga
输出:5

4.

Program cx2016p4;
var n:integer;
    first:boolean;
function find(n:integer):integer;
 var a, b, c:integer;
 begin
  a:=1;
  b:=1;
  repeat
   c:=a+b;
   a:=b;
   b:=c;
  until b>=n;
if b=n then find:=b else find:=a;
end;
procedure p(n:integer);
var a:integer;
begin
a:=find(n);
if first then begin write(a); first:=false; end
         else write('+', a);
if a<n then p(n-a);
end;
begin
  readln(n);
  first:=true;
  p(n);
end.
输入:143
输出:89+34+13+5+2

四.完善程序(第5、6两空,每空2分,其他8,每空3分,共28分)

1. 买糖果
【问题描述】
要过春节了,多多家里总要准备点糖果招待亲朋好友。现在市场上有N种不同类型的糖果,每种糖果数量无限多。第i种糖果每颗的价格是P_i,现在有C—_i个朋友想吃这种糖果。
现在多多有B元钱去买糖果。他最多可以给多少个朋友买到糖果?所有的朋友都只吃他们喜欢类型的一颗糖果。
例如:现在有50块钱,有5种不同类型的糖果:
糖果类型 每颗糖果价格 想吃该类型糖果的朋友数量
1 5 3
2 1 1
3 10 4
4 7 2
5 60 1
显然,多多不能购买第5种类型的糖果,因为他钱不够。
下面的购买方案是最优的:
买1颗类型2的糖果,买3颗类型1的糖果,买2颗类型4的糖果,买2颗类型3的糖果。总共花费1+3*5+2*7+2*10=50,这样,多多最多满足1+3+2+2=8个朋友的糖果需求。
【输入格式】
第一行:两个用空格隔开的整数N和B
第2..N+1行:每行两个整数:P_i和C_i
【输出格式】
一行:一个整数,表示最多可以让多少朋友吃到糖果
【输入样例】
5 50
5 3
1 1
10 4
7 2
60 1
【输出样例】
8
【程序清单】

PROGRAM CX2016P5;
var n,i,j,k,t,s:integer;
   a,b:array[0..100] of integer;
Procedure sort; //插入排序
  var j,i,x,y:longint;
Begin
  a[0]:=-maxint;
  for i:=2 to n do
  begin
  x:=a[i];
  y:=b[i];
  _____j:=i-1______ ;
  While x<a[j] Do
    Begin
	  a[j+1]:=a[j];
	  b[j+1]:=b[j];
	  j:=j-1;
    End;
	 _____a[j+1]:=x______ ;
	 _____b[j+1]:=y______ ;
  End;
End;
begin
  read(n,s);
  for i:=1 to n do
  read(a[i],b[i]);
  sort;
  for i:=1 to n do
  begin
   if s>=a[i]*b[i] then
     begin
	   k:=k+b[i];          
	   s:=s-a[i]*b[i]; 
	 end
   else
     begin
	    _____k:=k+s div a[i]______ ;
	   break;
    end;
  end;
   _____writeln(k);
 ______ ;
end.

2. 有色格子数
【问题描述】
在多多参加的益智兴趣课中,老师设置了一个有色格子数的过关益智游戏。老师出示一张有若干个已填色的5X5的正方形( 每个单元格是一个小正方形)。
第1关:请说出5X5的原始图(如图1所示)正方形中有色格子数(含有7个有色格子)。



图1:5X5原始图

第2关:将图1原始图这个正方形顺时针旋转90度,然后叠加在原始图1之上,得到新正方形图2,请说出叠加后的正方形中有色格子数(含有13个有色格子)。


图2:第1次叠加后的效果

第 3 关:将原始图1在第1次旋转的基础上再顺时针旋转90度,叠加到图2之上,得到新正方形图3,请说出叠加后的正方形中有色格子数(含有19个有色格子)。


图3:第2次叠加后的效果

第4关: 将原始图1在第2次旋转的基础上再顺时针旋转90度,叠加到 图3之上,得到新正方形图4,请说出叠加后的正方形中有色格子数(含有25个有色格子)。


图4:第3次叠加后的效果

多多为了快速给出正确的答案;编写了一段程序。

【输入格式】
第一行一个整数n。接下来n行,每行n个“0”或“1”构成的序列,表示正方形的初始状态。其中“0”表示此处的小正方形没有填充颜色的,“1”表示此处正方形已经是填充颜色的。
【输出格式】
输出文件共四行分别为各关中有色格子的数量。
【输入样例】
5
10100
10001
01100
01000
00000

【输出样例】
7
13
19
25
【程序清单】

PROGRAM CX2016P6;
var i,j,n,k,l:longint;
   d:char;
   a,b,c:array[0..30,0..30] of boolean; //a记录是旋转数组//b记录的是叠加数组
function count:longint;
var i,j,t:longint;
begin
  t:=0;
  for i:=1 to n do
    for j:=1 to n do
	  if b[i,j]=true then inc(t);
	  _____count:=t______;
end;
procedure work; //旋转和叠加
var i,j:longint;
begin
  for i:=1 to n do
    for j:=1 to n do
	  begin
	    c[i,j]:=a[i,j];
		_____a[i,j]:=false______;
      end;
  for i:=1 to n do
    for j:=1 to n do
	  if c[i,j]=true then
        begin
		  _____b[j,n-i+1]:=true______;
		  _____a[j,n-i+1]:=true______;
		end;
end;
begin
  readln(n);
  for i:=1 to n do
    begin
	  for j:=1 to n do
	    begin
		  read(d);
		  if d=1 then b[i,j]:=true else b[i,j]:=false;
		  a[i,j]:=b[i,j];
		end;
        readln;
	end;
  writeln(count);
  for i:=1 to 3 do
	begin
	  _____work______;
	  writeln(count);
	end;
end.