长沙市小学生计算机奥林匹克竞赛决赛题+答案Word格式文档下载.docx

上传人:b****7 文档编号:22596937 上传时间:2023-02-04 格式:DOCX 页数:30 大小:44.27KB
下载 相关 举报
长沙市小学生计算机奥林匹克竞赛决赛题+答案Word格式文档下载.docx_第1页
第1页 / 共30页
长沙市小学生计算机奥林匹克竞赛决赛题+答案Word格式文档下载.docx_第2页
第2页 / 共30页
长沙市小学生计算机奥林匹克竞赛决赛题+答案Word格式文档下载.docx_第3页
第3页 / 共30页
长沙市小学生计算机奥林匹克竞赛决赛题+答案Word格式文档下载.docx_第4页
第4页 / 共30页
长沙市小学生计算机奥林匹克竞赛决赛题+答案Word格式文档下载.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

长沙市小学生计算机奥林匹克竞赛决赛题+答案Word格式文档下载.docx

《长沙市小学生计算机奥林匹克竞赛决赛题+答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《长沙市小学生计算机奥林匹克竞赛决赛题+答案Word格式文档下载.docx(30页珍藏版)》请在冰豆网上搜索。

长沙市小学生计算机奥林匹克竞赛决赛题+答案Word格式文档下载.docx

>

xthenbegin

=s-1;

untils>

=x;

writeln(n);

endelsewriteln('

Never'

三、(50分)科学家在热带森林中发现了一种特殊的小动物,取名为“吱吱”。

“吱吱”的生长繁殖过程很有规律,每对小“吱吱”经过X个月就长成一对大“吱吱”,每对大“吱吱”每个月都产下Y对小“吱吱”。

假设开始时有一对小“吱吱”,并且每对“吱吱”都不死,问:

过Z个月后,共有多少对“吱吱”?

(X≥1,Y≥1,1≤Z≤24)

(注:

若当前是1月,则“过”2个月,是表示到3月的时候)

X,Y,Z的值输出:

“吱吱”的总对数

X,Y,Z=2,2,4

  输出:

11

programCS200103;

x,y,z,s,s1,n:

longint;

{s1为大“吱吱”的个数}

s2:

array[1..24]oflongint;

{s2为小“吱吱”的个数,s2[1]代表第一天小“吱吱”的个数,依次类推}

s1:

s2[1]:

=1;

X,Y,Z='

readln(x,y,z);

forn:

=xtoz+1dobegin

s2[n]:

=s1*y;

{计算当天出生的小“吱吱”}

s1:

=s1+s2[n-x+1];

s2[n-x+1]:

{计算当天长大的“吱吱”,s2[n-x+1]为X个月前出生的小“吱吱”个数}

=s+s1;

{将大“吱吱”数计入总数}

=1toz+1dos:

=s+s2[n];

{将小“吱吱”数计入总数}

writeln(s);

四、(60分)如下图所示,键入A,B,C,D,E的值,然后从A出发,顺次经过每个数字分岔路口,选择+、-、*、/ 四种运算符之一进行运算,达到目的地E时,运算结果恰好等于E,请你将所有符合上述条件的道路全部找出来。

A、B、C、D和E的值(其中A、B、C、D都是1~9的数字,E是正整数)

从A能到达E的所有道路代表的运算式(注意:

前两步运算要加括号)

   最后打印出道路的总数。

   如:

A,B,C,D,E=1,2,3,4,10

     输出:

((1+2)+3)+4=10

((1*2)*3)+4=10

TOTAL=2

programCS200104;

varA,B,C,D,E,sum,f1,f2,f3,total:

functions(n1,n2,f:

integer):

begin

casefof

1:

s:

=n1+n2;

2:

=n1-n2;

3:

=n1*n2;

4:

if(n2<

0)and(trunc(n1/n2)=n1divn2)thens:

=n1divn2elses:

=-1000;

procedurewf(x:

integer);

casexof

write('

+'

-'

*'

/'

total:

A,B,C,D,E='

readln(a,b,c,d,e);

forf1:

=1to4do

forf2:

forf3:

ife=s(s(s(a,b,f1),c,f2),d,f3)thenbegin

=total+1;

('

'

a);

wf(f1);

write(b,'

)'

wf(f2);

write(c,'

wf(f3);

writeln(d,'

='

e)

writeln('

TOTAL='

total);

readln;

2002年长沙市计算机奥林匹克竞赛决赛试题

一、填信息(20分)

小明对信息学很感兴趣,他报名参加今年的小学生电脑奥赛,报名时老师要求他填写自己的相关信息。

现在,请你将自己的相关信息打印出来。

显示格式要求如下:

说明:

X1为你的决赛证编号

 X2为你的姓名(用拼音)

   X3为你的性别(男生用boy,女生用girl)

   X4为你所在的学校名称(用拼音)

MynumberisX1

MynameisX2

MysexisX3

MyschoolisX4

programCS200201;

writeln('

Mynumberis200201'

MynameisXiaoMing'

Mysexisboy'

MyschoolisTongPuJie'

二、找字符(60分)

有一天,小明编了一个程序,能很快找出一个字符串中出现次数最多的字符,你能做到吗?

一个字符串(长度不超过50)

按字符在字符串中出现的先后顺序,显示出现次数最多的字符

样例

  输入:

ACABBCCDDB

CB

programCS200202;

a,b:

c:

char;

d:

array[1..50]ofinteger;

{记录每一字符出现的次数,同时数组的序号也就代表了字符出现的先后次序}

i,j,max:

readln(a);

b:

=a;

{将字符串a赋值给b,起到保护输入的字符串a的作用。

这一操作不是必须的,也可以直接对字符串a进行操作。

但因后面的程序会造成对所操作的字符串内容的破坏,养成对输入内容进行保护的习惯有益的。

}

fori:

=1tolength(a)dobegin

=b[i];

d[i]:

ifc<

.'

Then

=itolength(a)dobegin

ifc=b[j]thenbegin

=d[i]+1;

b[j]:

;

{每找到一个相同的字符就把此字符赋值为’.’,这样就不会重复寻找相同的字符,在d数组中每个字符出现次数的记录将是唯一的。

end;

max:

=d[1];

=2tolength(a)doifd[i]>

maxthenmax:

=d[i];

{寻找字符出现的最大次数}

=1tolength(a)doifd[i]=maxthenwrite(a[i]);

{按次序输出出现资料最多的字符}

writeln;

readln;

三、拼三角(60分)

有一次,老师给小明N根小木棒,要他从中选出K根,使这K根当中的任意三根都能拼成一个三角形。

老师告诉他,构成一个三角形的条件是:

任意两边之和大于第三边,任意两边之差小于第三边。

小明思考后,发现将这些小木棒按长短顺序排列后,很容易解决问题。

请你用表达式RANDOM(900)随机产生N个正整数(表示小木棒的长度),帮小明求出K的最大值。

N(3≤N≤500)

K的最大值

6

 排序后的6个随机数为:

19,26,161,220,348,529

3

programCS200203;

{基本思路:

如果三角形中二条较小边的和大于最大边,则此三条边可以构成三角形。

对于有序排列的数,只要确定了能构成三角形的最小数和最大数,中间的每一个数都符合条件}

n,k,i,j,t,l:

array[1..500]ofinteger;

ok:

boolean;

readln(n);

a[i]:

=random(900)+1;

{生成随机数并赋值给数组a}

=1tondowrite(a[i]:

5);

{显示生成的随机数,调试用}

=1ton-1do

=i+1tondo

ifa[i]>

a[j]thenbegin

t:

=a[i];

a[i]:

=a[j];

a[j]:

=t;

{对生成的随机数从小到大进行排序}

{显示排序结果,调试用}

=1ton-2dobegin

=false;

l:

=n;

ifa[i]+a[i+1]>

a[l]thenok:

=trueelsel:

=l-1;

untilokor(l=i+1);

{对于每根小棒寻找能够构成三角形的最长小棒在数组a中的位置l}

ifokthenb[i]:

=l-i+1;

{得到能与当前小棒组成三角形的小棒数量}

=1tondowrite(b[i]:

k:

=b[1];

=2tondo

ifb[j]>

kthenk:

=b[j];

K='

k);

四、数的统计(60分)

一个数“含有0”是指这个数至少有某一位数字为0。

小明对那些“含有0”的自然数很感兴趣,想挑出来进行研究。

那么,1~N当中“含有0”的自然数有多少个?

小明想在1秒钟内得到答案,你能帮他做到吗?

N(1≤N≤100000000)

105

15

programCS200204;

varn,i,l:

str(i,s);

ifpos('

0'

s)<

0thenl:

=l+1;

writeln(l);

2004年长沙市计算机奥林匹克竞赛决赛试题

一、求和(30分)

由键盘输入正整数N(N≤100),求1到N之间所有的5的倍数之和S。

例:

N=10

S=15 (因为1~10之间只有5和10是5的倍数)

二、文本图形(50)

由键盘输入正整数N(N≤21)和一个字符串A(A由N个任意的大写字母组成),要求输出一个左右对称的N行的文本图形。

N=4

     A=ABCD

      

programCS200402;

n,i,j,k:

a:

N='

readln(n);

A='

41-i);

=1toidowrite(a[j]);

fork:

=i-1downto1dowrite(a[k]);

writeln;

三、找数(60分)

由键盘输入正整数N(N≤500)和K(K≤9),请找一个正整数M,使N×

M的值仅由0~K组成,而且0~K的每个数字至少出现一次。

编程序在1~30000范围内找出符合条件的最小的M值,如果找不到,则输出“Nofind!

”。

①输入:

N,K=65,3

   输出:

M=48      (因为65×

48=3120)

  ②输入:

N,K=125,8

No find!

programCS200403;

varn,k,m,i,j,s:

label1;

N,K='

readln(n,k);

form:

=1to30000dobegin

=n*m;

=true;

str(s,a);

{将s转换为字符串a}

=0tokdobegin

str(i,b);

ifpos(b,a)=0thent:

{如果0~k之间有一个数不包含在a当中,则令逻辑指针为假}

=k+1to9dobegin

str(j,b);

ifpos(b,a)<

0thent:

{如果k~9之间有一个数包含在a当中,则令逻辑指针为假}

ift=truethengoto1;

{找到符合条件的m值,跳转输出部分}

1:

ift=truethenwriteln('

M='

m)elsewriteln('

Nofind!

四、求倍数及“0”的个数(60分)

由键盘输入正整数N(N≤50),已知数列A1,A2,A3,……,An分别为2004,20042004,200420042004,……,20042004……2004。

问:

A1+A2+A3+……+An的精确值S有多少位数?

S当中有多少个“0”?

(设:

S的位数为K,S中“0”的个数为Z)

N=2

K=8  Z=4  (因为S=20044008)

 

programCS200404;

vara,s:

array[1..200]ofinteger;

n,k,z,i,j,m,l:

=n*4;

{得到S的位数。

=1to4*idobegin

=jmod4;

caselof

0:

=2;

=4;

2,3:

{生成An。

为方便运算,生成的An为4002……40024002的形式,第一位为个数}

=1tokdobegin

s[m]:

=s[m]+a[m];

ifs[m]>

=10thenbegin

=s[m]mod10;

a[m+1]:

=a[m+1]+1;

{逢10进1}

{将An累加进s}

z:

=1to4*ndoifs[i]=0thenz:

=z+1;

{统计0的个数}

k,'

Z='

5,z);

2005年长沙市计算机奥林匹克竞赛决赛试题

一、拆分整数:

(100分)

输入一个正整数N,如果N是偶数,则拆分N的各个数字相加求和;

如果N是奇数,则拆分N的各个数字相乘求积。

输入输出样例:

N=126 输出:

H=9

N=123 输出:

J=6

programCS200501;

n,h,j,l,i,t:

array[1..10]ofinteger;

i:

ift>

10then

=tmod10;

=tdiv10;

i:

=i+1;

untilt<

10;

{拆分N的各个数字,存放在数组a中}

str(n,s);

{将数n转换为字符串s}

{取s长度,即得到数n的位数}

h:

j:

ifnmod2=0thenbegin

=1toldoh:

=h+a[i];

H='

h);

endelsebegin

=1toldoj:

=j*a[i];

J='

j);

{根据N的奇偶求和或求积}

二、排最大数:

输入N个正整数,请你将它们连接在一起,排成一个最大的数。

例如:

N=4时,如果四个正整数是7、13、18、246,则连接成的最大数为72461813。

N(1≤N≤10)     输出:

连接成的最大数

   N个正整数(以空格相隔)

N=4         输出:

72461813

     7 13 18 246

programCS200502;

array[1..10]ofstring;

read(a[i]);

str(a[i],s[i]);

{输入数据并转换为字符串}

=itondo

ifs[i]<

s[j]thenbegin

=s[i];

s[i]:

=s[j];

s[j]:

{对字符串进行排序}

=1tondowrite(s[i]);

{输出结果}

三、扫雷游戏:

有一种简单的扫雷游戏:

在N行2列的方格棋盘上,左列某些方格内埋有地雷,而右列每个方格中都有一个数字(0~3),第I格的数字表示:

左列第I-1、I、I+1格(即:

上、中、下三格)中埋雷的总数。

如下所示:

左图是初始状态,右图是扫雷完成状态(插小旗的方格内有雷)。

你的任务是:

根据右列的数字分析出左列格子中的地雷(0表示无雷,1表示有雷),并且统计出左列格子中地雷的总数。

N(2≤N≤40)

   N个数字(以空格相隔),表示右列格子中的数字。

N个0、1数字(占一行),表示左列每格中有无地雷。

   地雷总数(另起一行)

输入输出样例(如上图示):

N=7          输出:

0111011

     1232222         L=5

programCS200503;

varn,l,i:

array[1..40]ofinteger;

label1,2;

=1tondoread(b[i]);

ifn>

2thenbegin

a[3]:

=b[2]-b[1];

a[1]:

a[2]:

=b[1]-a[1];

=3tondobegin

=b[i-1]-a[i-1]-a[i-2];

if(a[i]<

0)and(a[i]<

1)thengoto1;

ifa[n]<

b[n]-a[n-1]thengoto1;

goto2;

write(a[i]);

ifa[i]=1thenl:

L='

l);

ifn=2then

caseb[1]of

writeln(0,0);

0);

writeln(0,1);

writeln(1,0);

1);

writeln(1,1);

2);

2006年长沙市计算机奥林匹克竞赛决赛试题

一、评选(100分)

某班根据语文、数学、英语和计算机这四科成绩,评选学习积极分子。

评选规则如下:

Y、S、E、J分别代表语文、数学、英语、计算机)

1、四科平均成绩高于90分,可评为A类学习积极分子。

2、Y、S、E三科平均成绩高于80分,而且J不低于90分,可评为B类学习积极分子。

3、四科中最高分为100分,最低分不低于60分,可评为C类学习积极分子。

4、一个学生只能被评为符合条件的最高一类学习积极分子(A类最高、C类最低)。

现在输入某个学生的四科成绩,请判断该学生能被评为哪一类学习积极分子。

四个整数Y S E J

#A或#B或#C(分别

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1