一、选择题:1、下列函数首部或过程首部合法的为()A、function total(x:real);B、procedure ab(a,b:real):realC、procedure sumD、function f(var f:real):integer;2、设有过程首部procedure pro(var x,y:integer); 若a,b 为整型变量,其值分别为5,6,则合法的过程调用语句是A、pro(5,6) B、pro(b-1,2*a-4)C、pro(‘a’,’b’)D、pro(a,b)3、若有以下程序program exam1(input,output);var x,y:real; a,b,c:integer;procedure p1(a,b,c:real);var x:integer;begin……end;begin……end.则下列说法中正确的是()A、主程序中x的作用域包含过程p1B、过程p1中x的作用域包含主程序C、主程序中x的作用域和过程p1中x的作用域相同D、主程序中x的作用域不包含过程p14、若有以下程序program exam2(input,output);var x,y:real; a,b,c:integer;procedure p2(a,b,c:real);var x:integer;begin……end;begin……end.则下列说法中正确的是A、y的作用域包含过程p2B、y的作用域不包含过程p2C、y的作用域只限于过程p2D、y的作用域和x的作用域相同5、program test1(output);var x,y,z:integer;procedure silly1(x:integer; var y:integer);beginx:=5; y:=6; z:=7;writeln(x,y,z)end;beginx:=1; y:=2; z:=3;silly1(x,y);writeln(x,y.z)end.以上程序运行结果为A、5 6 7B、5 6 75 6 3 5 6 7C、5 6 7D、5 6 71 6 7 1 6 36、program test2(output);var x,y,z:integer;procedure silly2(x:integer; var y:integer);beginx:=5; y:=6; z:=7;writeln(x,y,z)end;beginx:=1; y:=2; z:=3;silly1(y,x);writeln(x,y.z)end.以上程序运行结果为A、5 6 7B、5 6 75 6 3 6 2 3C、5 6 7D、5 6 71 6 3 1 6 77、program prog1(input,output);var x,y:integer;procedure proc1(i1,i2:integer);begin i1:=x+y; i2:=i1*y; end;beginx:=5; y:=10;proc1(x,y);writeln(x,y)end.以上程序执行后的正确输出是()A、5 10B、5 150C、15 150D、15 108、program prog2(input,output);var x,y:integer;procedure proc2(i1:integer, var i2:integer);begin i1:=x+y; i2:=i1*y; end;beginx:=5; y:=10;proc2(x,y);writeln(x,y)end.以上程序执行后的正确输出是()A、5 10B、5 150C、15 150D、15 109、program main(output);var x,m,n:integer: y:real;procedure a (var x:integer; y:real);var m:integer;begin x:=x+1; m:=x+1; y:=m*3; n:=mend;beginx:=8; m:=5; n:=3; y:=1; a(m,y);writeln(x,m,n,y:4:1)end.以上程序运行后的正确输出是A、8 5 3 1.0B、9 10 10 3.0C、8 7 7 21.0D、8 6 7 1.010、program main(output);function p(x:real; n:integer):real;beginif n=0 then p:=1.0else if odd (n) then p:=x*sqr(p(x, n div 3))else p:=sqr(p(x, n div 3))end;beginwriteln(p(2.0,7):6:1)end.以上程序运行后的正确输出是A、1.0B、2C、2.0D、711、program exam(output);var a,b,c:integer;procedure proc(var a:integer; b:integer);begina:=1; b:=2; c:=3;end;begina:=5; b:=6; c:=7;proc(a,b);writeln(a:2,b:2,c:2)end.以上程序的运行结果是()A、1 6 3B、1 2 3C、1 6 7D、5 6 712、program exam(input,output);var x:integer;procedure a;var x:integer;begin writeln(x:1); x:=2; writeln(x:1) end; begin x:=1; a; writlen(x:1) end.以上程序的运行结果是()A、29254(随机数)B、12 21 1C、29254(随机数)D、12 22 213、已知函数说明如下:function f(n:integer):integer;beginif n=0 then f:=0else if n>0 then f:=f(n-2)else f:=f(n+3)end;则函数调用f(5)的值是A、0B、1C、-1D、-214、program aa (output);var x,y,z: integer;procedure p(x,y:integer; var z:integer);begin z:=y-x-z end;begin x:=5; y:=7; z:=4;p(7, x+y+z, x); writeln(x,y,z)end.以上程序运行后的结果是()A、-2 7 4B、5 7 -2C、5 7 4D、4 7 415、program prog1(input,output);var a,b:integer;procedure p1(x:integer; var y:integer);begin y:=x+y; writeln(x:3,y:3) end;begin a:=5; b:=8; p1(a,b);p1(a+b,a); p1(a div b,b)end.以上程序执行后的输出是()A、5 13B、5 13C、5 13D、5 1318 5 18 23 18 5 18 23 1 13 1 13 1 14 1 14 16、有下列函数:function f1(a:integer):integer;var n,d:integer;begin n:=0; d:=2*a;while d>=a dobegin d:=d div 3; n:=n+1 end;f1:=nend;设a,b,c均为整型变量,下面的程序段均调用函数f1,执行时会出现死循环的程序段是()A、b:=100;B、for b:=1 to 5 doc:=2*(f1(b)+5); if f1(b)>3 thenwriteln(a:5,c:5); c:=f1(b*b);writeln(f1(b))C、b:=1;D、b:=1;repeat while f1(b)>3 dob:=b+1 b:=f1(b*b)+f1(b);until f1(b)>3;17、有下列函数说明:FUNCTION p(n, x : integer ):Integer;BEGINIF n=0 THEN p:=1ELSE IF n=1THEN P:=XELSE p:=Trunc(((2*n)*p(n-1,x)-(n-1)*p(n-2,x))/n);END;执行语句y:=p(3,5)后y的值是()A)30 B)34 C)21 D)1418 有下列程序:Program xx (Output);Var x, y, z: integer;Procedure p(x:Integer; Var y,z:Integer);Beginz:=z+y+xend;beginx:=5; y:=6; z:=7; p(x+y+z,x,y);Writeln(x:4,y:4,z:4)End..的运行结果是()A)5 29 7 B)5 6 7C)18 5 6 D)18 6 719 有下列函数说明Function f(a,b,c:Integer) :Integer;Var t: Integer;Begina:=3*a; t:=b Div c; f:=a+4*tEnd;表达式f(f(1,f(1,2,3),3),2,3)的值是()A) 21 B)3 C)7 D)2520设函数说明为Function check(n,k:) Integer): Integer;BeginRepeatm:=n mod 10; n:=n div 10; k:=k-1;Until k=0;check:=mend;若在主程序中有调用语句y:=check(3725,3),则程序运行后y的值是()A)7 B)5 C)2 D)0二、填空题1、已知程序有以下说明FUNCTION f (a, b, c : integer ):Integer;BeginF:=3*a+4*b div cEnd;则执行语句k:=f(1,2,3)后,k的值是执行语句k:=f(1,2,1)- f(0,1,1)后,k的值是执行语句k:=f(1f(1,2,3),-1)后,k的值是2、函数fn使用递归方法求1+2+3+…+n的值。
其值返回为:当n<1,则返回0;当n>=1,则返回1+2+3+…+n的值。
请填空完成它。
FUNCTION f n(n : integer ):Integer;BeginIf n<1 then fn:=0Else if n=1 then fn:=Else fn:=fn( )+nEnd;3、设有以下程序Program t4(Input,Output);Var i , j , k : integer;Procedure p(…);BeginI:=i-k; j:=j+k;End;BeginI:=2;j:=4;k:=6; p(k,i,j);Writeln(i:3,j:3,k:3);{输出1}p(k+1,i,j);Writeln(i:3,j:3,k:3);{输出2}End.若过程首部的形式参数部分(…)分别为一下两种形式,则该程序执行后的结果是A、(k,i:integer;var j:integer)输出1的结果是:输出2的结果是:B、(k:integer;var i, j:integer)输出1的结果是:输出2的结果是:4、Fibonacci(裴波那契)数列的规律是:前2个数均为1,从第3个数开始每个数等于它前面两个数之和,即:1,1,2,3,5,8,13,21,34,55,89,144,233,377,...。