2014年宁波市第29届中小学生计算机程序设计竞赛小学组初赛试题
宁波市第28届中小学生计算机程序设计竞赛复赛试题(小学组)

宁波市第28届中小学生计算机程序设计竞赛复赛试题(小学组)题目一览关于竞赛中不同语言使用限制的说明一.关于使用Pascal语言与编译结果的说明1.对于Pascal语言的程序,当使用IDE和fpc编译结果不一致时,以fpc的编译结果为准。
2.允许使用数学库(uses math子句),以及ansistring。
但不允许使用编译开关(最后测试时pascal的范围检查开关默认关闭:{$R-,Q-,S-}),也不支持与优化相关的选项。
3.本次比赛允许使用64位整数类型:int64或qword。
1.哈夫曼编码(coding)题目描述哈夫曼编码是一种编码方式,是可变字长编码的一种,由Huffman 于1952 年提出。
该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫Huffman 编码。
简单地来说,就是出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的。
现在请你模拟这样的原则对给定的一个字符串进行字母统计。
输入输入文件coding.in,只有一行,是一个字符串,由小写英文字母组成,长度不超过255 个字符。
输出输出文件coding.out,有若干行,每行有两部分组成:一个字母和该字母出现的频率,中间用一个空格分隔,并按频率高低排列,频率相同时则按字母的ASC 码的先后顺序排列。
样例输入soon样例输出o 2n 1s 12. 立方和(cubsum)题目描述现给出一个三位数,先对这个三位数的各位数字的立方求和,然后再对求出的和中的各位数字的立方求和,如此一直继续下去,判断最后能否得到一个不再变化的固定值。
如能得到一个固定值,就求出这个固定值;如果不能,则输出提示信息“error” 。
另外请注意,在求解过程中,若某一次求和过程中得到的值超过三位数,则取该数的低三位继续往下运算……例如,对于三位数111,则第一次计算应是1×1×1+1×1×1+1×1×1=3,第二次计算应是0×0×0+0×0×0+3×3×3=27,第三次计算应是0×0×0+2×2×2+7×7×7=351,第四次计算应是3×3×3+5×5×5+1×1×1=153,第五次计算应是1×1×1+5×5×5+3×3×3=153,与第四次计算的结果相同,这时可不再计算,输出固定值153。
宁波市第29届中小学生程序设计竞赛复赛试题(初中组)解题报告(1)

宁波市第29届中小学生程序设计竞赛复赛试题(初中组)解题报告第一题战马列队题意不难理解,因为n<=1000,我们可以枚举将战马替换后,最后一匹白马在队列中的位置,这样只需统计这匹马之前(包括这匹马)棕马的数量s1,这匹马之后(不包括这匹马)白马的数量s2,将它们替换就能达到我们需要的队列,那么以这个位置作为最后一匹白马的答案就是替换的马匹数即ans=s1+s2。
最终答案即为所有ans中的最小值。
别忘了n<=1000,string存不下,要用ansistring。
代码如下:vars:ansistring;i,j,n,ans,cnt:integer;beginreadln(n);readln(s);ans:=n;for i:=1 to n do begin // i即为枚举的最后一匹白马的位置cnt:=0;for j:=1 to i doif s[j]='B' then inc(cnt);for j:=i+1 to n doif s[j]='W' then inc(cnt);if ans>cnt then ans:=cnt;end;writeln(ans);end.第二题马农这道题首先需要一个常用的小技巧,我们开一个二维数组s[i,j],表示左上角为(1,1),右下角为(i,j)的子矩形中所有数字的和,我们可以用一个递推公式快速求出s数组,即s[i,j] = s[i-1,j]+s[i,j-1]-s[i-1,j-1]+a[i,j] ,其中a[i,j] 表示(i,j)这个格子上的数字。
那么求出s数组有什么用呢?利用s数组,可以迅速求出左上角为(x,y),右下角为(z,u)的子矩形中所有数字的和,公式为ans=s[z,u]-s[z,y-1]-s[x-1,u]+s[x-1,y-1]。
其实上述技巧,在前几年的宁波赛中出现过,即为小学组的题目《方格稿纸》,当然我们是初中组,自然难度要比小学组大,了解上述小技巧后,我们开始来解决这道题目。
2012年宁波市小学组初赛模拟试题(居敬1)1

宁波市中小学生程序设计竞赛小学组初赛模拟试题一一.选择题(每题2分,共30分。
每小题只有唯一一个正确答案)1.二进制数(1011111)2的值是(A)92 (B)93 (C)94 (D)952.每个不同的二进制数可以表示一种状态,要表示256种灰度的颜色,至少需要的二进制位数是(A)3 (B)4 (C)7 (D)83.以下运算结果为False的是(A)not(5>=5) (B)(5>=4) and (7<8)(C)not(false) (D)(5<4) or (7>5)4.文本文件的扩展名是(A)pas (B)exe (C)bat (D)txt5.下列属于信息技术领域中存储容量单位的是(A)ROM (B)GB (C)MP3 (D)DVD6.全国青少年信息学奥林匹克联赛的英文简称是(A)IOI (B)NOI (C)GDOI (D)NOIP7.已知一维数组定义a:array[0..100]of longint;每个元素占用4个字节,则数组a需要占用的总字节数是(A)100 (B)101 (C)400 (D)4048.在pascal系统中,下列可作为变量名的是(A)3a (B)do (C)array (D)mp39.在pascal系统中,保存文件的快捷键是(A)F2 (B)F3 (C)Ctrl+c (D)Ctrl+v10.用Free Pascl编程时,你写了以下的语句assign(output,'abc.out');rewrite(output);在该程序中必须包含的语句是(A)close(input) (B)close(output)(C)close(abc.out) (D)close(‘abc.out’)11. 有以下的程序:var s:string; beginreadln(s);writeln(s[1]);end.该程序运行时,输入“ABC ”后按回车键,输出为(A )A (B )B (C )C (D )ABC12.程序设计竞赛使用的Free Pascal 语言中,Maxint 的值等于(A )1024 (B )32767 (C )65536 (D )-3276813. 在Pascal 程序中,以下结果为整数型的是(A )4 / 2 (B )19 div 3 (C )abs(3.1-1.1) (D )sqrt(9)14. 有以下程序段S:=0;for i:=1 to 10 do if i mod 2=0 then s:=s+1; writeln(s);虚线框内的程序控制结构属于(A )顺序结构 (B )循环结构 (C )选择结构 (D )树型结构15. 能随机产生二位正整数的pascal 表达式是(A )random(99) (B )random(100) (C )random(89)+10 (D )random(90)+10二.问题求解(每题5分,共10分)1.在不超过100的正整数中,不能被2整除、也不能被3整除的整数个数是多少?2.在四行四列的表格中,每格放有0或1的数字;以1表示此处有障碍, 0表示人可以从此处通过。
2018鄞州区中小学生程序设计竞赛小学组(C++)

则其后序遍历的结点访问顺序是( )
A.24735681
B.74253681
C.24715386 D.74258631
12、以下断电之后将仍能保存数据的有( )。
A. 硬盘
B. ROM
C. 显存
D. RAM
1
15、ASCII 码的主要作用是( ) A.方便信息交换 B.方便信息存储 C.便于管理 D.便于输出
16、下列哪一种图的邻接矩阵一定是对称矩阵( )
A.有向图
B.无向图
C.AOV 网
D.AOE 网
17、有 6 个元素按 6,5,4,3,2.1 的顺序进栈,问下列哪一个不是合法的出栈序列( )
A.5,4,3,6,1,2
} cout<<ans<<endl; return 0; } 输入:7 输出:________
3、 #include <iostream> #include <cstdio> #include <algorithm> #include <cmath> using namespace std; unsigned long long f[81]; int main(){
2018 鄞州区中小学生程序设计竞赛 小学组(C++)
一、 单项选择题(共 20 题,每题 1.5 分,共计 30 分;每题且仅有一 个正确 选项)
1、我国第一台电子计算机于( )年试制成功
A.1953
B.1958
C.1964
D.1978
2、某台计算机的内存容量是 2018MB,这里的 2018MB 容量是指( )个字节
宁波市2014年中小学电脑制作活动评比类项目获奖名单

黄彩芬
二等奖
14
钓鱼
李加婕
象山港书院
张秀常
二等奖
15
我渴
刘彦彤
象山港书院
张秀常
二等奖
16
抵制雾霾行动起来
袁陈腾红
宁波市第十五中学实验校区
钱颖昳
二等奖
17
让“心”传承
顾开心
宁波市北仑区岷山中学
杨润凤
二等奖
18
马年如意(明信片设计)
姚静
鄞州区瞻岐镇中心初级中学
孟书会
二等奖
19
绿色行动
周健
三等奖
46
奇趣探险
戴诗雨、孙宇涵
江北区广厦小学
戴静娴
三等奖
47
我的梦想之来自星际的友谊
赵俊哲
高新区实验学校
梁健飞
三等奖
48
太空图书馆
郑佳仪
镇海区庄市中心学校
徐波
三等奖
49
日出
童德恺
宁海县前童镇中心小学
仇琴琴
三等奖
50
丫丫的网店
蔡卓琳
镇海区庄市中心学校
徐波
三等奖
51
梦想
王佳慧
慈溪市南门小学
陈铁女
三等奖
6
校园环保主题网站
朱嘉立、余乐
江北区洪塘中学
曾大利
三等奖
九、高中组电脑动画
序号
作品名称
作者姓名
所在学校
指导教师
奖项
1
一万个与一个
吴萌
象山港书院
张秀常
一等奖
2
健康生活
李嘉钰
宁波市第三中学
蒋浙萌
宁波市第24届中小学生计算机程序设计竞赛复赛试题(小学组)

宁波市第24届中小学生计算机程序设计竞赛复赛试题(小学组)题目一览关于竞赛中不同语言使用限制的说明一.关于使用Pascal语言与编译结果的说明1.对于Pascal语言的程序,当使用IDE和fpc编译结果不一致时,以fpc的编译结果为准。
2.允许使用数学库(uses math子句),以及ansistring。
但不允许使用编译开关(最后测试时pascal的范围检查开关默认关闭:{$R-,Q-,S-}),也不支持与优化相关的选项。
3.本次比赛允许使用64位整数类型:int64或qword。
1.甜蜜的烦恼(space)题目描述【问题描述】最近珍珍学会了使用电脑,她发现可以利用电脑解决很多事情,并且效率会快许多。
比如,在一份名单中找某个人的姓名,在以前,她得依次逐个查找,速度慢又很容易看错。
现在,她使用菜单命令:“编辑”-“查找”(或按Ctrl+F键),在弹出的查找对话框中,输入要查找的姓名,电脑就会找到要找的姓名或告诉你不存在你要找的姓名了。
真是又快又准,太爽了!今天珍珍在查找时,输入“张明”,电脑告诉她不存在,但她不经意间发现“张明”是有的!原来,提供原始名单的人,为了格式漂亮在中间输入了一个空格,因此电脑找不到了。
她想这容易解决,继续查找“李达”,没有?查找“李达”(中间一个空格),还没有?原来某些姓名中间的空格数是有多个的!珍珍想删除所有姓名中间的空格,但由于名单很多,一个一个删除太慢了,所以她找到了会编程解决问题的你,请你写一个程序,删除所有名单中间的空格。
输入【输入】输入文件space.in的第一行只有一个正整数n,表示名单中共有n个人的姓名。
第二行至第n+1行共n行,每行是一个人的姓名(由大小写英文字母以及字母之间的空格组成)。
输出【输出】输出文件space.out有n+1行,第一行只有一个正整数,表示总共删除的空格数。
第二行至第n+1行共n行,每行表示一个删除空格后的姓名(按照输入姓名的次序)。
鄞州区小学生计算机程序设计竞赛

鄞州区小学生计算机程序设计竞赛(两小时完成)◆◆请将正确答案在答题卷上填写,在本试题卷上答题无效◆◆一、选择题(1.5*15)1)下列标识符哪个是合法的( )。
A、abcB、x#C、beginD、1a2)下列函数值是整型的是()A.chr(23)B.ord(x)C.pred(x)D.succ(x)3)下列函数值不可能是布尔类型的是()A.odd(g)B.ord(g)C.pred(g)D.succ(g)4)I nteger类型的数据范围是()A.-32767~32767B.0~32767C.-32768~32767D.-32767~327685)设x是实型变量,下列表达式能将x四舍五入后保留三位小数的是()A.round(x)B.round(x)/1000C.round(x*1000)/1000D.round(x*100)/1006)下列表达式的值为FALSE的是()A.Odd(True(7.49))B.Round((Abs(-9.5)))<10C.Not(‘9’<’100’)D.Ord(Chr(Pred(8)))>=77)判断变量ch的值是否为小写字母,下列表达式正确的是()A.not(ch<’a’)or(ch>’z’)B.’a’<=ch<=’z’C.(ch>=a)and(ch<=z)D.ch>=’a’ and ch<=’z’8)表达式Chr(Ord(‘A’)+4))的值是()A.’D’B.‘E’C.69D.1019)设a[1]=1,a[2]=2,a[3]=3,a[4]=4,a[5]=5,a[6]=6,且i=1,j=2,k=3,m=4下列变量的值等于3的是()A.a[i*j]B.a[a[k-i]+3]C.a[m div j]D.a[a[j+k-2]]10)十进制数2011等值于八进制数()A.4033B.3755C.4003 D 3733.11)下列无符号数中,最小的数是()A.(11011001)2B.(31)10C.(37)8D.(2A)1612)十进制算是表达式:5*512+7*64+4*8+5的运算结果,用二进制表示为()A.101101100101B.101111100101C.111111100101D.11101111011113)十进制数13/128可用二进制数码序列表示为()A.1101/1000000B.1101/10000000C.0.001101D. 1011/1000000014)已知二进制数x =(0.1011010)2 ,则[x/4]=( )A.0.01011101B.111101100C.0.00101101D.0.101101015)由4个a,3个b和1个c构成的所有字符串中,包含字串”abc”的共有( )个A.30B.60C.120D.48二、填空题1、基础知识填空(1*10)1)计算机语言分为___________语言、______________语言和____________语言。
宁波市第 届中小学生计算机程序设计竞赛复赛试题

输入文件名 average.in
suanpan.in
findbrush.in
输出文件名 average.out
suanpan.out
findbrush.out
内存限制
128MB
128MB
128MB
时限
Байду номын сангаас1S
1S
1S
分值
100
100
100
结 果 比 较 方 全文比较(过滤行末空格及文件尾的空行)
式
射击 shooting shooting.pas/c/cpp shooting.in shooting.out 128MB 1S 100
第1页
宁波市第 31 届中小学生计算机程序设计竞赛复赛试题(小学组)
第一题、平均值
(average.pas/c/cpp)
【问题描述】 豆豆从小对数字很敏感,小学里就显露出超常的能力,老师为了防止他太过骄傲,给了
他一个可怕的难题:求一串给定整数某一段的平均值,保留 3 位小数。每个整数都是小于 2^31 的。老师做梦也没想到豆豆全都回答出来了,原来豆豆有一个擅长编程的朋友你。 【输入】
宁波市第 31 届中小学生计算机程序设计竞赛复赛试题(小学组)
宁波市第 31 届中小学生计算机程序设计竞赛 复赛试题(小学组)
比赛时间:2016 年 3 月 27 日下午 13:30-16:00
一、题目一览
试题名称 平均值
拨算盘
找画笔
英文代号
average
suanpan
findbrush
程序名
average.pas/c/cpp suanpan.pas/c/cpp findbrush.pas/c/cpp
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2014年宁波市第29届中小学生计算机程序设计竞赛小学组初赛试题一、选择题(每题有且仅有一个正确答案,选对得1.5分,选错、不选或多选均失分)1.存放一个ASCII码需要的字节数为(A)1字节(B)2字节(C)0.5字节(D)4字节2.下列软件中不属于操作系统的是(A)win7(B)linux(C)winxp(D)winrar3.下列数中最小的是(A)(7)8(B)(11)7(C)(15)10(D)(11)54.世界上第一台电子计算机诞生于(A)1949(B)1849(C)1946(D)18935.在下面各奖项中,为计算机科学与技术领域作出杰出贡献的科学家设立的奖项是(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:=s9.计算圆周长的算法描述如下:①输入圆半径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:=99while a<>100doa:=a+1;(A)0(B)1(C)2(D)312.下面关于堆栈和队列的说法中错误的是(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)then17.某班有30个同学报名参加100、400、800m3个运动项目比赛。
已知有6人获100m参赛资格,8人获400m参赛资格,18人获800m参赛资格。
且其中有1人获全部3项参赛资格,则至少有()人没有获任何项目参赛资格。
(A)0(B)1(C)2(D)318.下列pascal语言的函数中,返回值不是数值类型的是(A)pos(B)copy(C)length(D)abs19.下列判断语句中,不能判断x为奇数的是(A)odd(x)=true(B)odd(x)<>false(C)x and1<>x(D)(x shr1)shl1<>x20.小李在递归函数内部定义了一个长度为100的longint数组,但是编译运行却频频报错,请问最有可能的原因是(A)代码风格不够优美(B)程序效率太低导致超时(C)显示器亮度不够(D)递归层次过多导致栈空间不足二.问题求解(每小题5分,共10分)1.在1到100的100个整数中,能被3整除且不能被4整除的数一共有个。
2.定义2个1000*1000的二维长整型数组需要的存储空间为MB。
(保留1位小数)三、阅读程序写结果(每题8分,共32分)1.Var x:longint;flag:boolean;beginread(x);flag:=false;if(x mod4=0)and(x mod100<>0)then flag:=true;if x mod400=0then flag:=true;if flag then writeln(‘leap year!’)else writeln(‘not a leap year!’);end.输入:1234输出:2.Var f:array[1..100,1..100]of longint;cnt:longint;i,j,n,t,x,y,ans:longint; beginread(n);x:=1;y:=0;for i:=1to n dobeginfor j:=1to n*2-i+1dobegininc(y);inc(cnt);f[x,y]:=cnt;end;for j:=1to n*2-i dobegininc(x);inc(cnt);f[x,y]:=cnt;end;for j:=1to n*2-i dobegindec(y);dec(cnt);f[x,y]:=cnt;end;for j:=1to n*2-i-1dobegindec(x);dec(cnt);f[x,y]:=cnt;end;end;read(t);ans:=0;for i:=1to n*2doans:=ans+f[t,i];writeln(ans);end.输入:32输出:3.Var t:longint;function f(x:longint):longint;beginif x=0then exit(0)else if x mod2=0then exit(2+f(x-1))else exit(1+f(x-1)); end;beginread(t);writeln(f(t));end.输入:2014输出: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;beginmid:=(a+b)div2;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)dobeginif c[i]>=c[j]thenbeginp:=p+1;d[p]:=c[i];e[p]:=q[i];i:=i+1;endelsebeginp:=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)dobeginp:=p+1;d[p]:=c[i];e[p]:=q[i];i:=i+1;end;while(i>mid)and(j<=b)dobeginp:=p+1;d[p]:=c[j];e[p]:=q[j];j:=j+1;end;for i:=a to b dobeginc[i]:=d[i-a+1];q[i]:=e[i-a+1];end;end;beginreadln(n);for i:=1to n dobeginread(c[i]);q[i]:=i;end;merge(1,n);for i:=1to n-1dowrite(ans[i],’,’);writeln(ans[n]);end.输入:543125输出:四.程序填空(前5空,每空2分,后6空,每空3分,共28分)1.问题描述:小明手头有一份红十字会的捐款名单,但是这份名单被外星人恶意破坏过,你的任务是帮助小明去恢复这份名单。
由于外星人低估了你的智商,破坏的规则非常简单,先是将姓名和捐款金额联接到一行,再将这一行内容按顺序切成多行。
输入格式:有很多行,表示输入的字符串。
输出格式:输出共有多行,其中每一个人的信息一行,分别是姓名和金额,中间用空格隔开。
输入样例:zhangsan890liuhua111输出样例:zhangsan890liuhua111vars,t:ansistring;x,len,i:longint;flag:boolean;begins:=‘‘;while not⑴dobeginreadln(t);s:=s+t;end;len:=length(s);t:=‘‘;x:=0;flag:=false;for i:=1to len dobeginif(s[i]<=‘9’)and(s[i]>=‘0’)thenbeginx:=⑵+ord(s[i])–ord(‘0’);if flag=false then⑶;endelsebeginif flag=true thenbegin⑷;x:=0;t:=‘‘;⑸;end;t:=t+s[i];end;end;writeln(t,‘‘,x);end.2.问题描述:有一天小明来到一台神奇的取款机前,取款机可以无限提供某些特定面额的货币,小明想知道他要取出x元共存在几种不同的方案(取出顺序的不一样认为是相同的方案,具体以样例为准)。
输入格式:第一行一个整数m,表示提供的货币种数。
第二行共m个用空格隔开的数字,表示其具体面额。
第三行一个整数x,表示需要取出的钱额。
输出格式:输出一个整数,表示方案数。
输入样例:31254输出样例:3输出说明:取出4元的3种方案分别为(2,2),(1,1,2),(1,1,1,1)。
vardp:array[⑹..10001]of longint;a:array[1..10]of longint;i,j,x,m:longint;beginread(m);for i:=1to m do read(a[i]);⑺;fillchar(dp,sizeof(dp),0);dp[0]:=⑻;for i:=1to m dofor j:=0to x dobeginif⑼then break;if dp[j]=0then⑽;dp[j+a[i]]:=dp[j+a[i]]+⑾;end;writeln(dp[x]);end.。