当前位置:首页 >> 学科竞赛 >>

pascal 数组与字符串


第六章 数组与字符串
6.1 一维数组 6.2 二维数组 6.3 字符串 练习与作业 6.1 一维数组 1、定义: var a:array [1..10] of integer; 其中:a 是这一批数据的名称,称为数组名;array、of 是定义数组的保留字;中括号中的 数字是数据编号的下限和上限,财时也说明了数据的个数(上限-下限);最后一个是数据的基 类型,如 in

teger,char,real,boolean。 2、数组元素的输入: 数组名代表的并不是一个变量,而是一批变量,因而,不能直接整个数组读入,而是要逐个数组 元素读入,通常用循环结构来完成这一功能。下面是几个常用输入数组元素的例子: for i:=1 to 10 do read(a[i]); {————从键盘读入数组元素的值;最常用的方法} for i:=1 to 10 do a[i]:=i; {————数组元素 a[1]到 a[10]的值分别为 1 到 10;数据赋初值} for i:=1 to 10 do a[i]:=0; {————数组元素清 0;最常用的数据初始化的方法} for i:=1 to 10 do a[i]:=random(100); {————随机产生 10 个 100 以内的数,赋给各数组元素} 3、数组元素的输出: 和数组元素的输入相同, 数组元素的输出也不能由一个 write 语句直接完成。 同样要逐个数 组元素输出。通常也用循环结构来完成这一功能: for i:=1 to 10 do write(a[i],' ');{————数组元素之间用空格分隔} writeln; 4、数组的应用: 例 1:从键盘输入 10 个数,将这 10 个数逆序输入,并求这 10 个数的和,输出这个和。 program p1; var a:array [1..10] of integer; i,s:integer; begin for i:=1 to 10 do read(a[i]); for i:=10 downto 1 do write(a[i],' '); writeln; s:=0; for i:=1 to 10 do s:=s+a[i]; writeln('s=',s); end.

例 2:用筛法求 100 以内的素数(质数)。 分析: 素数是除了 1 和它本身以外没有其它约数的数。 用筛法求素数的方法是: 用质数筛去合数: 从第一个素数 2 开始,把它的倍数去掉;这样 2 以后的第一个非 0 数就一定也是素数,把它的倍 数也删了??重复这个删数过程,直到在所找到的素数后再也找不到一个非 0 数。把所有非 0 数输出。 program p2; var a:array [1..100] of integer; i,j,k:integer; begin for i:=1 to 100 do a[i]:=i; a[1]:=0;i:=2; while i<=100 do begin k:=i; while k<=100 do begin k:=k+i; a[k]:=0; end; {————上面将所有 a[i]的倍数清 0} i:=i+1; while a[i]=0 do i:=i+1; {————查找接下来的第一个非 0 数} end; for i:=1 to 100 do if a[i]<>0 then write(a[i],' '); end. 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; {————最常用的输出方法:按矩阵形式输出二维数组的值} 例 1:竞赛小组共有 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 个同学的三次竞赛成绩} 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.有关字符串的操作: 操作 类 型 返 作用 回 值 型 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); Writeln(s); { 'Honest Lincoln' } S := 'Honest Lincoln'; Insert('Abe ', S, 8); { 'Honest Abe Lincoln' } 型 i :=Pos(' ', S);{i 的值为 1} s1:='1234'; s2:='5678'; s:=s1+s2;{'12345678'} 例子

length(s)

函 求字符串 s 的长 整 s:='123456789'; 数度 函 复制 s 中从 w 开 数 始的 k 位 将字符串 s 转为

copy(s,w,k)

val(s,k,code)

过 数值, 存在 k 中; 程 code 是错误代 码 过 将数值 i 转为字 程 符串 s 过 程 在 s 中删除从第 w 位开始的 k 个 字符

str(i,s)

Delete(s,w,k)

Insert(s1, S, 过 将 s1 插到 s 中 w) Pos(c, S) 程第 w 位 数 的位置 运 + 算 符 将两个字符串 连接起来

函 求字符 c 在 s 中 整 S := ' 123.5';

思考与练习: 1、随机产生 20 个 100 以内的数,输出;按从小到大的顺序排序,输出。 2、求一个 5 X 5 数阵中的马鞍数,输出它的位置。所谓马鞍数,是指在行上最小而在列上最大 的数。如下: 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 则 1 行 1 列上的数就是马鞍数。 3、做一个加法器。完成 30000 以内的加法,两个加数间用“+”连接,可以连加,回车表示式子 输入完成;“#”表示结束运算,退出加法器。

返回


相关文章:
pascal 数组与字符串
pascal 数组与字符串_学科竞赛_高中教育_教育专区 暂无评价|0人阅读|0次下载|举报文档 pascal 数组与字符串_学科竞赛_高中教育_教育专区。第六章 数组与字符串 ...
Pascal入门简介:第四课 Pascal数组与字符串(5)
Pascal 入门简介:第四课 Pascal 数组与字符串(5) 入门简介: 数组与字符串( ) 要找的满足上述条件的位置,然后再从右到左找到第一个比该位置上的数字大的数字...
Pascal入门简介:第四课 Pascal数组与字符串(1)
pascal-一维数组 5页 免费如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 Pascal入门简介:第四课 Pascal数组与字符串(1...
Pascal入门简介:第四课 Pascal数组与字符串(4)
Pascal 入门简介:第四课 Pascal 数组与字符串(4) 入门简介: 数组与字符串( ) end. [运行程序]下划线表示输入 Input n:8 Input 8 data into array: 35 21...
Pascal入门简介:第四课 Pascal数组与字符串(3)
Pascal 入门简介:第四课 Pascal 数组与字符串(3) 入门简介: 数组与字符串( ) var i,j,n,temp:integer; a:array [1..maxn] of integer; begin write('...
pascal语言中字符串操作
实际上一个字符串差不多就是一个字符类型的 数组,因为用[]符号,你就能访问字符串中的字符,这一事实充分说明了上述观 点。 为克服传统 Pascal 字符串的局限性,...
Pascal常用字符串函数
Pascal常用字符串函数_计算机软件及应用_IT/计算机_专业资料。Pascal常用字符串...Fillchar(a,size(a),0) 数组初始化,即把数组 a 的值全部置为 0 SHR: x...
Pascal常用字符串函数
Pascal常用字符串函数_IT/计算机_专业资料。主要是用于NOIP的常用字符串函数 ...Fillchar(a,size(a),0) 数组初始化,即把数组 a 的值全部置为 0 SHR: x...
free pascal 数组必会的题目的解题思路
free pascal 数组必会的题目的解题思路_学科竞赛_初中教育_教育专区。数组必会...10、判断字符串是否回文。回文指字符串中线为标准,所以左右对等的字符 相等。 ...
pascal-多维数组
pascal-多维数组_IT/计算机_专业资料。pascal-多维数组第九课 多维数组 一、多维...先读入要判断的一串字符(放入数组 letter 中),并记住这串字符的长度,然后首尾 ...
更多相关标签:
pascal字符串数组 | pascal数组转字符串 | pascal字符串函数 | pascal字符串 | pascal数字转字符串 | pascal字符串比较 | pascal字符串操作 | pascal 字符串拼接 |