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

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

1. 我们要养成正确的键盘输入习惯,那么请问按正确指法击 T 键,应使用( )

  • A.右手食指
  • B.右手中指
  • C.左手食指
  • D.左手中指

2. 每个不同的二进制数可以表示一种颜色,如果一幅图像有 256 种颜色,最少需要几位二进制数来表示? ( )

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

3. 以下运算结果为 False 的是 ( )

  • A.not (5>5)
  • B.(5>=4) and (7<7)
  • C.not (false)
  • D.(5<4) or (5>=5)

4. 在 Free Pascal 中运行某一程序时,返回如下图所示的错误信息,这是由于 ( )

  • A.找不到输入文件
  • B.源程序存在 2号语法错误
  • C.输入变量的值与变量的类型不匹配
  • D.Pascal 编译器没有正确安装

5. 二维数组 A的每个元素是由 6 个字符组成的串。其行下标从 0 到 8,其列下标从 0到 9,若按行优先存储,元素 A[7][4] 的起始地址与当 A按列优先存储时( )的起始地址相同,设每个字符占一个字节。

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

6. ASCII 码表中的大写字母 Z 后有 6个其他字符,接着便是小写字母。现在已知:字母 Y的 ASCII 码为( 1011001)2,则字母 a的 ASCII 码用十六进制表示是 ( )

  • A.61H
  • B.62H
  • C.63H
  • D.64H

7. 下列软件不能用于浏览网页的是 ( )

  • A.Firefox
  • B.Internet Explorer
  • C.Access
  • D.腾讯 TT

8. 路人甲要拍摄一些学校风景照片 , 并对拍摄的照片进行处理 , 下列采集工具、 加工软件可实现这一功能的是( )

  • A.数码相机、 photoshop
  • B.扫描仪、 goldwave
  • C.数码摄像机、 goldwave
  • D.手机、 access

9. 某电影的评价如图所示: 图中的评价方式属于( )

  • A.个人推荐
  • B.统计评价
  • C.专家推荐
  • D.核心刊物评价

10. 某用户微博的相关统计如图所示: 图中的“围观”数主要体现了该用户微博信息的( )

  • A.安全性
  • B.真伪性
  • C.共享性
  • D.载体依附性

二、根据要求回答问题: (5+5=10分)

1. 地球人都知道斐波那契数列的递推关系式为: f(1)=1 f(2)=1 f(n)=f(n-1)+f(n-2) 现在给你一列数 2,3,6,8,8,4,2, ,,如果用 f(n)表示这个数列的第 n 个数,请写出这个递推式。
答案:f(n)=f(n-1)*f(n-2) mod 10

2. 学校里共有 12间宿舍,大宿舍住 8 人,中宿舍住 7人,小宿舍住 5 人,现在每间宿舍都住满了,共住了 80 个人,问大、中、小宿舍各有多少间?
答案:2 7 3

三、阅读程序并写出运行结果( 8+8+8+8+8=40 分)

1.

program test1; 
var  
a,b,c,d,e,ans: integer;  
begin  
readln(a,b,c);  
d:=a+b; 
e:=abs(b-c); 
ans:=trunc((d+e)/(c-a)); 
writeln(ans);  
end.
输入:1 2 5
输出:1

2.

program test2; 
var  
n,m:longint; 
Begin 
   Readln(n,m); 
   n:=n mod 7; 
   m:=m mod 5; 
   If n>m then writeln(n) 
          else writeln(m) 
End. 
输入:2014 2015
输出:5

3.

program test3; 
var  
n,x,i,temp,j,count:longint; 
begin 
  readln(n,x); 
  for i:=1 to n do  
begin 
       temp:=i; 
    while temp>0 do  
begin 
       j:=temp mod 10; 
   temp:=temp div 10; 
   if j=x then inc(count); 
 end; 
end; 
writeln(count); 
end. 
输入:100 5
输出:20

4.

program test4; 
var 
 i,j,k,n:integer; 
   a:array[1..100] of boolean; 
begin 
 read(n); 
 for i:=1 to n do a[i]:=true; 
 for i:=1 to n do 
  begin 
   j:=i; 
   while j<=n do 
    begin 
     a[j]:=not(a[j]); 
     j:=j+i; 
    end; 
  end; 
 for i:=1 to n do 
  if a[i]=true then write('0',' ') 
                else write('1',' '); 
end. 
输入:8
输出:1 0 0 1 0 0 0 0

5.

program test5; 
type  
   arr=array[1..8] of integer; 
var  
a:arr;  i,n:integer; 
procedure select(var b:arr;  var n:integer); 
  var  
      i,j:integer; 
begin 
i:=0; 
for j:=1 to n do 
   if b[j] mod 3=0 then 
      begin 
        i:=i+1; 
        b[i]:=b[j]; 
      end; 
n:=i; 
end; 
begin 
   n:=8; 
   for i:=1 to n do read(a[i]); 
   readln; 
   select(a,n); 
   for i:=1 to n do write(a[i]:3); 
   writeln; 
end. 
输入:8 151 9 7 233 68 514 12
输出:9 12

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

1. 打印文件
【问题描述】
路人甲毕业于某职业学校计算机专业,不过,想找一份好工作真难, 在路人乙的推荐下, A公司聘请他担任文印室打印员。
每天 8 点前,A公司的各个部门都会把需要打印的文件送过来。一天的工作就这样开始了, 起先路人甲按照文件送来的先后顺序打印, 一段时间后, 路人甲觉得这个工作非常无聊,于是决定改变打印的顺序。
首先他要求每个部门对送过来的文件都要标上重要度急别 p(1<=p<=9 ) ,接着他再给送过来的 n 个文件按先后顺序从 0 开始标上号码, 然后,他按标号从小到大处理打印:对于当前的第一个文件 a,若后面存在一个未打印的文件 b, b文件的重要度大于 a 文件,则将 a 转移至最后,否则打印文件 a。打印每个文件需 1 分钟,转移文件可认为是瞬间完成的。
路人甲还充分发挥自己的专业特长, 编写了一个程序, 只要第一行输入文件数 n 和需要查询的文件标号 x,第二行依次输入 n 个文件的重要度级别。就可输出打印 x 号文件时的时间。
【样例输入】
6 0
1 1 9 1 1 1
【样例输出】
5
算法:循环队列模拟。如果队首元素的优先级不是最高,把队首元素放到最后,其它元素前移,否则,队首元素出队。

program test6; 
const max=100+10; 
type printer=record 
    flag:longint; 
    priority:longint; 
    end; 
var ans,i,k,j,n,m:longint; 
   printers:array[0..max] of printer; 
   b:boolean;temp:printer; 
begin 
      readln(n,m); 
      for j:=0 to n-1 do 
       with printers[j] do 
        begin 
           read(priority); 
           if j=m then flag:=1 else flag:=0 ; 
        end; 
      ans:=0; 
      while true do 
        begin 
          b:=false; 
          for j:=1 to n-1 do 
              if printers[j].priority>printers[0].priority then 
              begin 
                 temp:=printers[0]; 
                 for k:=1 to n-1 do  printers[k-1]:=printers[k]  ; 
                 printers[n-1]:=temp; 
                 b:=true; 
                 break 
              end; 
          if not b then 
          begin 
            inc(ans); 
            if printers[0].flag=1 then 
            begin 
           writeln(ans) ; 
               break; 
            end 
            else 
            begin 
               for j:=1 to n-1 do 
                 printers[j-1]:=printers[j]; 
			  dec(n) ;
            end; 
          end; 
        end; 
end. 

2. 奖学金
【问题描述】
某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前 5名学生发奖学金。期末,每个学生都有 3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序。
任务:先根据输入的 3门课的成绩计算总分, 然后按上述规则排序, 最后按排名顺序输出前 5 名学生的学号和总分。 注意,在前 5 名同学中, 每个人的奖学金都不相同,因此,你必须严格按上述规则排序。例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分)是:
7 279
5 279
这两行数据的含义是:总分最高的两个同学的学号依次是 7 号、5号。这两名同学的总分都是 279(总分等于输入的语文、数学、英语三科成绩之和) ,但学号为 7 的学生语文成绩更高一些。如果你的前两名的输出数据是:
5 279
7 279
则按输出错误处理,不能得分。
【输入】
输入包含 n+1行:
第 1 行为一个正整数 n,表示该校参加评选的学生人数。
第 2 到 n+1行, 每行有 3个用空格隔开的数字,每个数字都在 0到 100之间。
第 j 行的 3 个数字依次表示学号为 j-1 的学生的语文、 数学、英语的成绩。 每个学生的学号按照输入顺序编号为 1~n(恰好是输入数据的行号减 1) 。
所给的数据保证总分相同的情况下,语文成绩一定不同。
【输出】
输出共有 5 行, 每行是两个用空格隔开的正整数 , 依次表示前 5 名学生的学号和总分。
【样例输入】
8
80 89 89
89 97 78
90 67 80
87 66 91
81 89 88
88 99 77
67 89 64
78 89 98
【样例输出】
8 265
2 264
6 264
5 258
1 258
【限制】
100% 的数据满足: 6<=n<=300

program test7; 
type 
lei=record 
      sum,num,yuwen,shuxue,yingyu:integer; 
    end;  
var 
st:array[1..500]of lei; 
temp:lei; 
i,j,n:integer; 
begin 
readln(n); 
for i:=1 to n do 
       with  st[i]  do 
         begin 
           num:=i; 
           readln(yuwen,shuxue,yingyu); 
		   sum:=yuwen+shuxue+yingyu; 
         end; 
for i:=1 to 5 do 
      for j:=   i+1 to n  do 
       begin
        if st[j].sum>st[i].sum then 
         begin 
          temp:=st[j];     st[j]:=st[i];     st[i]:=temp; 
         end 
else if   (st[j].sum) and (st[j].yuwen>st[i].yuwen)  then 
 begin 
temp:=st[j];     st[j]:=st[i];     st[i]:=temp; 
 end 
       end; 
   for i:=1 to 5 do 
     writeln(  st[i].num ,' ',st[i].sum); 
end.