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

一、选择题(每题有且仅有一个正确答案,选对得1.5分,选错.不选或多选均不得分)

1. 下面关于CPU的说法不正确的是:

  • A.CPU主要由运算器、控制器和寄存器组三大部分组成。
  • B.不同型号的CPU指令系统可能是不同的。
  • C.64位CPU必须安装64位操作系统。
  • D.CPU访问高速缓存的速度比访问主存储器快。

2. 下面关于计算机程序语言的说法不正确的是:

  • A.程序设计语言一般可划分为低级语言和高级语言两大类,机器语言属于低级语言。
  • B.汇编语言就是一种机器语言,它的书写格式很大程度上取决于特定计算机的计算指 令。
  • C.Pascal、C、C++属于高级语言,这类语言大大提高了程序设计的效率,便于人们进行交流。
  • D.编译程序能将高级程序设计语言书写的源程序,翻译成等价的机器语言格式的目标程序。

3. 在TCP/IP网络体系结构中,与TCP协议在同一层的协议是:

  • A.IP协议
  • B.FTP协议
  • C.UDP协议
  • D.HTTP协议

4. 下列不是浏览器软件的是:

  • A.Microsoft Edge
  • B.Internet Explorer
  • C.Mozilla Firefox
  • D.Microsoft Excel

5. 第四代移动通信技术简称为4G,下列属于4G网络制式的是:

  • A.TD-LTE
  • B.TD-SCDMA
  • C.WCDMA
  • D.GSM

6. 下列关于HTTP协议的说法正确的是:

  • A.HTTP是快速文件传输协议的缩写。
  • B.HTTP协议是一个客户端和服务器端请求和应答的标准,客户端向服务器端的指定端口发起HTTP请求。
  • C.HTTP协议是用于从本地浏览器传输超文本到WWW服务器的传输协议。
  • D.HTTPS是简化版的HTTP协议,由于安全性弱,不适宜用于万维网上安全要求髙的通讯。

7. 下面不同进制的数中,最大的是:

  • A.107.5D
  • B.6
  • C.5H
  • D.1101101.1B
  • E.1101100.1B

8. 计算机采用标准ASCII码对字符进行编码,共128个,码值在存储时占用一个字节中的:

  • A.低7位
  • B.高7位
  • C.任意7位
  • D.全部8位

9. 某计算机中采用16X16 数字化点阵表示一个汉字,字模中的每一个点用一个一进制位存储,则存储1024个汉字所需的存储空间约为:

  • A.32B
  • B.16KB
  • C.32KB
  • D.32MB

10. 下列关于图深度优先搜索和广度优先搜索说法不正确的是:

  • A. 深度优先搜索类似于树的先序遍历
  • B.广度优先搜索类似于树的中序遍历
  • C.广度优先搜索遍历图的时间复杂度与和深度优先搜索相同
  • D.广度优先搜索遍历图时访问顶点的顺序和深度优先搜索不同

11. 有一栈容量足够大的空栈S,元素序列A、B、C、D、E、F依次进栈,其间允许进栈、出栈交替执行,但不允许连续四次执行进栈操作,则不可能的出找序列是:

  • A.ABCDEF
  • B.FEDCBA
  • C.ABCFED
  • D.ABCDFE

12. 线性表(ai,a2,a3,…,an)若采用顺序存储结构,每个数据元素占4个存储单元,第一个数据元素al的存储地址为800(按十进制计算),则数据元素a5的存储地址为:

  • A.812
  • B.816
  • C.818
  • D.820

13. 设A=False,B=True,C=False,D=True,则与逻辑表达式A∨B∧¬C值不同的是:

  • A.A∨B∧D
  • B.A∨B∧DVC
  • C.B∧C∨D
  • D.A∧¬C∨A∧D

14. 己知一个线性表(36, 43, 25, 77, 45, 28, 33, 54),假定采用散列函数h(key)=key%9 (%为求余运算)依次计算散列地址,并存储在散列表A[0..8]中。若采用线性探测方法解决冲突,则线性表中的元素“54”在散列表中的位置为:

  • A.A[0]
  • B.A[2]
  • C.A[3]
  • D.A[8]

15. 若算术表达式“c-a*(b+d)”釆用二叉树表示,则合理的树结构为:

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

16. 某一序列中A元素与B元素的数值相同,且A元素在B元素前面,现对该序列进行排序,要求排序后A元素仍然在B元素前面且平均排序速度较快,下列最合适的排序算法是:

  • A.冒泡排序
  • B.插入排序
  • C.归并排序
  • D.快速排序

17. 现有一棵2000个结点的完全二叉树,对树中的结点按层次依次编号(每层中从左向右编号),其中根结点编号为1。编号为512的结点,其右孩子结点的编号为:

  • A.513
  • B.1024
  • C.1025
  • D.不存在

18. 在一个具有n个结点的有序单链表(线性链表)中删除关键字为key的结点,其时间 复杂度为:

  • A.O(1)
  • B.O(n)
  • C.O(nlogn)
  • D.O(n^2)

19. 2015年 3月25日,美国计算机科学家迈克尔斯通布雷克(Michael Stonebraker)获得2014年度“图灵奖”,奖金金额100万美元。迈克尔.斯通布雷克最主要的贡献在( )。

  • A.人工智能技术
  • B.数据库技术
  • C.虚拟现实技术
  • D.以上选项都不对

20. 以下关于“图灵测试”的说法不正确的是:

  • A.图灵测试是英国人阿兰.图灵于1950年设计的一个测试
  • B.图灵测试的内容是如果电脑能在5分钟内回答由人类测试者提出的一系列问题,且 其超过30%的回答让测试者误认为是人类所答,则电脑通过测试。
  • C.截止目前,还没有任何计算机程序通过图灵测试。
  • D.图灵测试对于计算机人工智能领域的发展具有重要的意义。

二、问题求解(每题5分,共10分)

1. 栈是一种后进先出的线性表,元素A、B、C按顺序进栈(栈容量足够大),则不同的出 栈顺序有_____种。
答案:5

2. 现有4 位小朋友围坐成一个圆圈,依次编号为A,B,C,D, 每位小朋友可以挑红、绿 蓝三种不同颜色气球中的一种拿在手上,但要求相邻小朋友手中气球的颜色互不相同 则小朋友们拿气球不同的方案有_______种。
答案:18

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

1.

var
a,  b,  c,  x,  y :  longint; 
begin
readln(a, b,  c);  
x  :=  a  div c; 
y  := b mod  c; 
if x  <  y  then 
begin
x  :=  x  -  y;  y  :=  x  +  y;  x  :=  y  -  x; 
end;
writeln(x, ' ', y);
end.
输入:25 38 13
输出:12 1

2.

type
pointer = ^longint;
var
a, b: longint;
procedure  myfun(a:  pointer;  b:  longint); 
var
c: longint; 
begin
c := a^; 
a^ := b; 
b:=c; 
a^:= b + 1; 
b :=a^ -1;
end;
begin
readln(a,  b); 
myfun(@a, b); 
writeln(a,' ', b);
end.
输入:2015 2016
输出:2016 2016

3.

var
n, sum, avg, cnt, i: longint; 
v:array[1..101] of longint; 
begin
readln(n); 
avg := 0; 
sum := 0;
for i := 1 to n do 
begin
read(v[i]); 
sum := sum + v[i]; 
end;
avg := sum div n;
cnt  := 0;
for  i  :=  1  to  n  do 
begin
v[i]  :=  v[i]  -  avg; 
if  v[i]  <>  0  then 
begin
inc(cnt);
v[i  +  1]:= v[i  +  1]  +  v[i]; 
end; 
end;
writeln(cnt);
end.
输入:
7
8 9 6 17 10 13 7
输出:4

4.

var
n:  longint;
function  f(n,  m:  longint):   longint; 
begin
if  (n  =  0)  or  (m =  0)  then 
f  :=  0
else  if  (n  =  1)  or  (m =  1)  then 
f  :=  1
else  if  n  <  m  then 
f  :=  f(n,  n) 
else  if  n  = m  then
f := f(n,  m-1)+1
else
f  :=  f (n,  m  -  1)  +  f (n  -  m,  m ) ;
end;
begin
readln(n); 
writeln (f (n,  n ) );
end.
输入:6
输出:11

四、程序填空 (第 1题后两空每空2分 ,其余每空3分,共28分)

1. (二维数组鞍点)给出一个N (N < l00)行M(M <100)列的二维数组,每个数组元素都是整数,编程寻找该二维数组中的鞍点。所谓二维数组的鞍点是指该位置上的元素值在其所在行上最大,在其所在列上最小。程序要求输出鞍点的位置和元素值。如果找不到,则输出“Not exist” 。例如下面输入第1行为二维数组的行数N 和列数M ,接下来N 行 M 列
表示二维数组,输出表示鞍点位置在数组的第1 行第4 列,元素值为4。同一行中相邻两个数字中间有一个空格,行末没有空格。
输入样例:
3 4
1 2 3 4
8 7 6 5
9 10 11 12
输出样例
1 4 4

ar
  n, m, i, j: longint;
  a: array[1..100, 1..100] of longint; 
  row_max: array[1..100] of longint;
  //row_max [i]存储二维数组第i行中最大元素的列号
function check(i, j: longint): boolean;
//函数check检査在第j 列中是否元素a [i][j]最小
var
  k: longint;
  flag: boolean; 
begin
  flag:= true; 
  for k:= 1 to n do
  if  a[i,j]>a[k,j]  then
    begin
     flag := false;
     break;
    end;
    check := flag;
end;

begin
  readln(n, m); 
  for i := 1 to n do 
    for j := 1 to m do 
      read(a [i][j]);
  for i := 1 to n do 
  begin
      row_max[i]:=a[i,1]  ;
    for j:=2 to n do
      if a[i][j] > a[i][row_max[i]] then
        a[i][row_max[i]]:= j ;
  if check ( i,row_max[i] ) =true then
  begin
    writeln(i,' ',row_max[i],' ', a[i,row_max[i]] );
     halt ;
  end;
  end;
  writeln('Not exist');
end.

2. (最大连续子序列和问题)给出包含n(n<100)个整数的序列a1,a2,a3,...an,其任意子序列可以表示为ai,ai+1,ai+2,...,aj,其中1 ≤ i ≤ j ≤ n。求所有连续子序列中元素之和的最大值。如果n 个整教都为负数,则输出0。例如序列-2, 11, -4, 13, -5, -2的连续子
序列11, -4 , 13 和最大,最大和为20。
输入样例:
6
-2 11 -4 13-5-2
输出样例:
20
算法分析:将给定的序列分成长度相等(或相差1个数)的左右两段,分别求出这两段的最大连续子序列和,则给定序列的最大连续子序列和有三种可能情况:
1 ) 与左半段的最大连续子序列和相同。
2 ) 与右半段的最大连续子序列和相同。
3 ) 包含两部分,一部分在左半段中(子序列包含左半段的最后一个元素),另一部分在右半段中(子序列包含右半段的第一个元素)。
前两种情形我们可以用递归方法求出, 第三种情形可以分别求出左右两部分的最大连续子序列和后再相加。原序列的最大连续子序列和即为这三种情形的最大值。

var
  n, i: longint; 
  a: array[1..100] of longint; 
function getmax(a, b, c: longint): longint;
begin
  if a > b then
     if a > c then getmax := a else getmax :=c 
  else
     if b > c then getmax := b else getmax :=c;
end;
function search(L, R: longint): longint;
var
  Leftmaxsum: longint;// Leftmaxsum存储左半端的最大连续子序列和
  Rightmaxsum: longint;// Rightmaxsum存储右半端的最大连续子序列和
  mid, i, sum1, sum2, maxsum1, maxsum2: longint; 
begin
  if L = R then
     if a[L] > 0 then
        exit(a[L])
  else
       exit(0)  ; 
  mid := (L + R) div 2;
  Leftmaxsum := search(L, mid);
  Rightmaxsum := search(mid+1,R) ;
  sum1 := 0; sum2 := 0;
  maxsum1 := 0; maxsum2 := 0;
  for i := mid downto L do
  begin
     sum1:=sum1+a[i] ;
    if sum1 > maxsum1 then
	   maxsum1 := sum1;
  end;
  for i := mid + 1 to R do
  begin
    sum2 := sum2 + a[i];
    if sum2 > maxsum2 then
       maxsum2 := sum2;
   end;
   search := getmax (Leftmaxsum, Rightmaxsum, maxsum1+maxsum2 );
end;
begin
readln(n);
for i := 1 to n do
read(a[i]);
writeln ( search(1,n) );
end.