云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > PASCAL教材

PASCAL教材

  • 62 次阅读
  • 3 次下载
  • 2025/5/2 1:04:16

【例6-6】对于数组A,输入一个测试数据X,如果X存在于数组A,则把X元素删除;否则将X插入对应位置,要求数组仍然有序(假设数组递增)。

【例6-7】从键盘输入若干个数,由小到大排序输出。 6.2 二维数组

一维数组在编程中多用于描述线性的关系:如一组数;一组成绩;一组解答等。数组元素只有一个下标,表明该元素在数组中的位置。二维数组在编程中多数用于描述二维的关系:如地图、棋盘、城市街道、迷宫等等。而二维数组元素有两个下标:第一个下标表示该元素在第几行,第二个下标表示在第几列。

1.二维数组的定义:

Var a:array[1..10,1..5] of integer;

其中:a是数组名,由程序员自定;array和of是定义数组的保留字;(这两点和一维数组定义的格式一样)中括号中的两个范围表示二维数组共有多少行、多少列(第一个范围表示行数,第二个范围表示列数);最后一个表示数组元素的类型,规定和一维数组一样。如上例,定义了一个二维数组a,共有10行5列。

2.使用二维数组:

(1)数组元素的指称:数组名[行号,列号]。如第三行第四个元素:a[3,4]。 对某一行进行处理。如累加第4行的数据。则固定行号为4。 如:for i:=1 to 5 do s:=s+a[4,i];

对某一列进行处理。如累加第4列的数据。则固定列号为4。 如:for i:=1 to 10 do s:=s+a[i,4]; (2)二维数组的输入输出要用双重循环来控制: for i:=1 to 10 do {控制行数} begin

for j:=1 to 5 do read(a[i,j]) {第一行读入5个元素} readln; {读入一个换行符}

end; {最常用的方法:从键盘读入数据初始化二维数组} for i:=1 to 10 do

for j:=1 to 5 do a[i,j]:=0; {最常用的方法:将二维数组清0}

for i:=1 to 10 do begin for j:=1 to 5 do write(a[i,j]:4); writeln;end; {最常用的输出方法:按矩阵形式输出二维数组的值}

【例6-8】竞赛小组共有20位同学,这学期每位同学共参与了三项比赛,请统计每位同学的平均分。分析:定义一个20行3列的二维数组来存放这些成绩。定义一个20个元素的一维数组来存放平均分。 program p1;

var a:array [1..20,1..3] of integer;

b:array [1..20] of real; i,j:integer; begin

for i:=1 to 20 do

begin for j:=1 to 3 do read(a[i,j]);readln;end; {键盘读入20个同学的三次成绩}

21

for i:=1 to 20 do b[i]:=0; {平均分数组清0} for i:=1 to 20 do

begin for j:=1 to 3 do b[i]:=b[i]+a[i,j]; {计算总分}

b[i]:=b[i]/3;{计算平均分} end;

for i:=1 to 20 do write(b[i]:5:1); {输出平均分} writeln; end.

6.3 字符串

1.字符串用于存放整批的字符数据。通常编程中使用字符串存放字符化了的数字数据。如高精度运算时存放操作数和运算结果。字符串可以看作是特殊的字符串数组来处理。当然,它也有自已的特点。下面是字符串定义的格式:

var s:string; s1:string[15];

字符串定义时,如不指定长度,则按该类型的最大长度(255个字符)分配空间,使用时最大可用长度为255个;如果在中括号中给出一个具体的值(1—255之间),则按这个值的大小分配空间。使用时,最大的可用长度即为该值。

2.字符串的输入、输出:字符串类型既可按数组方式输入、输出,也可直接输入、输出:readln(s);writeln(s);多个字符串输入时以回车作为数据间的分隔符;每个readln语句只能读入一个字符串。

3.有关字符串的操作: 操作 类型 作用 返回值 求字符串s的长length(s) 函数 整型 度 复制s中从w开copy(s,w,k) 函数 字符串 始的k位 将字符串s转为Val(s,k,code) 过程 数值,存在k中;code是错误代码 例子 s:='123456789'; l:=length(s);{l的值为9} s:='123456789'; s1:=copy(s,3,5);{s1的值是'34567'} Var s:string;k,code:integer; begin s:='1234'; val(s,k,code); write(k);{k=1234} i:=1234; str(i,s); write(s);{s='1234'} s := 'Honest Abe Lincoln'; Delete(s,8,4); riteln(s); { 'Honest Lincoln' } S := 'Honest Lincoln'; Insert('Abe ', S, 8); { 'Honest Abe Lincoln' } S := ' 123.5'; i :=Pos(' ', S);{i的值为1} s1:='1234'; s2:='5678'; s:=s1+s2;{'12345678'} str(i,s) 将数值i转为字过程 符串s 在s中删除从第Delete(s,w,k) 过程 w位开始的k个字符 Insert(s1, S, 将s1插到s中第过程 w) w位 Pos(c, S) +

求字符c在s中函数 的位置 运算将两个字符串连符 接起来 整型 22

思考与练习

1.随机产生20个100以内的数输出;再按从小到大的顺序排序,输出。(分别用冒泡、选择排序两种方法)

2.求一个5 X 5数阵中的马鞍数,输出它的位置。所谓马鞍数,是指在行上最小而在列上最大的数。如下图中:则1行1列上的数就是马鞍数。

5 6 7 8 9 4 5 6 7 8 3 4 5 2 1 2 3 4 9 0 1 2 5 4 8

3.做一个加法器。完成30000以内的加法,两个加数间用“+”连接,可以连加,回车表示式子输入完成;“#”表示结束运算,退出加法器。

4.输入10个单词,将它们按字典排序以后输出。(课本P159页) 5.输入一串字符或数字,判断是否为回文。

6.输入一串字符,以“?”结束,分别统计其中每个数字0,1,2??9出现的次数。 7.输入20个数,从大到小排序后输出,并给出每个数原来的次序。 8.杨辉三角形。

9.约瑟夫问题。(猴子选大王)。 10.螺旋矩阵。 11.魔阶方阵。 12.蛇形矩阵。

13.进制转换。(十进制、二进制、八进制、十六进制互换) 14.数学黑洞6174。

15.高精度计算(加、乘、除法)。

第七章 函数和过程

7.1 过程 1.过程的定义

procedure 过程名(形式参数:参数说明);{也可以不带参数} var

begin ...end;

2.过程的调用:过程名(实在参数表); 【例7-1】求n个自然数的最大公约数; program gcd1;

const maxn=100; var n,i,gcd:integer;

a:array[1..maxn] of integer; procedure enter; begin

write('n=(<100)');readln(n); for i:=1 to n do

23

repeat

write('a[',i,']=');readln(a[i]); until a[i]>0; end;

procedure find_gcd(x,y:integer);{定义过程} var r:integer; begin

r:=x mod y;

while r<>0 do begin x:=y;y:=r;r:=x mod y; end gcd:=y; end;

procedure print;

begin writeln('GCD=' ,gcd);end; begin

enter; gcd:=a[1];

for i:=2 to n do find_gcd(gcd,a[i]); print; end.

7.2 函数 1.函数的定义

function 函数名(形参表):函数类型; {函数首部} var {局部变量说明部分} begin {函数体} ... {函数语句}... 函数名:=表达式 end;

2.函数的调用:

函数在语法上相当于一个表达式,所以,调用时,函数不能独立成为一个语句;它可以出现在任何表达式可以出现的地方。

例如赋值语句的右边:

X:=函数名(实在参数表); {X的类型与函数类型必须一致}

又,如果函数类型是boolean,则还可以出现在条件语句中,充当条件表达式: if 函数名(实在参数表) then ??

【例7-2】编一程序,求从10名同学中选出3名代表,有几种不同的选法。 (公式:C(m,n)=m!/n!*(m-n)!从m中选n) program zohe1;

var m,n:integer; c:longint;

function factor(x:integer):longint;{定义} var i:integer; p:longint; begin

p:=1; for i:=1 to x do p:=p*i; factor:=p;{这个语句必须} end; begin

write('m,n='); readln(m,n);

24

搜索更多关于: PASCAL教材 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

【例6-6】对于数组A,输入一个测试数据X,如果X存在于数组A,则把X元素删除;否则将X插入对应位置,要求数组仍然有序(假设数组递增)。 【例6-7】从键盘输入若干个数,由小到大排序输出。 6.2 二维数组 一维数组在编程中多用于描述线性的关系:如一组数;一组成绩;一组解答等。数组元素只有一个下标,表明该元素在数组中的位置。二维数组在编程中多数用于描述二维的关系:如地图、棋盘、城市街道、迷宫等等。而二维数组元素有两个下标:第一个下标表示该元素在第几行,第二个下标表示在第几列。 1.二维数组的定义: Var a:array[1..10,1..5] of integer; 其中:a是数组名,由程序员自定;array和of是定义数组的保留字;(这两点和一维数组定义的格式一样)中括号中的两个范围表示

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com