- 1、本文档共2页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Pascal初级习题(赋值语句----过程和函数).doc
PAGE
PAGE 2
每周回顾与作业(六)____函数与过程
函 数过 程function 函数名 (形式参数表):类型;
procedure 过程名 (形式参数表); 函数调用的一般格式:<函数名>或<函数名>(实在参数表)过程调用是通过一条独立的过程调用语句来实现
<过程名> 或 <过程名>(实在参数表)用过程来实现,通过全局变量带回结果
program hs_exam1;
var i:integer;s:longint;
procedure fac(n:integer);
var k:integer; t:longint;
begin
t:=1;
for k:=2 to n do
t:=t*k;
s:=s+t;
end;
begin
for i:=1 to 10 do
fac(i);
write(s=,s);
readln;
end.
例1、计算s:=1+2!+3!+……10!的函数
用函数来实现,通过函数名带回结果
program hs_exam1;
var i:integer;s :longint;
function fac(n:integer):longint;
var k:integer; t:longint;
begin
t:=1;
for k:=2 to n do
t:=t*k;
fac:=t; { 将计算结果值赋给函数,返回调用处 }
end;
begin
for i:=1 to 10 do
s:=s+fac(i);
write(s=,s);
readln;
end.
例2、求正整数A和B之间的完全数(AB)。分析:所谓完全数是指它的小于该数本身的因子之和等于它本身,如6=1+2+3,6即是一个完全数。因此我们可定义一个布尔型函数perfect(x),若x是完全数,其值为TURE,否则为FALSE。
program ex7_1;var i,a,b : integer;function perfect(x:integer):boolean;var k,sum : integer;begin {累加x所有小于本身的因数} sum:=1; for k:=2 to x div 2 do if x mod k=0 then sum:=sum+k; {判断x是否是完全数} perfect:=x=sum; {将结果赋值给函数名}end;{end of perfect}begin{主程序开始} write(Input a,b:); repeat {输入0ab} readln(a,b); until (a0)and(b0)and(ab); writeln(List of all perfect numbers:); {从a到b逐个判断,是完全数则打印出来 for i:=a to b do if perfect(i) then writeln(i);end.
例3:编写一个给一个分数约分的程序。program ex7_6;
变量参数
var a,b:integer;
procedure common(var x,y:integer);var a,b,r:integer;begin{求x,y的最大公约数} a:=x;b:=y; repeat r:=a mod b; a:=b; b:=r; until r=0;x:=x div a; y:=y div a; {对x,y进行约分}end; begin readln(a,b); common(a,b); writeln(a,b:5);end.
如输入:Input a,b=12 8 则输出: 3 2
练习
指出下列程序中的全程变量、局部变量、变量参数、数值参数,写出程序运行后的输出结果。
program pf; var a , b , c : integer; procedure change (var x : integer; y : integer); var m,n : integer; begin m := x * y; x := x + 1; y := y + 10; n := x + y; writeln (‘ x= , x , y= , y , ‘ m= , m , n=, n ); end; begin a := 3; b := 3; change ( a , b ); change ( a , b ); change ( a , b ); end.
Program ex1-6-1;
var a
文档评论(0)