文档详情

Pascal初级习题(赋值语句----过程和函数).doc

发布:2017-04-18约2.56千字共2页下载文档
文本预览下载声明
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
显示全部
相似文档