好文档 - 专业文书写作范文服务资料分享网站

宁波市小学生计算机程序设计竞赛试卷合集含答案(截止2016年)

天下 分享 时间: 加入收藏 我要投稿 点赞

宁波市历届中小学生计算机程序设计竞赛初赛试题

1、program nbxx09_1;

var a,b,s:longint; begin

readln(a); s:=a; b:=0;

while a<>0 do begin b:=b*10+a mod 10; a:=a div 10; end; s:=s+b; writeln(s); end.

输入:123456789 输出:

2、program nbXX09_2;

var u:array[0..3]of integer; a,b,c,x,y,z:integer; begin read(u[0],u[1],u[2],u[3]); a:=u[0]+u[1]+u[2]+u[3]-5; b:=u[0]*(u[1]-u[2]div u[3]+8); c:=u[0]*u[1] div u[2]*u[3]; x:=(a+b+2)*3-u[(c+3)mod 4]; y:=(c*100-13)div a div(u[b mod 3]*5); z:=(a+b+c-x-y)*2; if((x+y)mod 2=0)then z:=(a+b+c+x+y)div 2; writeln(x+y-z); end.

输入:2 5 7 4 输出:

3、program nbXX09_3;

var a,work:array[1..100] of integer; i,j,x,d,max:integer; begin

readln(max);

for i:=1 to max do begin read(a[i]); work[i]:=a[i]; end;

d:=max div 2;

while d>=1 do begin

for i:=d+1 to max do begin x:=work[i]; j:=i-d;

while (j>0) and (x

宁波市历届中小学生计算机程序设计竞赛初赛试题

work[j+d]:=x; end;

d:=d div 2; end;

for i:= max downto 1 do

if a[i]=work[i] then write('1') else write('0'); writeln; end. 输入:8

71 88 149 32 66 90 144 99

4、program nbXX09_4;

输出: ______

var p:array[1..10000]of longint; n,i,x:longint;

function find(x:longint):longint; begin

if p[x]=x then find:=x else begin

p[x]:=find(p[x]); find:=p[x]; end; end;

begin

readln(n,x);

for i:=1 to n do read(p[i]); writeln(find(x));

for i:=1 to n-1 do write(p[i],' '); //两数之间输出一个空格 writeln(p[n]); end.

输入:5 5 3 3 3 2 4

输出: ______ _______________________

四.程序填空(前5空,每空2分,后6空,每空3分,共28分)

1、“高效”排序

以下程序实现输入n个数,使用类似冒泡排序的方法,依次比较相邻的两个数,如果前一个数比后一个大,则交换两者,最终将输入的n个数从小到大排序后输出。程序在运行中发现某遍扫描后,没有数据交换发生,说明已经有序了,此时将退出扫描。请将程序补充完整。

program nbcz09_5; var n,i,j,tmp:longint;

a:array[1..10000]of longint;

flag:boolean; //flag=true表示有交换发生,flag=false表示没有交换

begin

readln(n);

宁波市历届中小学生计算机程序设计竞赛初赛试题

for i:=1 to n do read(a[i]); i:=1;

①__________________;

while flag and (i<=n-1) do begin flag:=false;

for j:=1 to ②_____________ do

if a[j]>a[j+1] then begin //前一个比后一个大 tmp:=a[j];

③_________ __; a[j+1]:=tmp;

④______________; end;

⑤_______________;

end;

for i:=1 to n-1 do write(a[i],' '); writeln(a[n]); end.

2、数独游戏

在n行n列的方格中,每个格子填入一个1~n之间的数字,使得每行中没有重复数字,每列上也没有重复数字。如图1所示是一个3行3列的合法的安排方案。

1 2 3 2 3 1 3 1 2

图1

1 1 图 2

1 2 2 1 图3

1 2 图4

游戏开始可以规定某些格子已经有给定的数字。如图2所示,在2行2列的方格中,规定1行1列和2行2列

的数字均为1,则得到唯一的如图3所示的方案。但如果规定1行1列数字为1,2行2列数字为2,则无法得到任何合法的方案(如图4所示)

下面的程序求9行9列的一个安排方案,程序首先读入若干个已知格子上的数字,找到一个合理的安排方案后输出。如果没有任何合法方案,则输出“No Solution!”(注意引号不用输出)。

程序填充格子的次序依次为:1行1列、1行2列、…1行9列、2行1列、2行2列、…2行9列、…9行1列、9行2列、…9行9列。

请你将空白处的程序补充完整。

program nbxx09_6;

var h:array[1..9,1..9]of boolean;//h[i,j]表示数字j是否出现在第i行 v:array[1..9,1..9]of boolean; //v[i,j]表示数字j是否出现在第i列

change:array[1..9,1..9]of boolean;//change[i,j]表示第i行第j列是否为规定的数字 a:array[1..9,1..9]of integer;//保存方案 i,j,k,n,x:integer;

procedure print;//输出找到的方案 var i,j:integer; begin

for i:=1 to 9 do begin

for j:=1 to 8 do write(a[i,j],' ');

宁波市历届中小学生计算机程序设计竞赛初赛试题

writeln(⑥______________);

end; end;

procedure search(i,j:integer); //从i行j列开始填充 var k:integer; begin

if (⑦__________________) then begin print;

halt; //结束程序

end;

if change[i,j] then begin for k:=1 to 9 do

if (not h[i,k]) and(not v[j,k]) then begin h[i,k]:=true; v[j,k]:=true;

⑧________________;

if j<9 then search(i,j+1)

else search(⑨_________________); h[i,k]:=false; v[j,k]:=false; end end

else begin

if j<9 then search(i,j+1)

else search(⑨_________________);

end; end;

begin

for i:=1 to 9 do

for j:=1 to 9 do begin

h[i,j]:=false; //第i行没有数字j出现 v[i,j]:=false; //第i列没有数字j出现 a[i,j]:=0; //第i行第j列没有数字填入

change[i,j]:=true; //第i行第j列允许填充(没有给定的输入数字) end; readln(n);

for k:=1 to n do begin readln(i,j,x);

a[i,j]:=x; //第i行第j列给定的数字为x h[i,x]:=true; //第i行出现数字x v[j,x]:=true; //第j列出现数字x

change[i,j]:=false; //第i行第j列不允许填充(已有给定的输入数字) end;

search(⑩_______________); writeln(⑴___________); end.

宁波市历届中小学生计算机程序设计竞赛初赛试题

2009年宁波市第24届中小学计算机程序设计竞赛初赛答案

(小学组 Pascal 语言 时间:120分钟)

一、 单项选择题(每题1.5分,共30分)

题号 1 2 3 4 5 6 7 8 9 10 答案 题号 11 12 13 14 C 16 B 17 C 18 B 19 D 20 15 答案 C D A D C B D B C B 二、 问题求解(共2题,每题5分,共10分)

1、 abdfgec 2、①_7___ __ ② 15 (各2.5分) 三、 阅读程序(共4题,每题8分,共32分) 1、 1111111110 2、 263 3、 01000000 4、 3 (4分) 3 3 3 3 3 (4分) 5、

四、 完善程序(前5空,每空2分,后6空每空3分,共28分) ① flag:=true(大小写均可,下同) ② n-i (i后面有标点符号扣1分) ③ a[j]:=a[j+1] ④ flag:=true

⑤ i:=i+1 或inc(i) 或if not flag then i:=i+1 或if not flag then inc(i)

宁波市小学生计算机程序设计竞赛试卷合集含答案(截止2016年)

宁波市历届中小学生计算机程序设计竞赛初赛试题1、programnbxx09_1;vara,b,s:longint;beginreadln(a);s:=a;b:=0;whilea0dobeginb:=b*10+amod10;a:=adiv10;
推荐度:
点击下载文档文档为doc格式
1x76e3sciu17c19373fh7l7tx29ybm00g45
领取福利

微信扫码领取福利

微信扫码分享