第一范文网 - 专业文章范例文档资料分享平台

信息学奥林匹克竞赛资料(初赛资料)

来源:用户分享 时间:2025/7/4 8:28:34 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

WHILE k>0 DO BEGIN

Writeln (k); k:=k-1 END; 其中

(1)WHIlE 和DO是PASCAL保留关键字,是WHILE循环语句的组成部分。 (2)保留关键字DO后面的“语法”只能是一条语句,称为“循环体”;如果循环体中需要包含多个语句则应该如上例所示,采用一条复合语句。 2.WHILE循环的执行功能 当执行到WHILE语句时 (1)求出布尔表达式的值

(2)若布尔表达式的值为真,则执行循环体内的语句;若为“假”,执行步骤4 (3)重复步骤1和2

(4)循环结束,执行循环后面的语句。 WHILE循环练习题:

1、输入一个整数,计算它各位上数字的和。(注意:是任意位的整数)

2、输入一整数A,判断它是否质数。(提示:若从2到A的平方根的范围内,没有一个数能整除A,则A是质数。)

3、求两个数的最小公倍数和最大公约数。(提示:公约数一定小于等于两数中的小数,且能整除两数中的大数。公倍数一定大于等于两数中的大数,且是大数的倍数,又能给两数中的小数整除。)

4、编写一个译码程序,把一个英语句子译成数字代码。译码规则是以数字1代替字母A,数字2代替字母B,??,26代替字母Z,如遇空格则打印一个星号‘*’,英文句子以‘.‘结束。 5、“百钱买百鸡”是我国古代的著名数学题。题目这样描述:3文钱可以买1只公鸡,2文钱可以买一只母鸡,1文钱可以买3只小鸡。用100文钱买100只鸡,那么各有公鸡、母鸡、小鸡多少只?与之相似,有\鸡兔同笼\问题。

3、 REPEAT-UNTIL类型的循环

1.REPEAT-UNTIL类型的循环的执行形式 REPEAT 语句1 语句2 ?? 语句n

UNTIL 布尔表达式

例如:以下循环求n=1+2+3+??+100 n:=0;t:=i; REPEAT

n:=n+t; t:=t+1;

- 29 -

UNTIL t>100; 其中

(1)REPEAT和UNTIL是PASCAL保留关键字。

(2)在REPEAT和UNTIL之间的语句构成循环。在它们之间可以有任意多个语句,这一点和FOR,WHILE循环不同,FOR,WHILE循环体在语法上只允许一条语句。 2.REPEAT-UNTIL循环的执行功能

(1)遇到REPEAT语句后,即进入循环体,顺序执行循环体内的语句。

(2)遇到UNTIL语句后,求布尔表达式的值。若值为假,则返回步骤1;若为“真”,执行步骤3

(3)循环结束,执行UNTIL后面的下一条语句。 REPEAT循环练习题:

1、输入一个正整数N,把它分解成质因子相乘的形式。 如:36=1 X 2 X 2 X 3 X 3; 19=1 X 19

(提示:设因子为I,从2开始到N,让N重复被I除,如果能整除,则用商取代N,I为一个因子;如果不能整除,再将I增大,继续以上操作,直到I等于N。)

八.一维数组

〖语法分析〗

在编程时用到一批类型相同的数据,为了处理上的方便,通常以数组的形式来定义这一批数据。

1、 数组的定义格式: var

a:array [1..10] of integer;

其中:a是这一批数据的名称,称为数组名;array、of是定义数组的保留字;中括号中的数字是数据编号的下限和上限,同时也说明了数据的个数(上限-下限);最后一个是数据的基类型,如integer,char,real,boolean。

2、 数组元素的输入:

数组名代表的并不是一个变量,而是一批变量,因而,不能直接整个数组读入,而是要逐个数组元素读入,通常用循环结构来完成这一功能。下面是几个常用输入数组元素的例子: for i:=1 to 10 do read(a[i]);

{————从键盘读入数组元素的值;最常用的方法} for i:=1 to 10 do a[i]:=i;

{————数组元素a[1]到a[10]的值分别为1到10;数据赋初值} for i:=1 to 10 do a[i]:=0;

{————数组元素清0;最常用的数据初始化的方法} for i:=1 to 10 do a[i]:=random(100);

{————随机产生10个100以内的数,赋给各数组元素}

3、 数组元素的输出: 和数组元素的输入相同,数组元素的输出也不能由一个write语句直接完成。同样要逐个数组元素输出。通常也用循环结构来完成这一功能:

- 30 -

for i:=1 to 10 do write(a[i],' ');{————数组元素之间用空格分隔} writeln;

4、 数组的应用:

例1:从键盘输入10个数,将这10个数逆序输入,并求这10个数的和,输出这个和。 program p1; var

a:array [1..10] of integer; i,s:integer; begin

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

for i:=10 downto 1 do write(a[i],' '); writeln; s:=0;

for i:=1 to 10 do s:=s+a[i]; writeln('s=',s); end.

例2:用筛法求100以内的素数(质数)。

分析:素数是除了1和它本身以外没有其它约数的数。用筛法求素数的方法是:用质数筛去合数:从第一个素数2开始,把它的倍数去掉;这样2以后的第一个非0数就一定也是素数,把它的倍数也删了??重复这个删数过程,直到在所找到的素数后再也找不到一个非0数。把所有非0数输出。 program p2; var

a:array [1..100] of integer; i,j,k:integer; begin

for i:=1 to 100 do a[i]:=i; a[1]:=0;i:=2; while i<=100 do begin

k:=i;

while k<=100 do begin

k:=k+i; a[k]:=0;

end; {————上面将所有a[i]的倍数清0} i:=i+1;

while a[i]=0 do i:=i+1; {————查找接下来的第一个非0数} end;

for i:=1 to 100 do if a[i]<>0 then write(a[i],' ');

- 31 -

end. 练习题:

随机产生20个100以内的数,输出;按从小到大的顺序排序,输出。

九.二维数组

〖语法分析〗

一维数组在编程中多用于描述线性的关系:如一组数;一组成绩;一组解答等。数组元素只有一个下标,表明该元素在数组中的位置。二维数组在编程中多数用于描述二维的关系:如地图、棋盘、城市街道、迷宫等等。而二维数组元素有两个下标:第一个下标表示该元素在第几行,第二个下标表示在第几列。二维数组的定义格式如下: var

a:array[1..10,1..5] of integer;

其中:a是数组名,由程序员自定;array和of是定义数组的保留字;(这两点和一维数组定义的格式一样)中括号中的两个范围表示二维数组共有多少行、多少列(第一个范围表示行数,第二个范围表示列数);最后一个表示数组元素的类型,规定和一维数组一样。如上例,定义了一个二维数组a,共有10行5列。 使用二维数组要注意:

1、数组元素的指称:数组名[行号,列号]。如第三行第四个元素:a[3,4]。

对某一行进行处理。如累加第4行的数据。则固定行号为4。如:for i:=1 to 5 do s:=s+a[4,i];

对某一列进行处理。如累加第4列的数据。则固定列号为4。如:for i:=1 to 10 do s:=s+a[i,4];

2、二维数组的输入输出要用双重循环来控制: for i:=1 to 10 do{————控制行数} begin

for j:=1 to 5 do read(a[i,j]){————第一行读入5个元素} readln;{————读入一个换行符} end;

{————最常用的方法:从键盘读入数据初始化二维数组} for i:=1 to 10 do

for j:=1 to 5 do a[i,j]:=0;

{————最常用的方法:将二维数组清0} for i:=1 to 10 do begin

for j:=1 to 5 do write(a[i,j]:4); writeln; end;

{————最常用的输出方法:按矩阵形式输出二维数组的值} 3、 二维数组的应用:

例1:竞赛小组共有20位同学,这学期每位同学共参与了三项比赛,请统计每位同学的

- 32 -

信息学奥林匹克竞赛资料(初赛资料).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c6gehx4x408565jb3uu0n_8.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top