C语言课件第10章数组与字符串处理.ppt
《C语言课件第10章数组与字符串处理.ppt》由会员分享,可在线阅读,更多相关《C语言课件第10章数组与字符串处理.ppt(56页珍藏版)》请在三一办公上搜索。
1、教学内容:10.1 数组的概念 10.2 一维数组 10.3 多维数组 10.4 字符数组与字符串 10.5 字符串处理函数 10.6 数组作为函数参数,第10 章 数组与字符串处理,教学要求:1掌握数组的定义,及其数组元素的下标表示方法。2掌握数组的初始化方法。掌握数组元素的引用,数组数据输入/输出方法。3掌握数组在程序设计中的应用,以及有关的算法,例如排序算法等。4掌握字符数组的应用方法。5掌握字符串处理函数的使用。,第10 章 数组与字符串处理,数组是最简单的一种构造类型。构造类型是由基本类型按一定规则构造而成的,一个构造类型数据可以分解为多个构造元素,这些元素可以是基本类型,也可以是构
2、造类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本类型或是构造类型。按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。,10.1 数 组 的 概 念,在实际应用中,人们不可避免的要遇到“批量数据的存储和处理”问题。例如:在学生成绩管理系统中,可能需要对一个班 30 名学生的成绩进行输入,计算出平均分,然后输出所有高于平均分的成绩。为了便于处理,对于这样一组有着内在联系、具有相同性质的数据,可以按顺序组织起来,共用一个统一的名字,即:数组名。数组中各个数据的区分用数组名带下标的形式表示。我们可以为 30 名学生的成绩建立一个名为 s 的数组,30 个
3、成绩顺序存放在 s0s29这 30 个带下标的变量中,,1一维数组的定义 定义的语句形式:类型说明符 数组名 常量表达式(1)“数据类型”是指数组元素的数据类型。(2)数组名定名规则和变量名相同。(3)常量表达式,必须用方括号括起来。它是一个整型值,指定数组元素的个数,即数组的长度。常量表达式其中可以包含常数和符号常量,但不能包含变量。,10.2 一 维 数 组,例如:int a10;上述说明语句,定义了一个整型一维数组。数组名称:a,有10个数组元素;系统分配10个连续的存储单元。数组的数据类型是:int 每一个数组元素的存储单元占用2个字节,存放一个整型值。(4)数组元素的下标,是元素相对
4、于数组起始地址的偏移量,所以从0开始顺序编号。上述数组的数组元素为:a0,a1,a2,a9,没有a10。,(5)数组名表示的是一个地址常量,它代表整个数组的首地址。同一数组中的所有元素按其下标顺序占用一段连续的存储单元.a 表示数组起始地址,(7)数组说明语句一次可定义几个数组,形式如下:数据类型 数组名常量表达式,数组名2常量表达式2;例如:int a1 4,a2 5;上述说明语句,定义了两个整型一维数组。数组名为:,a2 a1 一维数组有4个数组元素:a10,a11,a12,a13 a2 一维数组有5个数组元素:a20,a21,a22,a23,a24 数组元素的数值类型均为:整型(int)
5、a1,a2,分别代表各自数组的起始地址&a10&a11&a12&a13 为各数组元素的地址,2.数组元素的引用 引用数组元素的形式:数组名下标表达式(1)“下标表达式”可以是任何非负整型数据,取值范围是0(元素个数-1)。int a8;数组元数:a0 a7(2)在C语言中,数组作为1个整体,不能参加数据运算,只能对单个的元素进行处理。(3)下标不能越界。(4)下标变量和我们前面的简单变量具有相同的地位和作用,可以象使用简单变量一样使用。,例10.1数组元素的引用。main()int i,a10;for(i=0;i=0;i-)printf(%d,ai);本例中第一个循环语句给a数组各元素赋值,然
6、后用第二个循环语句,输出数组元素a9 a0的各个数值。输出结果:9 8 7 6 5 4 3 2 1 0,数组元素引用可以用变量,定义数组,元素个数不能用变量,例10.2 数组元素引用main()int a4;float b3;a0=3;a1=4;a2=a1*14;a3=23;scanf(“%f%f%f”,3 4 56 23,a0 a1 a2 a3,a,定义数组,元素个数 不能用变量,说明:(1)根据存储类型的不同,数组有静态数组(static)和动态数组(auto)之分;(2)根据定义的位置不同:在函数内部定义的数组,称为内部数组。在函数外部定义的数组,称为外部数组。(3)赋值语句和输入语句均
7、可使数组中的元素赋初值,但占用运行时间。简捷的方法是在程序运行之前使数组初始化。,3.一维数组元素的初始化格式 数据类型 数组名常量表达式初值表;(1)只给部分元素赋初值。当 中值的个数少于元素个数时,只给前面部分元素赋值。例如:int a10=0,1,2,3,4;表示只给a0a45个元素赋值,而后5个元素自动赋0值。(2)只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:int a10=1,1,1,1,1,1,1,1,1,1;而不能写为:int a10=1;,(3)如不给数组赋初值,则元素值不确定,对于static型的数组,系统会自动赋以0或0。(4)如给全部元素赋
8、值,则在数组说明中,可以不给出数组元素的个数,编译系统根据初值个数确定数组长度。例如:int a5=1,2,3,4,5;可写为:int a=1,2,3,4,5;(5)若花括弧中提供的初值个数大于数组长度,则按语法错误处理。,例10.3 求数组中8个数的最大值#include main()int i,max,a8=2,5,9,6,35,7,67,49;for(i=0;imax)max=ai;printf(“max=%dn”,max);,例10.4 求Fibonaci数列的前20项#include main()int i,fb20;fb0=1;fb1=1;for(i=1;i19;i+)fbi+1=
9、fbi+fbi-1;for(i=0;i20;i+)if(i%5=0)printf(n);printf(%7d,fbi);,Fibonaci数列的前20项:1 1 2 3 5 8 13 21 34 55 89,排序过程算法:(1)比较第一个数与第二个数,若为逆序a1a2,则交换;然后比较第二个数与第三个数;依次类推,直至第9个数和第10个数比较为止第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上。(2)对前9个数进行第二趟冒泡排序,结果使次大的数被安置在第9个元素位置。(3)重复上述过程,共经过9趟冒泡排序后,排序结束。,例10.5用冒泡法对个数由小到大排序。排序的N-S图如图10.2所示
10、。,ai ai+1,图 10.2,main()int i,j,t,a11;printf(“input 10 numbers:n”);for(i=1;iai+1)t=ai;ai=ai+1;ai+1=t;printf(“the sorted numbers:n”);for(i=1;i11;i+)printf(“%d”,ai);,10.3 多 维 数 组,1.二维数组的定义(1)语句形式:类型说明符 数组名常量表达式1 常量表达式2 例如:float a34;定义a是一个3x4(3行4列)的数组,即a数组有12个元素。但不得写成:float a3,4;(2)二维数组中元素的排列顺序为按行按列。即存放
11、完第1 行的元素后再接着存放第 2 行的元素,依次类推。a00 a01 a03 a03 a10 a11 a12 a13 a20 a21 a22 a23,我们可把二维数组看作是一种特殊的一维数组,它的元素又是一个一维数组。例如:a34可看成 a0-a00 a01 a02 a03 a a1-a10 a11 a12 a13 a2-a20 a21 a22 a23a0 a2每个元素又是一个包含4个元素的一维数组。数组名:a 代表整个数组的首地址a 0:数组第0行的首地址 即第1个元素地址,2.二维数组元素的引用形式为:数组名行下标表达式列下标表达式(1)“行下标表达式”和“列下标表达式”,都应是整型表达
12、式或符号常量。(2)“行下标表达式”和“列下标表达式”的值,都应在已定义数组大小的范围内。假设有数组x34,则可用的行下标范围为02,列下标范围为03。(3)对基本数据类型的变量所能进行的操作,也都适合于相同数据类型的二维数组元素。,3.二维数组的初始化(1)按行给二维数组赋初值。如:static int a34=1,2,3,4,5,6,7,8,9,10,11,12;这种方法比较直观,一行对一行,不易遗漏,易于检查。(2)顺序按行按列给二维数组赋初值。如:static int a34=1,2,3,4,5,6,7,8,9,10,11,12;(3)可以对部分元素赋初值。如:static int a
13、34=1,5,9;static int a34=1,0,6,0,0,11;static int a34=1,5,6;static int a34=1,9;注意:所赋给的值是按行按列对号入座的。,(4)对二维数组的全部元素赋初值时,可以不指定第一维的长度,但不得省去第二维的长度。如:static int a34=1,2,3,4,5,6,7,8,9,10,11,12;可以写成:static int a 4=1,2,3,4,5,6,7,8,9,10,11,12;同样,static int a 4=0,0,3,0,10;也是正确的。,例10.6 给一个23的2维数组各元素赋值,并输出全部元素的值。#i
14、nclude stdio.h main()int i,j,a23;/*定义数组array*/for(i=0;i2;i+)/*外循环控制行数*/for(j=0;j3;j+)/*内循环控制列数*/scanf(“%d”,例10.7 输出一个3 4数组中每行中的最大元素之值及其位置。main()int i,j,c,max;static int a34=6,-5,11,3,8,9,4,7,2,13,1,-10;for(i=0;imax)max=ai j;c=j;printf(“max=%2d,row=%d,colum=%dn”,max,i+1,c+1);,输出结果:max=11,row=1,colum=
15、3 max=9,row=2,colum=2 max=13,row=3,colum=2,1字符数组的定义 一维字符数组,用于存储和处理1个字符串,其定义格式与1维数值数组一样。二维字符数组,用于同时存储和处理多个字符串,其定义格式与2维数值数组一样。char s18,s2312;2字符数组的初始化 字符数组的初始化,可以通过为每个数组元素指定初值字符来实现。例如:char s38=”asdfggh”;,10.4 字符数组与字符串,char s48=a,b,c,d,e;static char d33=,;3字符串及其结束标志 字符串,是指若干有效字符的序列。C语言中的字符串,可以包括字母、数字、专
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课件 10 数组 字符串 处理
链接地址:https://www.31ppt.com/p-5426537.html