信息学奥林匹克竞赛培训教案(8)

2019-08-30 13:42

5、Pascal程序可以分为三个部分,请将这三个部分的名称填入下面括号中(3)

6、在Pascal中,(15)

有六个算术运算符,它们是__+、-、*、/、MOD、DIV___。 有六个关系运算符,它们是__>、>=、<、<=、=、<>__。 有三个逻辑运算符,它们是__AND、OR、NOT___。

7、请自己设计一张图表将第6题中的运算符,再加上函数和括号在PASCAL程序中的运算优先规则表示出来。(3)

8、请将下列实型数据用另一种表示法表示(6) 小数表示法 12.5 132.67 0.0025 科学表示法 1.25e+1 1.3267e+2 2.5e-3 小数表示法 100 -30.5 -0.0002509 科学表示法 1e+2 -3.05e+1 -2.509e-4 ()

函数

NOT

优先级由高到低 AND

* / div mod

OR + -

< <= = >= > <>

( 语句部分 ) ( 说明部分 ) ( 程序首部 ) PROGRAM circle(input,output); CONST

PI=3.14159; VAR

r,l,s:real; BEGIN

read(r); l:=2*PI*r; s:=PI*r*r; write(r,l,s); END.

36

9、将下列代数式写成Pascal的表达式(4)

p?q?(r?1)22(r?1)?1 (1)a-(m-d)×4÷b+3y=A2 (2)

a-(m-d)*4/b+3*y=A2

(p*q*sqr(r+1))/(sqr(r+1)-1)

88?16?4ax47?15(3) (4)|3-eln(1+x)|

(88-16)/(47-15)-4*a

abs(3-exp(x)*ln(1+x))

二、程序找错(每个程序有4处错误,请你找出来) 10、

PROGRAM T55_002; a,h:integer; BEGIN

write(“San Jiao Xing Di:”); readln(a)

write(“San Jiao Xing Gao:”); readln(h);

writeln(“San Jiao Xing Mian Ji:”a*h/2:6:1) END. 11、

PROGRAM T65_004; VAR

n,integer; BEGIN

write('Please input a number from 0 to 6 for weekday:') read(n); CASE n

0:writeln('Sunday');

37

错误一:第2行少“VAR”; 错误二:第5行少分号; 错误三:第4、6、8行,字符串应用单引号,题中用了双引号; 错误四:第8行字符串与变量之间少逗号。 1:writeln('Monday'); 2:writeln('Tuesday'); 3:writeln('Wednesday'); 4:writeln('Thursday'); 5:writeln('Friday'); 6:writeln('Saturday'); END.

12、PROGRAM T75_002; VAR ch:char;

ZiMu,ShuZi,FuHao:integer; BEGIN ZiMu:=0; ShuZi:=0; FuHao:=0; WHILE ch<>'?' BEGIN read(ch);

错误一:第2行变量与数据类型之间应用冒号,这里用了逗号; 错误二:第5行少分号; 错误三:第7行,CASE语句少了OF; 错误四:CASE语句没有END与之配对。 IF (ch>A) AND (cha) AND (ch

ELSE IF ord(ch)>=48 AND ord(ch)<=57 THEN ShuZi:=ShuZi+1 ELSE FuHao:=FuHao+1; END;

writeln('Zi Mu Ge Shu: ',ZiMu); writeln('Shu Zi Ge Shu: ',ShuZi); writeln('Qi Ta Fu Hao Ge Shu: ',FuHao) END.

错误一:第9行WHILE语句少DO; 错误二:第12行IF语句中,字符没有加单引号; 错误三:第13行,赋值语句不对,应为:= 错误四:第14行,IF语句中,AND两边的逻辑判断应各自加括号,即(ord(ch)>=48) AND (ord(ch)<=57)。 38

第10课 函数(一)20080414

以前我们用过由PASCAL系统提供的标准函数,例如sqrt()(开方)、ord()(取数字)、pred()(取前导字符)、abs()(绝对值)等。在表达式中调用这些函数是相当简单的,只需写出函数名,并将自变量写在函数名后的括号中即可。

函数使用方便实用,但PASCAL提供的标准函数并不多,不能满足一些复杂问题的求解,这时就需要定义新的函数。

T85_001 输入x值,计算y。已知

y?sh(1?sh(x))

sh(2x)?sh(3x)其中sh是双曲正弦函数,它不是PASCAL 的标准函数。该问题要求4次计算双曲正弦函数,可以将它定义成一个函数,然后调用4次,以得到问题的解。

已知计算双曲正弦的公式如下:

et?e?tsh(t)?

2按此写出的双曲正弦函数说明如下:

函数分程序

函数首部 函数说明部分 函数语句部分 (函数体)

FUNCTION sh(t:real):real; BEGIN

sh:=(exp(t)-exp(-t))/2 END;

函数说明的第一行称函数首部。它必须以保留字FUNCTION开头,然后是函数名,参数表和函数类型标识符。在此例中,函数名是sh,参数表是(t:real),在参数表中给出了形式参数t和它的类型real,函数类型是real。

在函数首部的后面是函数分程序。它由说明部分和语句部分构成。说明部分有时可以没有。语句部分又称函数体,它必须用BEGIN和END括起来 。函数体对形式参数进行处理,处理结果赋给函数名,作为函数结果传给调用它的程序。

此例中没有说明部分。函数体由给函数名sh赋值的语句组成。这个值作为函数执行的结果被回送。

函数说明的一般形式如下:

FUNCTION <函数名> (<参数表>):<函数类型>;

39

<说明部分>; BEGIN <函数体> END;

为了调用非标准函数,必须预先将函数定义(或称函数说明)写在程序的说明部分(处于变量说明之后)。然后在程序中需要调用的地方,将函数名和相应的自变量(称实在参数)写在表达式中即可。一个表达式中可以包括多个函数调用。

T85_001的程序如下: PROGRAM T85_001; VAR

x,y:real;

FUNCTION sh(t:real):real; BEGIN

sh:=(exp(t)-exp(-t))/2; END; BEGIN read(x);

writeln('x=',x:6:2);

y:=sh(1+sh(x))/(sh(2*x)+sh(3*x)); writeln('y=',y:6:2) END.

函数调用的一般形式为 <函数名>(<实在参数表>)

T85_002 求五边形的面积(如图)。边长l1-l7由键盘读入。

讨论:求五边形的面积可以变成求3个三角形面积的和。已知三边长为a、b、c,求三角形面积S公式:S?

l2 l1 S1

l6

S2 l7

S3

l3

l5 l4

p(p?a)(p?b)(p?c),其中p?1(a?b?c) 2 40


信息学奥林匹克竞赛培训教案(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《营养师》国家职业资格考试知识复习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: