2016余姚市小学生程序设计竞赛初赛试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2016年余姚市小学生程序设计竞赛初赛试题
(Pascal语言二小时完成)
●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●
一.单项选择题(共20题,每题1.5分,共计30分。
每题有且仅有一个正确答案。
)
1、字符在计算机内部是连续表示的,字符“T”的ASCII码对应的二进制数为1010100,则大写字符“R”的ASCII码对应的二进制是( )
A) 1010101 B) 1010000 C) 1010010 D) 1000111
2、用一个字节表示整数,则11和-11在计算机内部分别表示为()
A) 00001011 10001010 B) 00001011 11110101
C) 11110101 11110100 D) 00001011 11110110
3、运算器是()的重要组成部分。
A) 硬盘B) 主板C) 内存D) 中央处理器(CPU)
4、在外部设备中,扫描仪属于()。
A) 输入设备B) 输出设备C) 辅(外)存储器D) 主(内)存储器
5、每个不同的二进制数可以表示一种颜色,如果一幅图像有256种颜色,最少需要几位二进制数来表示?()
A) 8 B) 16 C) 128 D) 256
6、下列软件中是计算机操作系统的是:
A) Excel B) Linux C) Word D) Safari
7、下面哪个是即时通讯工具( )
A) 微信B) 推特Twitter C) 微博D) 脸谱facebook
8、下列软件不能用于浏览网页的是( )
A) Safari B) Internet Explorer C) MySQL D)Google Chrome
9、下列说法中,错误的是( )。
A)程序是指令的序列,它有三种结构:顺序、分支和循环。
B)地址总线决定了中央处理器CPU所能访问的最大内存空间的大小。
C)中央处理器CPU内部有寄存器组,用来存储数据。
D)不同厂家生产的CPU所能处理的指令集一定相同。
10、计算机的运算速度取决于给定的时间内,它的处理器所能处理的数据量。
处理器一次能处理的数据量叫字长。
已知64位的酷睿处理器一次能处理64个信息位,相当于()字节。
A) 8个B) 1 个C) 16个D) 2个
11、以下运算结果为False的是()
A) 5>5 B) (5>=4) and (7<=7) C) not (False) D) (6<4) or(5>=5)
12、下列说法中正确的是( ) 。
A) 计算机体积越大,其功能就越强
B) CPU的主频越高,其运行速度越快
C) 两个显示器屏幕大小相同,则它们的分辨率必定相同
D) 点阵打印机的针数越多,则能打印的汉字字体越多
13、将十进制数0.5转化成十六进制数:(0.5)10=( ) 16.
A) 0.1 B) 0.75 C) 0.8 D) 0.25
14、一个包含n个分支结点(非叶结点)的完全二叉树,它的叶结点数目为:
A) 2n + 1 B) n C) n-1 D) n+1
15、快速排序最好情况下的算法复杂度为:
A) O(log2n) B) O(n) C) O(nlog2n) D) O(n2)
16. 有一个由1000个整数构成的顺序表,假定表中的元素已经按升序排列,采用二
分查找定位一个元素。
则最多需要几次比较就能确定是否存在所查找的元素:
A) 1000次B) 10次C) 100次D) 500次
17、排序算法是稳定的意思是关键码相同的记录排序前后相对位置不发生改变,下
列哪种排序算法是不稳定的:
A) 冒泡排序B) 插入排序C) 归并排序D) 快速排序
18、已知n个顶点的有向图,若该图是强连通的(从所有顶点都存在路径到达其他
顶点),则该图中最少有多少条有向边?
A) n B) n+1 C) n-1 D) n*(n-1)
19、现在主要使用的IP v4地址是由( ) 位二进制数码表示的。
A) 16 B) 32 C) 24 D) 8
20、美籍匈牙利数学家冯·诺依曼对计算机科学发展所做出的贡献是:()
A) 提出理想计算机数学模型,成为计算机科学理论基础
B) 是世界上第一个编写计算机程序的人
C) 提出存储程序工作原理,并设计出第一台具有存储程序功能的计算机EDVAC
D) 指出计算机性能将以每两年翻一番的速度向前发展
二.问题求解(共2题,每空5分,共计10分)
1.设有一个共有6级的楼梯,某人每步可走1级,也可走2级,也可走3级,问某人从底层开始走完全部楼梯的走法共有种。
(当有3级楼梯时,共有4种走法,即1+1+1,1+2,2+1,3)
2.在一个果园里,笑笑将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。
笑笑决定把所有的果子合成一堆。
每一次合并,笑笑可以把任意两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。
可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。
笑笑
在合并果子时总共消耗的体力等于每次合并所耗体力之和。
假定有5堆果子,每堆果子的数量为12,4,11,15,10,每个果子重量都为2,笑笑想知道最小的体力耗费值是。
三.阅读程序写结果(共4题,每题8分,共计32分)
1.
var
h,m,s,n:longint;
begin
readln(n);
h:=n div 3600;
m:=n div 60 – h*60;
s:=n mod 60;
writeln(h,’h’,m,’m’,s,’s’);
end.
输入:4096
输出:_______
2.
var
n,a,b,c,i:longint;
begin
read(n);
a:=0; b:=1; i:=1;
while i<n do
begin
c:=a+b;
a:=b;
b:=c;
inc(i);
end;
writeln(c);
end.
输入:9
输出:_______
3.
var n:longint;
procedure change(t:longint);
begin
if t=0 then exit;
change(t div 8);
write(t mod 8);
end;
begin
readln(n);
change(n);
end.
输入:2016
输出:
4.
var
n,i,j,k:longint;
st:ansistring;
begin
readln(n);
readln(st);
st:=st+st;
i:=1;j:=2;k:=0;
while (i<=n) and (j<=n) and (k<n) do begin
if i=j then inc(j);
if st[i+k]=st[j+k] then inc(k)
else
if st[i+k]<st[j+k] then
begin
j:=j+k+1;
k:=0;
end
else
begin
i:=i+k+1;
k:=0;
end;
end;
writeln(i);
end.
输入:15
yuyaoshijingsai
输出:
四.完善程序 (前8空,每空3分,后2空,每空2分,共28分)
1、(买铅笔)P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。
她发现商店一共有3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。
为了公平起见,P老师决定只买同一种包装的铅笔。
商店不允许将铅笔的包装拆开,因此P老师可能需要购买超过n支铅笔才够给小朋友们发礼物。
现在P老师想知道,在商店每种包装的数量都足够的情况下,要买够至少n支铅笔最少需要花费多少钱。
现给定N(需要的铅笔数量),以及3种包装的铅笔信息第一个整数表示这种包装内铅笔的数量,第二个整数表示这种包装的价格。
求P老师最少需要花费的钱。
样例输入:
57
2 2
50 30
30 27
样例输出:
54
var
n,i,x,y,s,min:longint;
begin
read(n);
min:=maxlongint;
for i:=1 to ① do
begin
read(x,y);
s:=(②) div x+1; //求解至少需要s盒该包装的铅笔 if ③ then min:=④; //求解最少的花费
end;
writeln(⑤);
end.
2、(回文日期)在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。
牛牛习惯用8位数字表示一个日期,其中,前4位代表年份,接下来2位代表月份,最后2位代表日期。
显然:一个日期只有一种表示方法,而两个不同的日期的表示方法不会相同。
牛牛认为,一个日期是回文的,当且仅当表示这个日期的8位数字是回文的。
现在,牛牛想知道:在他指定的两个日期之间(包含这两个日期本身),有多少个真实存在的日期是回文的。
一个8位数字是回文的,当且仅当对于所有的i(1<=i<=8)从左向右数的第i 个数字和第9-i个数字(即从右向左数的第i个数字)是相同的。
例如:
•对于2016年11月19日,用8位数字20161119表示,它不是回文的。
•对于2010年1月2日,用8位数字20100102表示,它是回文的。
•对于2010年10月2日,用8位数字20101002表示,它不是回文的。
每一年中都有12个月份:
其中,1、3、5、7、8、10、12月每个月有31天;4、6、9、11月每个月有30天;而对于2月,闰年时有29天,平年时有28天。
一个年份是闰年当且仅当它满足下列两种情况其中的一种:
1.这个年份是4的整数倍,但不是100的整数倍;
2.这个年份是400的整数倍。
例如:
•以下几个年份都是闰年:2000、2012、2016。
•以下几个年份是平年:1900、2011、2014。
【样例输入】
20000101
20101231
【样例输出】
2
对于样例,符合条件的日期是20011002和20100102
算法提示:枚举年份,再根据年份得到回文的日期,最后判断每个日期是否构成回文,且在起始终止日期之间。
var st,st1:string;
x,y,i,g,m,d,sum,j:longint;
function monthDay(y,m:longint):longint;//得到第y年m月的天数。
begin
if (m=1)or(m=3)or(m=5)or(m=7)or(m=8)or(m=10)or(m=12) then exit(31);
if (m=4)or(m=6)or(m=9)or(m=11) then exit(30);
if m=2 then
if (y mod 400=0)or ① then exit(29)
else exit(28);
end;
function pd:boolean;
begin
if (m<1)or(m>12) then exit(false);
if (d<1)or(d>②) then exit(false);
if i<1000 then exit(false);
if ③ then exit(false);
exit(true);
end;
begin
read(x,y);
for i:=x div 10000 to y div 10000 do
begin
str(i,st1); //str函数作用将数字i转换成字符串,并赋值给st1;
st:='00000000';
if length(st1)<>4 then continue;
for j:=1 to 4 do
begin
st[j]:=st1[j];
st[9-j]:=st1[j];
end;
val(st,g); //val函数作用将字符串st转换成数字,并赋值给变量g;
val(copy(st,5,2),m);
val(④,d);
if pd then ⑤;
end;
writeln(sum);
end.。