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

一、选择一个正确答案代码(A/B/C/D),填入每题的括号内(每题2分,每题只有一个正确答案,多选或错选都无分。共30分)

1. PASCAL程序设计语言的命名,是为了纪念( )这位伟大的数学家。

  • A.巴赫
  • B.冯.诺依曼
  • C.帕斯卡
  • D.图灵

2. —般来说,一台计算机的CPU速度越快,那么这台计算机的运行速度也越快,下型号中,运行速度最快的是( )。

  • A.奔腾4
  • B.奔腾2
  • C.奔腾3
  • D.586

3. 美元的标识符是$,’它和数字4同在一个键上,而且$在上面,数字4在下面,入S这个符号,应配合使用其他的( )键。

  • A.Caps Lock
  • B.shift
  • C.Alt
  • D.Ctrl

4. 一般计算机开机后总会自动启动windows操作系统,那么这个操作系统软件安装在计算机的哪个硬件中( )。

  • A.软盘
  • B.主板芯片
  • C.硬盘
  • D.ROM

5. 二进制数(1011)2对应的十进制数是( )

  • A.1011
  • B.15
  • C.10
  • D.11

6. 下列对于计算机病毒的认识中,错误的是( )

  • A.只要不从因特网上下载文件,而只在网上浏览网页、收发电子邮件是不会感染病毒的。
  • B.要定期升级杀毒软件,并利用杀毒软件对计算机进行查、杀毒处理。
  • C.—台接入网络的计算机,即使不进行网络的相关操作(浏览网页、收发邮件、下载文件等),也有可能被病毒感染。
  • D.安装病毒防火墙可以从—定程度上有效地预防病毒的感染。

7. 按照网站域名的—般约定,下列网站地址个,描述错误的是( )。

  • A.news.sina.com.cn
  • B.www@cctv.com
  • C.www.sohu.com
  • D.www.Zj.com

8. 现实牛活中我们只要配备相关的硬件和软件,就可以直接通过因特网完成很多的工作。下列功能中, 目前在因特网上还不能直接实现的是( )。

  • A.看到对方当前的实时摄像
  • B.像使用电话机—样通过声音和对方聊天
  • C.护士通过网络往患者体内注射药水
  • D.通过文字和对方进行实时交流(聊天)

9. 下列关于计算机的说法巾,错误的是( )。

  • A.软件是由程序和相关的文档资料组成的
  • B.操作系统是—种软件
  • C.—台不装任何软件的计算机个能帮助你进行文字编辑处理
  • D.世界上第—台电子计算机是在德国诞生的。

10. PASCAL源程序文件的扩展名是( )。

  • A..pas
  • B..doc
  • C..exe
  • D..pascal

11. 下列描述中,不属于程序设计基本结构的是( )。

  • A.循环结构
  • B.交叉结构
  • C.分支结构
  • D.顺序结构

12. 在turbo pascal编程时,程序中引用下标变量的下标值不能超过定义时的范围,如果超过了,则程序在编译时会出现下列错误提示( )。

  • A.Constant out of range
  • B.”]“or“.)”expected
  • C.Unknowidentifler
  • D.Type mismatch

13. 在turbo Pascal编程时,执行程序和查看程序执行结果的快捷键分别是( )。

  • A.F9和 F10
  • B.Ctrl+F9和Ctrl+F5
  • C.Ctrl+F9和Altl+F5
  • D.Ctrl+1和Ctrl+5

14. 在利用数组存储数据时,各下标变量的值在内存中是连续存放的。假定数组a的第一个变量a[1]的存储地址是0,每个a[1]需要占据二个位置(说明a[2]的开始位置是2),则 变量a[50]的开始位置是多少( )。

  • A.100
  • B.50
  • C.48
  • D.98

15. 下列关于树这种数据结构的说法中,正确的是( )。

  • A.任何结点都有子结点和父结点
  • B.任何结点都必须有子结点
  • C.任何结点都必须有父结点
  • D.在二叉树中,每个结点可能没有子结点,有的话最多只能有二个子结点

二.问题求解:(5+5=10分)

1. 交换次数。下列程序段用来将10个整数(从键盘输入)进行从大到小的排序,然后核 这个顺序输出排序后的10个整数。问:在最坏情况下,二个整数两两交换的次数是多少? 例如,当将3个整数1、2、3(最坏情况)从大到小排序时,两两交换的次数是3次。 for i:=1 to 10 do readln(a[i]); for i:=1 to 9 do for j:=i+1 to 10 do if a[i]<a[j] then begin t:=a[i]; a[i]:=a[j];a[j]:=t;end; for i:=1 to 10 do write(a[i]:3);
答案:45

2. 兑换硬币。小明拥有各种面值的硬币n种(假定每种面值硬币的数量都足够多),阿强手头有一张面值为x的大额纸币。阿强想把自己的纸币兑换成等额的硬币,又想使兑换所得的硬币个数最少,他想了个绝妙的方法去兑换,终于达到了自己的要求。 比如,n=3(硬币面值分别是1、3、5),x=18,则阿强兑换成3个面值为5的硬币,外加一个面值为3的硬币,用表达式表示就是3×5十1×3=18,这样兑换总共得到4个硬币。 问:现在n=3(硬币面值分别是1、6、8),x=20,则如何兑换才能使得所得的硬币总数最少,是多少? (答案包括二个部分,首先是兑换方法的表达式表示,其次是写出总共得到的硬币的数量)
答案:20|3

三、阅读程序并写出运行结果(6+7+8+9=30分)

1.

 program  test1;
   Var
    a,b,c,tot:integer;
   begin
    tot:=0;
    C:=213-2l*10;
    b:=21-2*10;
    a:=2;
    tot:=tot+a+b+c;
    writeln(tot);
   end.
输出:6

2.

PROGRAM test2;
   VAR
    S,X:integer;
   BEGIN
     X:=0;S:=0;
     WHILE  S<55  DO
      BEGIN
        X:=X+1;
        S:=S+x;
      END;
     WRITELN(X);
   END.
输出:10

3.

program test3;
const
  n1=4;n2=5;
var
  max,s,i,j,k,t:integer;
  a;array[1..n1,1..n2] of integer;
begin
  for i:=1 to n1 do
   begin
    for j:=1 to n2 do read(a[i,j]);
    readln;
   end;
  s:=0;
  for j:=1 to n2 do
   begin
    max:=0;
    for i:=1 to n1 do
      if max<a[i,j] then max:=a[i,j];
     s:=s+max;
   end;
   writeln(s);
end.
输入:
1  2  3   4  5 
6	9  13  5  7
11	12  8  15  14
21	20  18  16  17
输出:92

4.

program test4;
var 
  i:integer;
  a:array[1..10]of char;
  procedure try(t:integer);
begin
  if t=10 then write(a[t])
   else
    begin
     try(t+1);write(a[t]);
    end;
end;
begin
  for i:=1 to 10 do read(a[i]);
  try(1);
end. 
输入:123459876a
输出:a678954321

四.完善程序(根据问题要求和已有程序,在空格处填入适当的语句或符号,使程序完整。本题共30分。)

1. [圣诞礼物](3+2+2+3+2=12分)
圣诞节到了,圣诞老人打算把一批圣诞礼物装入各种不同颜色的口袋中,然后分发给 小朋友们。现在圣诞老人手中有5个不同礼物和5个不同口袋,圣诞老人的计划是这样的:
(1)先给每个礼物编号,编号分别是1、2、3、4、5;再给5个口袋编号,分别用a[1]、a[2]、a[3]、a[4]、a[5]来表示,其中a[1]的值表示I号口袋中装的礼物的编号。比如,a[3]=5,
表示3号口袋中装的是编号为5的礼物。
(2)任何一个礼物可以装入任何一个口袋中,但每个口袋中有且仅有一个礼物。也就是说,5个礼物刚好装入5个不同的口袋中。
圣诞老人想知道的是这样的礼物装入口袋的方法一?共有多少种,分别怎么装?他想让你编写一个程序来解决这个问题。而且,他怕你不理解他的含义,举了—个例子,假如行 3个不同的礼物和口袋,那么你的程序应该能输出以下结果:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
S=6
上述输出结果中,最后一行表示装袋方法的种数(这里是6种),前面6行是各种不同的装袋方法。比如,第一行表示1、2、3号口袋分别装的礼物编号是1、2、3:而第3行表示的是1、2、3号口袋分别装的礼物编号是2、1、3。
请你完成下列程序:

program test5;
 var
  a:array[1..5] of integer;
  i1,i2,i3,i4,i5,j1,j2,j3,j4,j5,s:integer;
  function f(x,y:integer):Boolean;
   var
    k:integer;
   begin
    f:=true;
    for k:=1 to x do if  a[k]=y then f:=false;
   end;
procedure print;
   var
    i:integer;
   Begin
    For i:=1 to 5 do write(a[i]:3);writeln;
   End;
Begin
  S:= 0 ;
  For  i1:=1 to 5 do
    Begin
     j1:=1;
      a[j1]:=i1 a[j1]:=i1___;
     for i2:=1 to 5 do
        if f(j1,i2) then 
        begin
          j2:=2;a[j2]:=i2;
           for i3:=1 to 5 do
             if f(j2,i3)then
              begin
               j3:=3;a[j3]:=i3;
               for i4:=1 to 5 do
                 if f(j3,i4) then 
                 begin
                 j4:=4;a[j4]:=i4;
                    for i5:=1 to 5 do
                     if f(j4,i5)then 
begin 
j5:=5;
a[j5]:=i5;
print;
 inc(s) ;
end;
end;
                 end;
end;
end;
writeln(‘s=’, s );
end.

2. [华容道](3+3+3+3+3+3=18分)
华容道取材于我国三国演义的一种小游戏,小王是一个编程爱好者,他就利用课余时间编写了一个华容道的游戏程序。当然小王的华容道和现实的华容道游戏有一些区别,小王的华容道游戏是这样设计的:
华容道由5*5的底版和24个大小一样的小正方形板组成。在每一个小正方形上印有一个不同的字母(A到X)。24个方块放入底版后,底版上还有一个空位。如果一个小方块紧挨着空位,则可以将其移动至空位。
按照这个游戏设计思想,小王开始编写程序,使得程序能根据输入的初始局面(各个小正方形板在华容道中的位置排列)和移动序列之后,输出华容道的最终局面。
问题是小王编写了程序后发现程序不能正确执行,根据他的经验,他觉得错误肯定发生在其中的6个地方(下面程序中标有数字的空格处),于是小王来向你这个编程高手请教,请你告诉小王这6个空格处正确的内容应该上什么。
程序一开始会让使用者输入华容道的初始局面和移动序列,前面5行5列组成华容道的初始局面,第6行表示移动序列。下面就是某个使用者的输入信息(第3行第2个位置是空位):
TRGSJ
XDOKI
M VLN
WPABE
UQHCF
ARRBBL
上面移动序列中包含了4种不同字母,分别表示了不同的移动方向,这些字母的含义是:A表示将空位上方的块移动到空位,B表示将空位下方的方块移动到空位;L表示将空位左方的方块移动到空位;R表示将空位右方的方块移动到空位。
一个正确的华容道程序应在得到上面的输入数据后,输出如下所示的最终局面(第4行第3个位置是空位);
TRGSJ
XOKLT
MDVBN
WP AE
UQHCF
考虑到有些用户可能会输入非法的移动信号,比如当空位在最下面一行时,移动信号为“B”,此时由于下面没有任何小方块了,所以是非法的移动,此时应让程序能输出“No answer”(此时不必输出华容道的最终局面)。
下列就是小王编写的程序,请帮助小王完善程序,并把答案书写在答案纸上。

 
Program test6;
  Var
   i1,j1,i2,j2,I,j,k:integer;
   s,x:char;
   a:array[1..5,1..5] of char;
   b:string;
   procedure err;
begin
  write(‘ No answer ’);halt;
end;
   procedure swp(var i1,j1,i2,j2:integer);
var
 t:char;
 t1:integer;
 begin
  t:=a[i1,j1];  a[i1,j1]:=a[i2,j2]; a[i2,j2]:=t;
  t1:=i1;i1:=i2;i2:=t1;t1:=j2;j2:=j1;j1:=t1;
  end;
begin
for i:=1 to 5 do
  begin
    for j:=1 to 5 do
      begin
        read(a[i,j]); if  a[i,j]=' '  then begin  i1:=i; j1:=j;end;
      end;
    readln;
  end;
  readln(b);
  k:=length(b);
  for i:=1 to k do
    begin
     if ((i1=1) and(b[i]=’A’)) or ((i1=5) and (b[i]=’B’)) or (j1=1) and (b[i]='L') or
  ((j1=5) and(b[i]=’R’))
      then err;
    i2:=i1;j2:=j1;
    case b[i] of 
      ‘A’:i2:=i1-1;
      ‘B’:i2:= i1+1 ;
      ‘L’: j2:=j1-1;
       ‘R’:j2:= j1+1 ;
    end;
      swp(i1,j1,i2,j2);
    end;
    for i:=1 to 5 do
      begin
         for j:=1 to 5 do
           write(a[i,j]);
           writeln;
      end;
     end.