宁波市历届中小学生计算机程序设计竞赛初赛试题
A[1] A[2] A[3] A[4] A[5] 10 A[6] 2 A[7] 9 A[8] 8 A[9] A[10] 3 6 4 5 1 7 (A)10 (B)5 (C)6 (D)2
6、1GB= ( )KB 。
(A) 1000 (B) 1024 (C)1024×1024 (D)1000×1000
7、下面有关计算机病毒的说法,错误的是( )。
(A)为防止病毒感染计算机,使用软盘时,将软盘写保护
(B)计算机的病毒不仅能损坏文件,还可能造成电脑主板等硬件的损坏 (C)上网的电脑有可能会感染病毒 (D)计算机病毒也是程序
8、下列存储器中,存取速度最快的是( )。
(A)软盘 (B)内存 (C)光盘 (D)硬盘
9、在Windows 中,能通过输入“?a*.?”命令查找到的文件是( )。
(A)pascal.c (B)ppa.1 (C)pa1wer.cc (D)dhdtfgpa1.cc
10、下列各种说法中,正确的是( )。
(A)所有的十进制小数都能准确地转换为有限位二进制小数 (B)汉字的计算机机内码就是区位码
(C)存储器具有记忆能力,其中的信息任何时候都不会丢失 (D)计算机中所有信息都采用二进制编码
11、算式(4095)10-(7FF)16+(3000)8的结果不正确的是( )。 (A)(3584)10 (B)(111000000000)2 (C)(17000)8 (D)(E00)16
12、下列函数值是整型的是( )。
(A)chr(23) (B)ord(false) (C)succ(false) (D)odd(98)
13、把整数5转换为字符?5?的表达式是( )。 (A) Ord(5+chr(?0?)) (B)ord(5+chr(0)) (C) chr(5+ord(?0?)) (D)chr(5+ord(0))
14、以下标准数据类型中,不能作为for循环控制变量的是( )。 (A)integer型; (B)real型; (C)boolean型; (D)char型
15、在E-MAIL系统中,用于接收邮件的服务器称为( )服务器。 (A)POP3 (B)SMTP (C)DNS (D)FTP
16、衡量网络上数据传输速率的单位是bps,其含义是( )。 (A)数据每秒传送多少二进制位; (B)数据每秒传送多少字节;
(C)数据每秒传送多少公里; (D)数据每秒传送多少千公里。
17、下列各项中不属于系统软件的是( )。
(A)Windows (B)Word (C)Free Pascal (D)DOS
宁波市历届中小学生计算机程序设计竞赛初赛试题
18、下列计算机设备中,不是输出设备的是( )。
(A)显示器 (B)音箱 (C)打印机 (D)扫描仪
19、有一个容量大小为4的栈,元素A、B、C、D按照A、B、C、D的次序依次入栈,且每个元素在出栈后不得再重新入栈,如果入栈和出栈的操作序列为:入栈-入栈-出栈-入栈-出栈-出栈-入栈-出栈,问元素A将是第几个出栈的?( )
(A)1 (B)2 (C)3 (D)4
20、在线性表的两种存储表示中,下列描述正确的是( )。
(A)数组利于插入,不利于查找 (B)链表利于查找,不利于插入
(C)数组利于查找,不利于插入 (D)数组与链表中的插入与查找效率差不多
二、阅读pascal程序并写出运行结果(每题6分,共18分) 第1题:请写出程序运行后变量sum的值(6分) program xx07_1;
const maxn=1000000; var n,k,sum:longint;
f:array[1..maxn] of 0..1; begin
readln(n);
for k:=1 to n do f[k]:=1;
for k:=1 to n div 2 do f[k*2]:=0; for k:=1 to n div 3 do f[k*3]:=0; sum:=0;
for k:=1 to n do sum:=sum+f[k]; writeln('sum=',sum); end.
输入:1000
输出:sum=_______
第2题:请写出程序运行后变量ok的值(每空3分) program xx07_2; var s:string;
k,n:integer;ok:boolean; begin
readln(s);n:=length(s); k:=1;ok:=true;
while ok and (k<=n div 2) do
if s[k]<>s[n+1-k] then ok:=false else k:=k+1; writeln(ok); end.
①输入:123,输出为:_______ ②输入:121,输出为:_______
第3题:请写出程序运行后变量sum的值(6分) program xx07_3;
宁波市历届中小学生计算机程序设计竞赛初赛试题
const maxn=1000;
var pos,value:array[1..maxn]of longint; n,i,j,x,sum:longint; change:boolean; begin
read(n);
for i:=1 to n do read(pos[i],value[i]); change:=true;i:=1;
while change and (i<=n-1) do begin change:=false; for j:=1 to n-i do
if value[j]>value[j+1] then begin change:=true;
x:=value[j];value[j]:=value[j+1];value[j+1]:=x; end; i:=i+1; end;
sum:=0;
for i:=1 to n do sum:=sum+pos[i]*value[i]; writeln('sum=',sum); end. 输入:
10 1 10 2 1 3 2 4 9 5 3 6 4 7 8 8 5 9 6 10 7
输出为:sum=_______
三、简答题(第1题6分,第2题8分,共14分)
第1题:河的二岸(A岸、B岸)各有15个码头,它们距上游某城市的距离如下表所示,且A岸的一个码头只与B岸的一个码头(即表中上下对应的二个)有航线,在保证不出现航线交叉的情况下,问: (1) 最多能同时开通几条航线?(3分)
(2) 能达到(1)中最多航线条数的不同通航方案共有几种?(3分) A岸 B岸
第2题:有一堆火柴共若干根,现由甲乙两人轮流从中拿取。规定:除最先轮到取火柴者,其第一次可以拿走任意
2 4 10 15 6 13 9 9 13 4 1 3 7 14 11 7 3 1 6 2 5 5 8 8 12 14 15 12 11 10 宁波市历届中小学生计算机程序设计竞赛初赛试题
数目的火柴(但不能拿完,也不能不拿)外,接下来轮到者,每次至少要拿走一根,但至多只可拿走上次对方所取火柴数目的两倍,并约定:最先将火柴取光者为胜者。问: (1) 若原先这堆火柴的根数不少于2根,但最多不多于9根,问:共有哪些情况能确保最先轮到取火柴者必胜?
(写出相应的原先这堆火柴的根数)(4分)
(2) 若原先这堆火柴的根数不少于10根,但最多不多于23根,问:有哪些情况使最先轮到取火柴者必败?(写
出相应的原先这堆火柴的根数)(4分)
四、完善程序(第一大题12分,第二大题16分,共28分) 第1题:完全数(每空3分,共12分)
如果一个正整数的所有小于它本身的因子之和等于该正整数,则该正整数称为完全数。比如6=1+2+3,于是6称为完全数;28=1+2+4+7+14,28也是完全数。
以下程序输入一个数n,输出1至n中的完全数的个数。请完善该程序。 program xx07_5; var n,i,count:longint;
function WanQuanShu(k:longint):longint; var i,sum:longint; begin
①_____________;
for i:=1 to k div 2 do
if ②_____________ then sum:=sum+i;
if sum=k then
WanQuanShu:=③________ else
WanQuanShu:=④________;
end;
begin
readln(n); count:=0;
for i:=1 to n do
count:=count+wanquanshu(i); writeln(count); end.
第2题:石子划分(每空4分,共16分)
给出n堆石子,以及每堆石子数。请将它们分为两堆,使得这两堆的总石子数差最小。输入n,以及每堆石子数,输出分为两堆后的最小差值。比如,n=4,四堆石子分别有13,6,8,14颗,则可以分为13+8和14+6的两堆,它们的最小差为1。
以下程序:(1)求得所有石子数total,以及它的一半half;
(2)在所有石子堆中作适当选择,对每种选择方案,求不超过half的已选中堆中的石子总数的最大值max。所求即为(total-max)-max。
(3)以a[j]表示第j堆石子数;以b[j]表示第j堆石子是否被选中,如果b[j]=1,表示第j堆被选中,如果b[j]=0表示第j堆没有被选中。
(4)各种方案的表达及次序如下:以00…00(均不选中),00..01(只选中第n堆石子),00..10(只选中第n-1堆石子),00…11(选中第n-1堆和第n堆石子),00…100(选中第n-2堆石子),00…101(选中第n-2堆和第n堆石子),11…11(选中所有n堆石子)。
宁波市历届中小学生计算机程序设计竞赛初赛试题
请完善该程序。
program xx07_6; const maxn=20; var n,i,j:longint;
total,half,sum,max:longint; a:array[1..maxn] of longint; b:array[0..maxn]of 0..1; begin
readln(n); total:=0;
for i:=1 to n do begin read(a[i]);
total:=total+a[i]; end;
half:=total div 2; max:=0;
for i:=1 to n do b[i]:=0; i:=n;
while i>0 do begin sum:=0;
for j:=1 to n do
sum:=⑤________________;
if ⑥______________________ then max:=sum; i:=n;
while (i>0) and (b[i]=1) do i:=⑦____________; if i>0 then begin
b[i]:=⑧_________; for j:=i+1 to n do b[j]:=0; end; end;
writeln(total-max-max); end.
宁波市第22届中小学生计算机程序设计竞赛
预赛答卷(小学组)
(考试时间120分钟,满分100分)