宁波市第25届中小学生程序设计竞赛(初中试题及答案).doc
《宁波市第25届中小学生程序设计竞赛(初中试题及答案).doc》由会员分享,可在线阅读,更多相关《宁波市第25届中小学生程序设计竞赛(初中试题及答案).doc(13页珍藏版)》请在装配图网上搜索。
宁波市第25届中小学生程序设计竞赛 初中组初赛试题 一、选择题(每题1.5分,共30分。每小题只有唯一一个正确答案) 1、在宁波市中小学生程序设计比赛复赛(上机编程)时,以下不能使用的编程语言是: (A)Turbo Pascal (B)Free Pascal (C)C (D)C++ 2、在Free Pascal中按功能键F7或F4时,以下叙述正确的是: (A)F4逐条语句执行(包括子程序),F7运行至光标位置 (B)F7逐条语句执行(包括子程序),F4运行至光标位置 (C)F4逐条语句执行(不包括子程序),F7运行至光标位置 (D)F7逐条语句执行(不包括子程序),F4运行至光标位置 3、使用高级语言编写的程序称之为: (A)源程序 (B)编辑程序 (C)编译程序 (D)链接程序 4、如果自己的程序进入了死循环,应当按什么键终止? (A)Ctrl+C (B)Ctrl+D (C)Alt+C (D)Alt+D 5、参加宁波市中小学生程序设计比赛复赛(上机编程)时,以下哪种行为是允许的? (A)访问互联网或局域网 (B)使用U盘或光盘 (C)使用自带的草稿纸 (D)考试时发现机器有问题,举手示意监考人员处理 6、参加宁波市中小学生程序设计比赛复赛(上机编程)时,你有一个程序被判0分。你发现程序其实是正确的,但存在以下问题,提出申诉,以下哪个申诉会被接受? (A)源程序文件名和存放源程序的目录名错误 (B)只是存放源程序的目录名错误,源程序文件名是正确的 (C)存放源程序的目录名正确,源程序文件名是错误的 (D)根据比赛规则,以上申斥都不会被接受 7、在Free Pascal语言,以下关于各种数据类型占内存空间大小的描述错误的是: (A)每个integer型占2个字节 (B)每个longint型占4个字节 (C)每个boolean型占2个字节 (D)每个extended型占10个字节 8、使用数组逐层保存完全二叉树结构,则以下叙述正确的是: (A)逻辑结构为完全二叉树,物理结构为数组 (B)物理结构为完全二叉树,逻辑结构为数组 (C)逻辑结构和物理结构均为完全二叉树 (D)逻辑结构和物理结构均为数组 9、关键码相同的二个元素,原来在排在前面的还能保证排在前面,这种排序算法我们称它是稳定的。冒泡排序、选择排序、插入排序、快速排序中,一般意义上是稳定的有几种: (A)1 (B)2 (C)3 (D)4 10、在Free Pascal中编辑当前源程序时,可以使用快捷键Ctrl+F7增加调试程序时监视的变量,但如果不小心错按为Ctrl+F6时,会将当前源程序窗口隐藏起来。此时,可以使用菜单命令“Windows/List”调出Windows List对话框,在该对话框中选中隐藏的当前正在编辑的源程序,然后按下面哪个命令按钮可以显示当前正在编辑的源程序? (A)Ok (B)Not Hide (C)Show (D)Delete 11、当n>=10000时,以下四个程序段运行后count的值最大的是: count:=0; while n>=1 do begin for j:=1to n do count:=count+1; n:=n div2; end; count:=0; fori:=1 to n do begin m:=trunc(n/i); for j:=1to m do count:=count+1; end; (A) (B) count:=0; k:=trunc(sqrt(n)); forj:=1 to k do begin for i:=1to j*j do count:=count+1; end; count:=0; n:=4*n; k:=trunc(sqrt(n)); forj:=1 to k do begin for i:=1to j do count:=count+1; end; (C) (D) 12、结构化程序设计的三种基本控制结构为顺序结构、选择结构和循环结构,以下说法正确的是: (A)三种结构都是基本结构,内部不能再有其它结构 (B)三种结构都是基本结构,内部除了允许嵌套同一种结构外,不能再有其它结构 (C)选择结构和循环结构内部可以嵌套有其它结构,顺序结构不可以嵌套其它结构 (D)三种结构内部都可以嵌套其它结构 13、以下属于计算机的基本指令的是: (A)数值和逻辑运算指令 (B)存储和输入输出指令 (C)控制和转移指令 (D)以上都是 14、以下属于汉字输出时使用的编码的是: (A)国标码 (B)区位码 (C)字形码 (D)五笔字形 15、以下存储介质中,一般说来存取速度最快的是: (A)硬盘 (B)内存 (C)U盘 (D)光盘 16、HTTP协议的默认端口是: (A)8080 (B)80 (C)25 (D)15 17、有二个图像A和B,其中A比B能更好地表现图像的色彩和层次,B在放大或缩小时不易失真,那么A和B应该属于: (A)位图、位图 (B)矢量图、位图 (C)位图、矢量图 (D)矢量图、矢量图 18、用来描述网页中的文本、图像、超链接和表格等基本元素的语言是: (A)BASIC (B)Pascal (C)FrontPage (D)HTML 19、标准ASCII码最多能表示的字符个数是: (A)128 (B)64 (C)256 (D)8 20、下列属于信息的是: (A)《宁波日报》 (B)数码相机 (C)2010年温歌华冬奥会实况直播 (D)音乐光盘 二.问题求解(每题5分,共10分) 1、一副扑克牌除去大小王外,有52张牌。其中有黑桃(Spade)、红心(Heart)、方块(Diamond)、梅花(Club)四种花色,每种花色点数从小到大各有13张,它们是:2、3、4、5、6、7、8、9、10、J、Q、K、A。 在上述52张中任取5张,取得炸弹(four of a kind,即四张点数相同的牌加一张另外点数的牌)的取法数有13*48=624种;取得辅鲁(full house,即三张点数相同另加二张点数相同牌)的取法数有多少种?请注意,二种取法中,只要有一张牌花色不同或点数不同,这二种取法就是不同的。 2、有若干堆硬币,甲乙二人参加游戏,游戏规则如下: (1)由甲开始,二人轮流取硬币,每次取时只能从某一堆中取若干个硬币,可以把该堆硬币全部取完,最少可以只取一个硬币,但不能不取硬币。 (2)最后取完最后一个硬币的人为胜者。 比如一开始有二堆硬币,第一堆1枚,第二堆2枚,有几种取法: (1)甲取第一堆1枚,乙取第二堆1枚,甲取第二堆1枚,甲获胜! (2)甲取第一堆1枚,乙取第二堆2枚,乙获胜! (3)甲取第二堆1枚,乙取第一堆1枚,甲取第二堆1枚,甲获胜! (4)甲取第二堆1枚,乙取第二堆1枚,甲取第一堆1枚,甲获胜! (5)甲取第二堆2枚,乙取第一堆1枚,乙获胜! 显然,当甲先取第二堆1枚时,甲能获胜!当甲采取其它取法时,当乙取对时,甲会失败的。但如果一开始二堆硬币数都为2枚,则甲无论在哪一堆中取多少个,乙可以在另外一堆中取同样多个,乙获胜,甲失败。 现在有四堆硬币,第1堆有1枚硬币,第2堆有2枚硬币,第3堆有4枚硬币,第4堆有5枚硬币。问甲先取,在大家都使用最佳方法的情况下,甲能否获胜?如果甲能获胜,请写出第一次在第几堆取多少枚硬币才能获胜?如果不能获胜,则只要写上“No”。 三.阅读程序,求程序运行输出结果(每题8分,共32分) 第1题: Program cz2010_1; var a,b,c,d,n,i,j:longint; find:boolean; f:array[0..19]of longint; begin n:=-1;i:=1; while n<19 do begin i:=i+1;find:=false; for j:=2 to trunc(sqrt(i)) do if i mod j=0 then begin find:=true;break; end; if not find then begin n:=n+1;f[n]:=i; end; end; readln(a,b,c,d); n:=n+1; a:=((f[a]*f[b]-f[c]*f[d]) mod n+n) mod n; b:=((f[b]* f[c]-f[d]* f[a]) mod n+n) mod n; c:=((f[c]* f[d]-f[a]* f[b]) mod n+n) mod n; d:=((f[d]* f[a]-f[b]* f[c]) mod n+n) mod n; writeln(a, ,b, ,c, ,d); end. 【输入】:2 3 5 7 【输出】:______________ 第2题: Program cz2010_2; var a:array[1..30]of char; s,n,i,x,y,z:longint;c:char; begin s:=0;readln(x,y); while not eoln do begin read(c); if c<=9 then s:=s*x+ord(c)-ord(0) else s:=s*x+ord(c)-ord(A)+10; end; readln;write(s,’ ‘); n:=0; while s>0 do begin n:=n+1;z:=s mod y; if z>9 then a[n]:=chr(z-10+ord(A)) else a[n]:=chr(z+ord(0)); s:=s div y; end; for i:=n downto 1 do write(a[i]); writeln; 【输入2】: 1613 3A2B 【输出2】: __________ __________ 【输入1】: 72 126 【输出1】: __________ __________ end. 第3题: Program cz2010_3; var fu,a,num,b,tot,k,n:longint; shu:boolean;c:char; begin num:=0;a:=0;fu:=1;shu:=false;b:=0; while not(eoln) do begin //当一行输入未结束时 read(c); if c=- then fu:=-1 else if (c<=9) and (c>=0) then begin val(c,k);num:=10*num+k;shu:=true; end else if shu then begin shu:=false; if (fu=1) and (num>0) then inc(a); if fu=-1 then inc(b); inc(tot,num*fu); inc(n);num:=0;fu:=1; end; end; if shu then begin shu:=false; if (fu=1) and (num>0) then inc(a); if fu=-1 then inc(b); inc(n); inc(tot,num*fu); num:=0;fu:=1; end; writeln(tot/n:0:3, ,a, ,b); close(input);close(output); end. 【输入】 54hiy-24 51 【输出】 ____________ 第4题: Program cz2010_4; var f:array[1..46]of longint; a:array[1..100]of longint; x,y,z,i,j,n,count:longint; function find(i,h,x:longint):longint; var m:longint; begin if i<3 then exit(0); m:=h+f[i-1]-1; count:=count+1; if x=a[m] then exit(m); if x=eps then begin n:=n+1; ④ ; b[n]:= ⑤ ; end; i:=i+1; end; for i:=0 to n do writeln(a[i]:0:3, ,b[i]); end. 2、表达式求值 以下程序计算包含“+”、“-”、“*”、“(”、“)”和正整数的一个表达式的值。以数组num和数组code作为二个栈。其中栈num用来存储表达式中的数值以及计算的中间结果,栈code用来存储表达式中的运算符号。最终结果存储在num[1]中,程序输出最终求得的一个整数值num[1]。 程序逐字符扫描表达式: 1、如果是运算数,则直接进运算数栈num。 2、如果是运算符: 2.1如果当前运算符级别低于或相同于位于运算符栈顶的前一个运算符的级别,则: 2.1.1 在运算数栈中出栈两次,得到a,b; 2.1.2运算符栈出栈,得运算符p; 2.1.3 将a和b在运算p下的计算结果入运算数栈; 2.1.4当前运算符继续与位于运算符栈顶的前一个运算符比较; 2.2如果当前运算符级别高于位于运算符栈顶的前一个运算符级别,则当前运算符进栈: 3、左括号最高级。右括号最低级 3.1因此,遇左括号时,左括号入栈;但左括号在栈内时,级别低于任何其它符号! 3.2遇右括号时,一直作运算,直至遇上左括号,则简单地作左括号出栈即可,且此时右括号不进栈; 为方便起见,程序会在输入的表达式前后加上一对括号。另外,输入数据保证是正确的。请将程序补充完整。 【样例输入】 12+2*34+(45-5)*(6+7) 【样例输出】 600 Program cz2010_6; var s:ansistring; n,i,tc,tn:longint; x,y:extended; num:array[1..1001]of extended; code:array[1..1001]of char; function cal(x,y:extended;c:char):extended;//计算x和y在运算c下的值 begin if c=- then cal:=x-y else if c=+ then cal:=x+y else cal:=x*y; end; function prio(x,y:char):boolean;//运算符x比运算y级别高吗? begin if x=( then prio:=false else if x=* then prio:=true else if (x=+)and((y=+)or(y=-))then prio:=true else if (x=-)and((y=+)or(y=-))then prio:=true else prio:=false; end; begin readln(s);s:=(+s+); n:=length(s); x:=0;tc:=0;tn:=0; for i:=1 to n do begin if (s[i]>=0)and(s[i]<=9) then x:=x*10+ord(s[i])-ord(0) else begin if x<>0 then begin inc(tn);num[tn]:=x; ⑥ ;end; if s[i]=( then begin ⑦ ;code[tc]:=s[i];end else if s[i]=) then begin while ⑧ do begin dec(tn); num[tn]:=⑨ ; dec(tc); end; ⑩ ; end else begin //+,-,* while prio(code[tc],s[i]) do begin dec(tn); num[tn]:=⑨ ; dec(tc); end; inc(tc); ⑾ ; end; end; end; writeln(num[1]:0:0); end. 宁波市第25届中小学计算机程序设计竞赛 初 中 组 初 赛 答 案 一、单项选择题(每题1.5分,共计30分) 1 2 3 4 5 6 7 8 9 10 A B A A D D C A B A或C 11 12 13 14 15 16 17 18 19 20 C D D C B B C D A C 二、问题求解(共2题,每题5分,共10分) 1、 13*4*12*6=3744种 2、 第2堆取2枚 三、阅读程序,求程序运行输出结果(共4题,每题8分,共32分) 1、8 14 6 18 2、 69 1000101 14891 6A16 3、27.000 2 1 4、5 2 0 4 6 4 四、程序填空(前5空,每空2分,后6空每空3分,共28分) ① 0..maxn*2 maxn可以是大于等于1000的整数,也可以将maxn*2换以大于等于2000的整数 ② b1[i]+b2[j] 或b2[j]+b1[i] ③ a[k]+a1[i]*a2[j]或次序不同的等价表达式 ④ a[n]:=a[i] ⑤ i ⑥ x:=0______________⑦ inc(tc)或tc:=tc+1或inc(tc,1) ⑧ code[tc]<>s[i]前后可以有括号⑨ cal(num[tn],num[tn+1],code[tc]) ⑩ dec(tc)或tc:=tc+1或dec(tc,1)⑾ code[tc]:=s[i] ____- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 宁波市 25 中小学生 程序设计 竞赛 初中 试题 答案

链接地址:https://www.zhuangpeitu.com/p-9199781.html