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

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

1. 存放一个 ASCII 码需要的字节数为

  • A.1 字节
  • B.2 字节
  • C.0.5 字节
  • D.4 字节

2. 下列软件中不属于操作系统的是

  • A.win7
  • B.linux
  • C.winxp
  • D.winrar

3. 下列数中最小的是

  • A.(7)8
  • B.(11)7
  • C.(15)10
  • D.(11)5

4. 世界上第一台电子计算机诞生于

  • A.1949
  • B.1849
  • C.1946
  • D.1893

5. 在下面各奖项中,为计算机科学与技术领域作出杰出贡献的科学家设立的奖项是

  • A.沃尔夫奖
  • B.诺贝尔奖
  • C.菲尔兹奖
  • D.图灵奖

6. 操作系统的文件夹采用的层次结构为

  • A.网状
  • B.链状
  • C.树状
  • D.块状

7. 在 pascal 语言中,pos(‘a’,’bbccc’)的返回值为

  • A.0
  • B.-1
  • C.5
  • D.’a’

8. 在 pascal 语言中,下列语句属于正确的赋值语句的是

  • A.s := 1
  • B.s = a+1
  • C.a+1 = s
  • D.a+1 := s

9. 计算圆周长的算法描述如下: ① 输入圆半径 r; ; ② 计算圆周长 a(计算公式为 a = 2πr) ③ 输出结果; ④ 结束。 该算法属于

  • A.枚举算法
  • B.递归算法
  • C.排序算法
  • D.以上都不是

10. 现有一个数列 A 为 1,2,3,另一个数列 B 为 3,2,1, 若采用选择排序分别的两个数列 实现从小到大排序,则两个数列需要的比较次数为

  • A.A 比 B 多
  • B.A 和 B 一样多
  • C.B 比 A 多
  • D.不一定

11. 在下述程序段中,判断语句 a <> 100 被执行的次数为 a := 99 ; while a <> 100 do a := a + 1;

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

12. 下面关于堆栈和队列的说法中错误的是

  • A.队列是一种先进先出的线性表
  • B.堆栈可以选择栈的任意位置进行弹出操作
  • C.堆栈只能选择栈顶进行压入操作
  • D.堆栈是一种先进后出的线性表

13. 下列说法中不属于计算机病毒特点的是

  • A.破坏性
  • B.传染性
  • C.潜伏性
  • D.抗药性

14. 程序设计的三种基本结构是

  • A.主程序、函数、过程
  • B.顺序、选择、循环
  • C.变量、常量、不定量
  • D.数组、字符串、浮点型

15. 下列内容中属于信息的是

  • A.报纸
  • B.黑板
  • C.课本
  • D.黑板上的放假通知

16. 在 pascal 语言中,记录类型用到的保留字为

  • A.record
  • B.struct
  • C.baidu
  • D.then

17. 某班有 30 个同学报名参加 100、400、800m 3 个运动项目比赛。已知有 6 人获 100m 参赛资格,8 人获 400m 参赛资格,18 人获 800m 参赛资格。且其中有 1 人获全部 3 项参 赛资格,则至少有( )人没有获任何项目参赛资格。

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

18. 下列 pascal 语言的函数中,返回值不是数值类型的是

  • A.pos
  • B.copy
  • C.length
  • D.abs

19. 下列判断语句中,不能判断 x 为奇数的是

  • A.odd(x) = true
  • B.odd(x)<>false
  • C.x and 1<> x
  • D.(x shr 1) shl 1 <>x

20. 小李在递归函数内部定义了一个长度为 100 的 longint 数组,但是编译运行却频频 报错,请问最有可能的原因是

  • A.代码风格不够优美
  • B.程序效率太低导致超时
  • C.显示器亮度不够
  • D.递归层次过多导致栈空间不足

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

1. 在 1 到 100 的 100 个整数中,能被 3 整除且不能被 4 整除的数一共有 个
答案:25

2. 定义 2 个 1000*1000 的二维长整型数组需要的存储空间为 (保留 1 位小数) MB。
答案:7.6

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

1.

var 
x:longint; 
 flag: boolean; 
begin 
 read(x); 
 flag := false; 
 if (x mod 4 = 0) and (x mod 100 <> 0) then flag := true; 
 if x mod 400 = 0 then flag := true; 
 if flag then writeln(‘leap year!’) 
 else writeln(‘not a leap year!’); 
end. 

输入:1234 
输出
输出:not a leap year!

2.

var 
f: array[1..100, 1..100] of longint; 
cnt: longint; 
    i, j, n, t, x, y, ans: longint; 
begin 
    read(n); 
    x := 1; 
    y := 0; 
    for i := 1 to n do 
    begin 
     for j := 1 to n*2-i+1 do 
     begin 
         inc(y); 
         inc(cnt); 
         f[x, y] := cnt; 
     end; 
     for j := 1 to n*2-i do 
     begin 
inc(x); 
inc(cnt); 
f[x, y] := cnt; 
     end; 
for j := 1 to n*2-i do 
        begin 
         dec(y); 
         dec(cnt); 
        f[x, y] := cnt; 
        end; 
        for j := 1 to n*2-i-1 do 
        begin 
            dec(x); 
            dec(cnt); 
            f[x, y] := cnt;
        end; 
    end; 
    read(t); 
    ans := 0; 
    for i := 1 to n*2 do 
        ans := ans + f[t, i]; 
    writeln(ans); 
end. 
输入:3 2
输出:27

3.

var 
t: longint; 
function f(x:longint): longint; 
begin 
 if x = 0 then exit(0) 
 else if x mod 2 = 0 then exit(2 + f(x-1)) 
 else exit(1 + f(x-1)); 
end; 
begin 
 read(t); 
 writeln(f(t)); 
end. 
输入:2014 
输出:3021

4.

type arr=array[0..100000]of longint; 
var  
c, q, d, e, ans: arr; 
    n, i: longint; 
procedure merge(a, b: longint); 
var  
mid, i, j, p: longint; 
begin 
mid := (a+b) div 2; 
if a < mid then merge(a, mid); 
if mid+1 < b then merge(mid+1, b); 
p:=0; i:=a; j:=mid+1; 
while (i <= mid) and (j <= b) do
begin 
if c[i] >= c[j] then 
begin  
p := p+1; d[p] := c[i]; e[p] := q[i]; i := i+1;  
end 
else  
begin 
p := p+1; d[p] := c[j]; e[p] := q[j]; 
j := j+1; inc(ans[e[p]], mid-i+1);  
end; 
end; 
while (i <= mid) and (j > b) do 
begin  
p := p+1; d[p] := c[i]; e[p] := q[i]; i := i+1; 
end; 
while (i > mid) and (j <= b) do 
begin  
p := p+1; d[p] := c[j]; e[p] := q[j]; j := j+1; 
end; 
for i := a to b do  
begin  
c[i] := d[i-a+1]; q[i] := e[i-a+1]; 
end; 
end; 
begin 
readln(n); 
for i := 1 to n do  
begin  
read(c[i]); q[i] := i; 
end; 
merge(1, n); 
for i := 1 to n-1 do  
write(ans[i], ’,’); 
writeln(ans[n]); 
end. 
输入 
5 
4 3 1 2 5
输出:0,0,0,1,4

四、程序填空(前5空,每空2分,后6空,每空3分,共28分)

1. 问题描述:小明手头有一份红十字会的捐款名单,但是这份名单被外星人恶意破坏过你的任务是帮助小明去恢复这份名单。由于外星人低估了你的智商,破坏的规则非常简单先是将姓名和捐款金额联接到一行,再将这一行内容按顺序切成多行。
输入格式:有很多行,表示输入的字符串。
输出格式:输出共有多行,其中每一个人的信息一行,分别是姓名和金额,中间用空格隔开。

输入样例
zhangsa
n890liu
hua111

输出样例
zhangsan 890
liuhua 111

程序清单:

var 
 s, t: ansistring; 
 x, len, i: longint; 
 flag: boolean; 
begin 
 s := ‘‘; 
 while not  eof  do  
 begin 
  readln(t); 
  s := s + t; 
 end; 
 len := length(s); t := ‘‘; x := 0; flag := false; 
 for i := 1 to len do  
 begin 
  if (s[i] <= ‘9’) and (s[i] >= ‘0’) then 
  begin 
   x :=  x*10   + ord(s[i]) – ord(‘0’); 
   if flag = false then  
 flag:=true  ; 
  end 
  else 
  begin 
   if flag = true then 
   begin 
     writeln(t,,x)  ; 
    x := 0; 
    t := ‘‘;
	flag:=false  ; 
   end; 
   t := t + s[i];  
  end; 
 end; 
 writeln(t, ‘ ‘, x); 
end.

2. 问题描述:有一天小明来到一台神奇的取款机前,取款机可以无限提供某些特定面额的货币,小明想知道他要取出x元共存在几种不同的方案(取出顺序的不一样认为是相同的方案,具体以样例为准)。

输入格式
第一行一个整数m,表示提供的货币种数。
第二行共m个用空格隔开的数字,表示其具体面额。
第三行一个整数x,表示需要取出的钱额。
输出格式:输出一个整数,表示方案数。

输入样例
3
1 2 5
4

输出样例
3

输出说明 取出4元的3种方案分别为(2,2),(1,1,2),(1,1,1,1)。
程序清单

var 
    dp: array[ 0 ..10001] of longint; 
    a: array[1..10] of longint; 
    i, j, x, m:longint; 
begin 
    read(m); 
    for i := 1 to m do read(a[i]); 
     readln(x)  ; 
	 fillchar(dp, sizeof(dp), 0); 
    dp[0] :=  1  ; 
    for i := 1 to m do 
        for j := 0 to x do 
        begin 
            if  j+a[i]>x   then break; 
            if dp[j] = 0 then  continue  ;
            dp[j+a[i]] := dp[j+a[i]] + dp[j] ; 
        end; 
    writeln(dp[x]); 
end.