青岛市程序设计竞赛试题.docx

上传人:b****8 文档编号:28714555 上传时间:2023-07-19 格式:DOCX 页数:38 大小:198.96KB
下载 相关 举报
青岛市程序设计竞赛试题.docx_第1页
第1页 / 共38页
青岛市程序设计竞赛试题.docx_第2页
第2页 / 共38页
青岛市程序设计竞赛试题.docx_第3页
第3页 / 共38页
青岛市程序设计竞赛试题.docx_第4页
第4页 / 共38页
青岛市程序设计竞赛试题.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

青岛市程序设计竞赛试题.docx

《青岛市程序设计竞赛试题.docx》由会员分享,可在线阅读,更多相关《青岛市程序设计竞赛试题.docx(38页珍藏版)》请在冰豆网上搜索。

青岛市程序设计竞赛试题.docx

青岛市程序设计竞赛试题

2006年青岛市程序设计竞赛试题(小学组)

说明:

1、必须以题目中规定的文件名进行保存,并用FTP上传到指定文件夹中。

FTP上传使用说明在试题最后。

请选手每做完一道题及时上传一次,以确保因机器故障引起的文件丢失。

2、比赛时间为:

60分钟,试题100分。

3.使用竞赛规定的文件格式输入、输出。

第1题数字分离(程序文件名A1.PAS,20分)

从键盘输入一个三位数n(100≤n≤999)判断其个位数字、十位数字、百位数字之和是否等于15,若等于15,则输出“1”,否则输出“0”。

输入(a1.in):

一行,三位数n(100≤n≤999)

输出(a1.out):

一行,若等于15则输出1,否则输出0

样例:

输入:

690

输出:

1

输入:

710

输出:

0

第2题编程实现(程序文件名A2.PAS,20分)

找出1至n(10≤n≤1000)之间不能被2,3,5,7除尽的整数的个数。

输入(a2.in):

一行,n(10≤n≤1000)

输出(a2.out):

一个正整数,满足条件的个数

样例:

输入:

13

输出:

3

第3题求一个十进制数的三进制表示(程序文件名A3.PAS,20分)

从键盘读入一个十进制整数n(n≤20),要求编程计算求出n的三进制表示。

注:

将十进制数转换为三进制的方法为:

除三取余,余数倒取

除数被除数余数

转换示例352

11

0

输入(a3.in):

一行,n(n≤20)

输出(a3.out):

一行,n的三进制表示

 

样例:

输入:

5

输出:

12

第4题级数求和(程序文件名A4.PAS,20分)

已知sn=1+1/2+1/3+……+1/n,显然对于任意一个正整数k,当n足够大的时候,sn大于k,现在给出一个正整数k(1≤k≤15),要求计算出一个最小的n使sn大于k。

输入(a4.in):

一行,k(1≤k≤15)

输出(a4.out):

一行,满足要求的n

样例:

输入:

2

输出:

4

第5题产生数(程序文件名A5.PAS,20分)

给出一个数n(n≤1030)和k个变换规则(k≤15)

规则:

1位数可变换成另一个1位数;规则的右部不能为零。

例如:

n=234,有规则(k=2);

2→5,3→6

上面的整数234经变换后可能产生出的整数(包括原数);

234

534

264

564

共4种不同的产生数

问题:

给出一个整数n和k个规则。

求出:

经过任意次的变换(0次或多次),能产生出多少个不同的整数。

仅要求输出个数。

输入(a5.in):

第一行,两个数n、k,中间用空格隔开

第二行存放两个数,中间用空格隔开,表示一个变换规则,在随后的k-1行中,每行都有2个数,中间用空格隔开,表示k条变换规则。

输出(a5.out):

一行,满足要求的数的个数

样例:

输入:

2342

25

36

输出:

4

ftp上传使用说明

第一步:

打开IE浏览器,在地址栏内输入ftp:

//10.0.3.4(小学、初中组)或ftp:

//10.0.2.101(高中组),出现登录窗口。

第二步:

用户名为参赛选手本人的考试号,无须输入密码。

第三步:

登录后,将本人编写的程序拖放(复制粘贴)到浏览器窗口。

拖放过程中会出现传送进度条,进度条结束即上传完毕(一旦发现问题请及时咨询监考老师)。

 

2011年青岛市程序设计试题

(比赛时间60分钟,试题满分100分)

   说明:

1、必须以题目中规定的文件名进行保存,并用ftp上传到指定文件夹中。

ftp上传使用说明在试题最后,请选手每做完一道题及时上传一次,以确保因机器故障引起的文件丢失。

                   2.使用竞赛规定的文件格式输入、输出。

 

    

(1)对于使用pascal语言的选手,请参照以下格式使用文件输入输出:

Begin

Assign(input,’输入文件名’);assign(output,‘输出文件名’);

Reset(input);rrewrite(output);

……

Close(input);close(output);

End.

   

(2)对于c或c++选手,如果尚未掌握文件输入输出,请参考以下我们提供的一种方法进行文件输入输出。

在主函数即main()的开始部分加入以下代码:

Freopen(“输入文件名”,”r”,stdin);

Freopen(“输出文件名”,“w”,stdout);

程序结束时无须像pascal选手一样,关闭文件,系统将自动关闭读写的文件。

对于c选手,请调用头文件 stdio.h

对于c++选手,请调用头文件 iostream

 

 

 

第1题 水仙花数(程序文件名a1.pas,20分)

有一些100-999之间的整数具有这样的性质,该数的各位数字的立方之和等于该数本身,这种数人们把它称为水仙花数。

例如153是个水仙花数,因为13+53+33=153。

编程输入一三位正整数N(100<=n<=999),判断是否是水仙花数,如是输出整数1,不是输出整数0。

输入(A1.in):

一行,一个整数n(100<=n<=999)

输出(a1.out):

一行,一个整数。

若N是水仙花数则输出1,否则输出0。

样例1:

输入153

输出1

样例2:

输入:

200

输出:

0

参考答案:

programa1;

vara,b,c,n:

integer;

    input,output:

text;

begin

  assign(input,'a1.in');

  assign(otuput,'a1.out');

  reset(input);

  rewrite(output);

  read(input,n);

  a:

=ndiv100;

  b:

=nmod100div10;

  c:

=nmod10;

  ifa*a*a+b*b*b+c*c*c=nthenwrite(output,1)

                         elsewrite(output,0);

  close(input);

  close(output);

end.

第2题:

走阶梯(程序文件名a2.pas,20分)

有一个长阶梯,如果每步跨2阶最后剩1阶,如果每步跨3阶最后剩2阶,如果每步跨4阶最后剩3阶,如果每步跨5阶最后剩4阶,如果每步跨6阶最后剩5阶,只有当每步跨7阶时恰好走完,问这个阶梯有多少阶?

输出(a2.out):

一行,要求统计的结果。

参考答案:

programa2;

vari:

integer;

    output:

text;

begin

  assign(output,'a2.out');

  rewrite(output);

  fori:

=1to1000do

  if(imod2=1)and(imod3=2)and(imod4=3)and(imod5=4)and(imod6=5)and(imod7=0)thenwrite(output,i);

  close(output);

end.

 

第3题:

摘红苹果(程序文件名a3.pas,20分)

小明爷爷家有棵苹果树,树上高低不一的长了n个红苹果。

一天,m个小朋友到爷爷家做客,爷爷说:

你们每人最多可以摘两个红苹果,而且只许伸手摘,不允许借助其它工具,摘下的苹果大家分享。

由于小朋友的身高参差不齐,怎样才能使他们摘的苹果总数最多呢?

请你计算小朋友们最多能摘到多少个苹果?

输入(a3.in):

第1行,两个用空格隔开的整数n和m(n<=100,m<=20);

第2行,n个用空格隔开的整数,分别表示每个苹果的高度;

第3行,m个用空格隔开的整数,分别表示每个小朋友伸手能达到的高度(到达苹果即可摘到)。

输出a3.out:

一行,一个整数,小朋友们最多能摘到的苹果数。

样例:

输入 10  4

1101001509010013516088130140

12010011080

输出:

5

参考答案:

programa3;

varm,n,i,j,c,d:

integer;

    a,b:

array[1..1000]ofinteger;

    input,output:

text;

begin

  assign(input,'a3.in');

  assign(output,'a3.out');

  reset(input);

  rewrite(output);

  read(input,n,m);

  fori:

=1tondo

  read(input,a[i]);

  fori:

=1tomdo

  read(input,b[i]);

  fori:

=1tom-1do

  forj:

=i+1tomdo

  ifb[i]>b[j]thenbegin

                      c:

=b[i];

                      b[i]:

=b[j];

                      b[j]:

=c;

                    end;

  fori:

=1tomdo

  begin

    c:

=0;

    forj:

=1tondo

    if(b[i]>=a[j])and(c<2)thenbegin

                                     c:

=c+1;

                                     a[j]:

=10000;

                                     d:

=d+1;

                                   end;

  end;

  write(output,d);

  close(input);

  close(output);

end.

 

 

第4题 找字符(程序文件名a4.pas,20分)

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

输入a4.in:

一个由26个大写字母组成的字符串(长度不超过50)

输出a4.out:

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

样例:

输入:

ACABBCCDDBA

输出:

CB

参考答案:

programa4;

  var

  input,output:

text;

  a:

array['A'..'Z']  ofinteger;

 t,i:

integer;

 k,j,l:

char;

b,st:

string;

  begin

  assign(input,'a4.in');

  assign(output,'a4.out');

  reset(input);

  rewrite(output);

  writeln(output);

  readln(input,st);

  fori:

=1tolength(st)do

    forj:

='A'to'Z'do

    ifst[i]=jthen  a[j]:

=a[j]+1;

    t:

=a['A'];

    forj:

='A'  to'Z'do

      ift

=a[j];

    fori:

=1tolength(st)do

     ifpos(st[i],b)=0thenb:

=b+st[i];

      fori:

=1tolength(b)do

    forj:

='A'to'Z'do

if(B[i]=j)and(A[j]=t)  thenbeginwrite(output,j);end;

close(input);

close(output);

    end.

 

第5题  酗酒的狱警(程序文件名a5.pas,20分)

某监狱里有个很长的走廊,走廊中一个接一个有n个房间。

每个房间中锁着一个犯人。

一天夜里,狱警决定玩一个无聊游戏。

第1轮中,他喝了一口威士忌,然后打开每个房间。

第 2轮,他喝了一口威士忌,然后按照2的倍数遍历每个房间。

第3轮,他又喝了一口威士忌,遍历所有3倍数的房间,依此类推。

在遍历中,如果房间是锁着的,则打开;否则锁上。

他这样重复n轮,最终醉酒。

这时有些囚犯看到自己房间的锁被打开了,他们立即逃跑。

对于有n个房间的走廊,最终会有多少囚犯逃脱?

输入a5.in:

一行,一个整数,走廊中房间的个数n。

输出a5.out:

一行,一个整数,最终逃走的囚犯人数。

样例:

输入:

5输出:

2

参考答案:

program  a5;

  var

  a:

array[1..100]ofinteger;

  i,j,s,n:

integer;

  begin

assign(input,'a5.in');

  assign(output,'a5.out');

  reset(input);

  rewrite(output);

 

  readln(input,n);

  fori:

=1tondo

  a[i]:

=0;

  fori:

=1tondo

    forj:

=1to  ndo

    ifjmodi=0thena[j]:

=1-a[j];

  s:

=0;

  fori:

=1tondo

  ifa[i]<>0thens:

=s+1;

  writeln(output,'zouchu',s,'ren');

close(input);

close(output);

  end.

 

   ftp上传使用说明:

   第一步:

打开ie浏览器,在地址栏内ftp网址,考场1和考场2:

ftp:

//192.137.1.201,出现登录窗口。

   第二步:

点击鼠标右键,选择登陆输入准考证上的用户名、密码进行登陆。

   第三步:

登陆后,将本人编写的程序拖放(复制粘贴)到浏览器窗口,拖放过程中会出现传送进度条,进度条结束即上传完毕。

(一旦发现问题及时咨询监考老师)。

第四步:

确认自己上传成功后,安静离开考场。

 

2012年青岛市程序设计竞赛试题(小学组)

说明:

1、必须以题目中规定的文件名进行保存,并用FTP上传到指定文件夹中,FTP上传在试题最后。

请选手没做完一道题及时上传一次,以确保因机器故障引起的文件丢失。

     2、比赛时间为:

60分钟,试题100分。

     3、使用竞赛规定的文件格式输入、输出。

第一题 火柴盒(程序文件名a1.pas,25分)

小林今年刚上一年级,最近开始学数学的加法。

老师给他出了这样一道题:

火柴盒长为L,宽为W(1<=L,W<=100)。

高度有一层楼这么高,火柴只能按长或宽的方式放进去,给小林了N(1<=N<=50)根火柴,知道一根火柴的长度,问有多少跟火柴可以放进该火柴盒。

你能用计算器帮小林解决这个问题吗?

输入(a1.in):

第一行,三整数N,L和W用空格隔开;

接下来N行每行输入一个1到1000范围内的一个整数,表示火柴的长度。

输出(a1.out):

一行整数,能够装进火柴盒的火柴数量。

样例1:

输入:

534

      8

      4

      2

      1

      9

输出:

3

 

 

第二题 数据统计(程序文件名a2.pas,25分)

小林最近想研究末尾有0的整数的性质。

小林给出任一整数N,请你帮小林算出这个整数末尾共有多少个连续的0?

输入(a2.in):

一行,一个整数N(1<=N<=1000000000)。

输出(a2.out):

一行统计出N的末尾连续0 的个数。

样例1:

输入:

50100

输出:

2

样例2:

输入:

102304

输出:

0

第3题 购文具(程序文件名a3.pas,25分)

“六一”儿童节“文具套装”优惠销售,三种购买方式如下:

1、现购:

10元/套,超过2套以为的,9元/套,超过10套以外的,则7.5元/套;

2、网购:

9元/套,超过10套,全部按网购每套的价钱打8折;超过5套,

则全部按网购每套的价钱六折;

3、团购:

10元起团购,6元/套,达到或超过50套,则5元/套,达到或超过100套,则4元/套。

小林想用其中一种方式购n套文具,请你帮他计算应付多少元钱?

输入(a3.in):

一行,两个用空格隔开的整数,分别表示购买方式号(1,2,3)和套数n(n<=200)

输出(a3.out):

一行,一个整数,应付饭钱(小数部分四舍五入)。

样例:

输入:

111

输出:

100

 

 

第四题 分发糖果(程序文件名a4.pas,25分)

一些学生围绕教师坐着,每人手里都有偶数个糖果。

现在老师吹一声哨子,所有学生同时将自己的一半糖果给他右面的同学,如果某个同学的手里的糖果个数是奇数,则老师给他一个糖果。

重复这个过程直到多有同学手中的糖果数一致,并给出结束后没人手里的糖果数。

输入(a4.in):

第一行,一个整数n,表示学生人数(n<=100);

接下来的n行,每行一个偶数(不超过100),表示每个学生手里的糖果(按逆时针次序)。

输出(a4.out):

一行,两个空格隔开的整数,即老师吹哨子的次数和学生最后平均的糖果数。

样例:

输入:

6

      36

      2

      2

      2

      2

      2

输出:

1514

         ftp上传使用说明

第一步:

打开IE浏览器,在地址栏内输入ftp地址(由监考老师),出现登录窗口。

第二步:

用户名为参赛选手本人的考试号,输入密码。

第三步:

登录后,将本人编写的程序拖放(复制粘贴)到浏览器窗口。

拖放过程中会出现传送进度条,进度条结束即上传完毕(一旦发现问题请及时资讯监考老师)。

参考答案:

1. program  a1;

var

n,l,w:

integer;

x,count:

integer;

i:

integer;

f1,f2:

text;

begin

assign(f1,'a1.in');

assign(f2,'a1.out');

reset(f1);

rewrite(f2);

  readln(f1,n,l,w);

  ifl

=w;

  fori:

=1tondo

  begin

readln(f1,x);

ifx<=lthencount:

=count+1;

  end;

  writeln(f2,count);

  close(f1);

  close(f2);

end.

2. vara,b,c,d:

longint;

f1,f2:

text;

begin

assign(f1,'a2.in');

assign(f2,'a2.out');

reset(f1);

rewrite(f2);

read(f1,a);

repeat

ifamod10=0thenbegin

a:

=adiv10;

d:

=d+1;end;

until(amod10<>0);

writeln(f2,d);

close(f1);

close(f2);

end.

3. programdd;

vara,b:

longint;

        c:

real;

f1,f2:

text;

begin

assign(f1,'a3.in');

assign(f2,'a3.out');

reset(f1);

rewrite(f2);

 

readln(f1,a,b);

ifa=1then

      ifb<=2thenc:

=b*10

      elseifb<=10thenc:

=20+9*(b-2)

      elsec:

=20+72+7.5*(b-10);

ifa=2then

      ifb<=10thenc:

=b*9

      elseifb<=50thenc:

=b*9*0.8

      elsec:

=b*9*0.6;        

ifa=3then

      ifb<50thenc:

=6*b

      elseifb<100thenc:

=5*b

      elsec:

=4*b;

writeln(f2,round(c));

close(f1);

close(f2);

end.

4. programa4;

var

a:

array[1..100]oflongint;

n,x:

integer;

i:

integer;

cnt:

integer;

b:

Boolean;

f1,f2:

text;

begin

assign(f1,'a4.in');

assign(f2,'a4.out');

reset(f1);

rewrite(f2);

readln(f1,n);

fori:

=1tondoreadln(f1,a[i]);

b:

=false;

whilenotbdo

begin

cnt:

=cnt+1;

ifa[n]mod2=0then

begin

a[n]:

=a[n]div2;

x:

=a[n];

end

else

begin

a[n]:

=a[n]+1;

a[n]:

=a[n]div2;

x:

=a[n];

end;

fori:

=n-1downto1do

ifa[i]mod2=0  then

begin

a[i]:

=a[i]div2;

a[i+1]:

=a[i+1]+a[i];endelsebegin

a[i]:

=a[i]+1;a[i]:

=a[i]div2;a[i+1]:

=a[i+1]+a[i];end;

a[1]:

=a[1]+x;b:

=true;

fori:

=1ton-1do

ifa[i]<>a[i+1]thenb:

=false;

end;

writeln(f2,cnt-1,'',a[1]);

close(f1);

close(f2);

end.

 

2012年青岛市程序设计竞赛试题(小学组)

说明:

1、必须以题目中规定的文件名进行保存,并用FTP上传到指定文件夹中,FTP上传在试题最后。

请选手没做完一道题及时上传一次,以确保因机器故障引起的文件丢失。

     2、比赛时间为:

60分钟,试题100分。

     3、使用竞赛规定的文件格式输入、输出。

第一题 火柴盒(程序文件名a1.pas,25分)

小林今年刚上一年级,最近开始学数学的加法。

老师给他出了这样一道题:

火柴盒长为L,宽为W(1<=L,W<=100)。

高度有一层楼这么高,火柴只能按长或宽的方式放进去,给小林了N(1<=N<=50)根火柴,知道一根火柴的长度,问有多少跟火柴可以放进该火柴盒。

你能用计算器帮小林解决这个问题吗?

输入(a1.in):

第一行,三整数N,L和W用空格隔开;

接下来N行每行输入一个1到1000

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

当前位置:首页 > 考试认证 > IT认证

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

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