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

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

1. 现有的计算机都是采用( )提出的存储程序和二进制的原理制造的。

  • A.图灵
  • B.冯•诺伊曼
  • C.爱因斯坦
  • D.布尔

2. 计算机的存储系统中,能被CPU直接存取的是( )。

  • A.内存储器
  • B.磁盘存储器
  • C.CD-ROM
  • D.外存储器

3. 下列可选项,都是硬件的是( )。

  • A.Windows、ROM和CPU
  • B.WPS、RAM和显示器
  • C.ROM、RAM和Pascal
  • D.硬盘、光盘和软盘

4. 应用软件是专业人员为各种应用目的而编制的程序,以下( )是应用软件。

  • A.操作系统
  • B.文字处理软件
  • C.数据库管理系统
  • D.语言处理程序

5. 以下是关于计算机病毒的说法,不正确的是( )。

  • A.病毒属于计算机软件
  • B.病毒属于硬件
  • C.病毒具有破坏性、传播性、可激发性、潜伏性、隐蔽性等特点
  • D.若软盘染上病毒,格式化软盘可以清除病毒

6. 计算机网络的最大优点是( )。

  • A.资源共享
  • B.运算速度加快
  • C.计算精度提高
  • D.内存容量增大

7. 计算机网络中,互连的各种数据终端,是按( )相互通信。

  • A.网络协议
  • B.连线
  • C.以太网
  • D.数据格式

8. 电子邮件的邮箱( )。

  • A.在ISP的服务器上
  • B.在你申请的网站的服务器上
  • C.在Outlook Express里
  • D.在Outlook Express里的电脑里

9. 与十六进制3D相等的数是( )。

  • A.60
  • B.(00111110)2
  • C.(76)8
  • D.(00111101)2

10. Windows中,不能在显示属性中设置的是_____ 。

  • A.屏幕刷新率
  • B.屏幕保护程序
  • C.系统日期
  • D.墙纸的设置

11. 给定队列的入队顺序1,2,3,共有几种可能的出队序列( )。

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

12. 如果一棵满二叉树有n个叶结点,则这棵树的结点总数为( )。

  • A.2n
  • B.2n-1
  • C.2n+1
  • D.n^2-1

13. 下列哪个选项不是程序设计的基本控制结构( )。

  • A.顺序结构
  • B.分支结构
  • C.循环结构
  • D.数据结构

14. 在Pascal程序设计中,我们可以利用( )语句使程序终止运行。

  • A.halt
  • B.end
  • C.break
  • D.quit

15. 产生100至300之间的随机整数(Random),且包含100、300两个整数的表达式是( )。

  • A.random(100)+200
  • B.random(200)+100
  • C.random(201)+100
  • D.random(300)

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

1. 一个栈的进栈序列为1,2,3,4,请问,出栈序列一共有多少种?
答案:14

2. 绍兴市信息学竞赛临近,某校要组队参加竞赛,要从12名学生中选4名参加比赛,其中少儿组2名,初中组2名,请问共有几种组队方法?
答案:5940

三、阅读程序,写出程序的正确运行结果(7+7+8+8=30分)

1.

program test01;
var
  x,y:integer;
begin
  readln(x,y);
  x:=x+y;
  y:=x-y;
  x:=x-y;
  write(x,' ',y);
end.
输入:3  7
输出:7 3

2. program test02; var x:longint; n,i:integer; begin readln(n); x:=1; for i:=1 to n do x:=x*i; writeln(x); end. 输入:8
答案:40320

3.

program test03;
function f(n:integer):integer;
  begin
    if n=0 then f:=1
      else if n<0 then f:=f(n+1)+3
      else f:=f(n-1)-2;
  end;
begin
  writeln(f(f(2)));
end.
输出:10

4.

program test04;
var
  i,j,a:longint;
  s:array[1..32] of longint;
begin
  readln(a);
  j:=0;
  while a<>0 do begin
    inc(j);
    s[j]:=a mod 2;
    a:=a div 2;
  end;
  if j=0 then write(0) else
    for i:=j downto 1 do
      write(s[i]);
end.
输入:58
输出:111010

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

1. 贪心的武松
【问题描述】
曾经因打虎而闻名的武松在x年后接到了景阳岗动物园的求助信,信上说:最近我们动物园逃跑了几只老虎,请您把它们抓回来,谢谢!!
武松接到信之后立刻上了山。正当他到半山腰时,突然跳出n只猛虎来。每只老虎都有一块虎牌,牌上写的是每一只虎最大拥有的体力,当武松与老虎pk时,若老虎的体力先用完,那么老虎over,否则武松over,求武松在over之前最多能干掉几只老虎?
(注:老虎是一只只上的)

【输入】
第一行两个数字 n(老虎的只数),m(武松的体力)。第二行n个数字,分别表示每只老虎的体力(每只虎的体力按从小到大排列)。

【输出】
一行,最多能干掉的老虎数。

【样例输入】
3 6
1 3 9
【样例输出】
2

请完善以下程序

program test05;
var
  n,m,i,num:integer;
  a:array[1..100] of integer;

begin
  fillchar(a,sizeof(a),0);
  read(n,m);
  for i:=1 to n do
    read( a[i] );
  num:=0; i:=1;
  while (m>0) and (  i<=n  ) do
   begin
     m:=m-a[i];
     if m>=0 then begin
       num:=num+1;
          inc(i)    ;
     end;
   end;
  write(  num  );
 end.

2. 合并礼物
【问题描述】
圣诞节快到了,圣诞老人又要开始忙起来了,和往年一样,圣诞老人要在礼物乐园里挑选礼物送给小朋友们。
在礼物乐园,圣诞老人挑选好礼物后,把礼物按照不同的种类分成了不同的堆,现在,圣诞老人决定把所有的礼物合成一堆。
每一次合并,圣诞老人可以把两堆礼物合并到一起,消耗的体力等于两堆礼物的重量之和。可以看出,所有的礼物经过n-1次合并之后,就只剩下一堆了。圣诞老人在合并礼物时总共消耗的体力等于每次合并所耗体力之和。
因为还要花大力气把这些礼物搬到他的鹿车,所以圣诞老人在合并礼物时要尽可能地节省体力。假定每个礼物重量都为1,并且已知礼物的种类和每种礼物的数目,你的任务是设计出合并的次序方案,使圣诞老人耗费的体力最小,并输出这个最小的体力耗费值。
例如有3种礼物,数目依次为1,2,9。可以先将 1、2堆合并,新堆数目为3,耗费体力为3。接着,将新堆与原先的第三堆合并,又得到新的堆,数目为12,耗费体力为 12。所以圣诞老人总共耗费体力=3+12=15。可以证明15为最小的体力耗费值。

【输入】
输入包括两行,第一行是一个整数n(1 <= n <= 100),表示礼物的种类数。第二行包含n个整数,用空格分隔,第i个整数ai(1 <= ai <= 100)是第i种礼物的数目。

【输出】
输出包括一行,这一行只包含一个整数,也就是最小的体力耗费值。

【样例输入】
3
1 2 9

【样例输出】
15

【解题思路】
首先将所有的礼物堆按照每堆礼物的数目进行排序,将数目最少的两堆礼物合并,然后再将新堆放入数列中重新排序,再取出最少数目的两堆合并……每次合并后将体力消耗值加入到total变量,依次类推,经过n-1次合并后,所有礼物都合并成了一堆,total即为问题所求的“最小的体力耗费值”。

请完善以下程序:

program test06;
var
  n,i,j,total:longint;
  a:array[0..101] of longint;
procedure qsort(l,r:longint);
var
  i,j,x,temp:longint;
begin
  i:=l;
  j:=r;
  x:=a[(i+j) shr 1];
  repeat
    while a[i]<x do inc(i);
    while x<a[j] do dec(j);
      if i<=j then begin
        temp:=a[i];
           a[i]:=a[j]  ;
        a[j]:=temp;
        i:=i+1;
           dec(j) ;
               end;
  until i<=j ;
  if l<j then qsort(l,j);
  if i<r then  qsort(i,r)  ;
end;
begin
  readln(n);
  for i:=1 to n do
    read(a[i]);
    qsort(1,n)
     total:=0   ;
  for i:=1 to n-1 do begin
    inc(total,a[i]+a[i+1]);
    a[i+1]:=a[i]+a[i+1];
      qsort(1,n)   ;
  end;
  writeln(total);
end.