- 26 - 成都树德实验中学Pascal程序设计
var a, b, c:integer; procedure pro; var c: integer;
begin a:=1;b:=2;c:=3; end; begin
a:=100;b:=200;c:=300; pro;
writeln(a, b, c) end.
运行结果是:
(A) 100 200 300 (B) 1 2 3 (C) 1 2 300 (D) 100 200 3 3、程序:
program lx7-2-3(output); var x, y:integer;
procedure pd(a: integer;var b: integer); begin a:=1; b:=a+b; end; begin
x:=10;y:=20; pd(x, y); writeln(x, y:5) end.
运行结果是:
(A) 10 20 (B) 1 20 (C) 1 21 (D) 10 21 4、程序:
program lx7-2-4(output); var x:integer;
procedure pr(var z:integer);
begin z:=z+100; write( ’x=’,x); end; begin x:=10; pr(x); x:=100;
writeln(’x=’,x) end.
运行结果是:
(A) x=110 x=100 (B) x=10 x=100 (C) x=110 x=110 (D) x=100 x=100 5、程序: program lx7-2-5(output); var x:integer;
function f1(m: integer): integer); function f2(n: integer): integer); begin f2:=n+1; end;
begin f1:=m * f2(m); end; begin x:=5;
x:=f1(x)+x; write(’x=’,x)
成都树德实验中学Pascal程序设计 - 27 -
end.
运行结果是:
(A) x=5 (B) x=6 (C) x=35 (D) x=30 6、程序:
program lx7-2-6(output);
var x:integer;
procedure pp(m: integer) ; var i, j: integer;
function f (n: integer): integer; begin f:=n+1; end; begin
for i:=m downto 1 do begin
for j:=1 to f(i) do write( ’ * ’ ); writeln; end; begin x:=5; pp(x); end.
运行结果是:
(A) * (B) * * * * * * (C) * * (D) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 三、阅读程序
1、指出下列程序中的全程变量、局部变量、值参、变参,并写出程序运行后的输出结果。 program lx7-3-1(input, output);
var a, b, c:integer;
procedure suan(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=’: 4,y,’m=’: 4,m,’n=’: 4,n) end; begin
a:=3;b:=3; suan(a, b); suan(a, b); suan(a, b) end.
2、程序: program lx7-3-2(input, output);
var s, n:integer;
function f(n:integer):integer; begin
if n=1 then f:=1
- 28 - 成都树德实验中学Pascal程序设计
else f:=n * n+f(n-1); end; begin
write( ’input n:’);readln(n); s:=f(n);
writeln( ’f( ’,n,’)=’,s) end. 该程序的功能是:
当n的值为6时,程序的运行结果是: 3、程序:
program lx7-3-3(input, output);
var a, b, c, d:integer;
procedure p(a:integer;var b:integer) ; var c:integer; begin
a:=a+1;b:=b+1;c:=2;d:=d+1; writeln( ’m ’,a, b, c, d); if a<3 then p(a, b); writeln( ’n ’,a, b, c, d) end; begin
a:=1;b:=1;c:=1;d:=1; writeln( ’x ’,a, b, c, d); p(a, b);
writeln( ’y ’,a, b, c, d) end.
该程序的运行结果是:
四、已知函数ack的计算公式如下:
n+1 m=0; ack(m, n)= ack (m-1,1) n=0;
ack (m-1, ack (m, n-1)) m≠0且n≠0. 计算ack (1, 2) 和ack (2, 2)的值。
五、完善程序
数组a中有n个按升序排列的元素,现要插入一个元素,且插入后a中元素仍是升序。定义过程p对给定的值y,首先找插入位置,然后插入。
程序:
program chashu (input, output);
const n=50;
type atype=array[1..n] of integer; var a:atype;
i, count, y:integer;
procedure p(var x:atype;y:integer;var m:integer) ;
var i, k:integer; {定义局部变量} begin
if m>=n then writeln( ’out range’) {若数组长度超过50,结束调用} else begin
① _ k:=1;__ { k控制数组的下标}
成都树德实验中学Pascal程序设计 - 29 -
while ② _(y>x[k]) and (k<=m) _do k:=k+1;{找插入点}
③ for i:=m downto k do {插入点后面的元素后移} x[i+1]:=x[i];
④___x[k]:=y; {插入y} m:=m+1 {数组长度加1} end; end;
begin {主程序} readln(count);
for i:=1 to count do {为数组赋初值} a[i]=3 * i;
for i:=1 to count do {输出数组初值} write(a[i]: 4);
write( ’y=’);readln(y); {输入待插入的数}
⑤ _ p(a, y, count); {过程调用,变参x、m在过程中的变化将影响a和count值} for i:=1 to count do {输出结果,} write(a[i]: 4); writeln end. 六、编程
1、有程序中定义一函数digit(n, k),它能分离出整数n从右边数第k个数字,如digit(31859, 3)=8,digit(32076, 5)=0。
2、有程序中定义一个函数check(n, d),如果数字d在整数n中出现,则函数值为true,否则为假,如check(9687, 7)=true, check(10345, 6)=false。
3、根据公式
arctanx(x)=x-x3/3+x5/5-x7/7+?和л=6arctanx(
13)
定义函数arctanx (x),求当最后一项小于10-6时的值。 4、已知 m?max(a, b, c) ,
max(a?b, b, c) ? max(a, b, b?c)输入a, b, c,求m。把求三个数的最大数max(x, y, z)分别定义成函数和过程来求做。
5、对6~1000内的偶数验证哥德巴赫猜想:任何一个大于6的偶数总可以分解为两个素数之和. 6、用递归的方法求1+2+3+4+?+(n-1) +n的值。 7、用递归的方法求Hermite多项式的值 1 n=0 hn(x) 2x, n=1 2xhn-1(x) -2 (n-1)hn-2(x)。 n>1 对给定的x和正整数n, 求多项式的值。 8、写一递归程序,把读入的正整数倒序输出。
- 30 - 成都树德实验中学Pascal程序设计
9、已知f(x,n)?xn?(n?1)?(n?2)???xxxx1?x用递归函数和递归过程两种方法求解
10、已知f(x,n)?n?(n?1)?(n?2)???2?1?x
计算x=4.2, n=10以及x=2.5, n=15时f的值。
11、有52张扑克牌,使它们全部正面朝上。从第2张牌开始,把凡是2的倍数位置上的牌翻成正面朝下,接着从第3张牌开始,把凡是3的倍数位置上的牌正面朝上的翻成正面朝下,正面朝下的翻成正面朝上,接着从第4张牌开始,把凡是4的倍数位置上的牌按此规律翻转。依此类推,直到第1张要翻的牌是第52张牌为止。统计最后有几张牌正面朝上,并打印出它们的位置。
第八章 集合和记录
一、问答题
1、设有集合a=[1,3,5,7,9],b=[2,4,6,8,10],c=[1,2,3,4,5] ,d=[5],e=[ ],求下列表达式的结果。
① (a+b)-c ② (a * c)=d ③ (a+e) * (b+d) ④ 7 in(((a-b)-c)-d) ⑤ c<=(a+b) ⑥ a>=b * e-c 2、列出下列集合类型的全体元素: ① color=set of ( red, green, blue )
② num=set of 1..5
二、填空题
1、某人事登记表包括以下几个数据项:姓名最多用15个字符表示,性别用male, female分别表示男女,出生日期用年月日表示,年份在1900到1999之间,家庭住址最多用40个字符表示,以下是用一个记录来表示的数据结构,请将程序予以完善。 type sexs=( ① ); date=record
year; ② ; month: ③ ; day: ④ ; end;
personal = ⑤ ; name: ⑥ ;
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库全国青少年信息学奥林匹克联赛培训习题(6)在线全文阅读。
相关推荐: