C语言程序设计教程 教学课件 ppt 作者 陈宝贤 第10章数组与字符串处理

上传人:E**** 文档编号:89347110 上传时间:2019-05-23 格式:PPT 页数:56 大小:282KB
返回 下载 相关 举报
C语言程序设计教程 教学课件 ppt 作者  陈宝贤 第10章数组与字符串处理_第1页
第1页 / 共56页
C语言程序设计教程 教学课件 ppt 作者  陈宝贤 第10章数组与字符串处理_第2页
第2页 / 共56页
C语言程序设计教程 教学课件 ppt 作者  陈宝贤 第10章数组与字符串处理_第3页
第3页 / 共56页
C语言程序设计教程 教学课件 ppt 作者  陈宝贤 第10章数组与字符串处理_第4页
第4页 / 共56页
C语言程序设计教程 教学课件 ppt 作者  陈宝贤 第10章数组与字符串处理_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《C语言程序设计教程 教学课件 ppt 作者 陈宝贤 第10章数组与字符串处理》由会员分享,可在线阅读,更多相关《C语言程序设计教程 教学课件 ppt 作者 陈宝贤 第10章数组与字符串处理(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 名学生的成绩建立一个名

3、为 s 的数组,30 个成绩顺序存放在 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、 一维数组有5个数组元素: a20, a21, a22, a23 , a24 数组元素的数值类型均为: 整型(int ) a1, a2, 分别代表各自数组的起始地址 &a10 &a11 &a12 &a13 为各数组元素的地址,2. 数组元素的引用 引用数组元素的形式: 数组名下标表达式 (1) “下标表达式”可以是任何非负整型数据,取值范围是0(元素个数-1)。 int a8; 数组元数:a0 a7 (2)在C语言中,数组作为1个整体,不能参加数据运算,只能对单个的元素进行处理。 (3)下标不能越界。 (4)下标变量和我们前面的简单变量具有相同的地位和作用,可以象使用简单变量一样使用。,例10

6、.1 数组元素的引用。 main() int i,a10; for(i=0;i=0;i-) printf(“%d“,ai); 本例中第一个循环语句给a数组各元素赋值,然后用第二个循环语句,输出数组元素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)根据

7、存储类型的不同,数组有静态数组(static)和动态数组(auto)之分; (2)根据定义的位置不同: 在函数内部定义的数组,称为内部数组。 在函数外部定义的数组,称为外部数组。 (3)赋值语句和输入语句均可使数组中的元素赋初值,但占用运行时间。 简捷的方法是在程序运行之前使数组初始化。,3. 一维数组元素的初始化格式 数据类型 数组名常量表达式初值表; (1)只给部分元素赋初值。当 中值的个数少于元素个数时,只给前面部分元素赋值。 例如: int a10=0,1,2,3,4; 表示只给a0a45个元素赋值,而后5个元素自动赋0值。 (2)只能给元素逐个赋值,不能给数组整体赋值。 例如给十个元

8、素全部赋1值,只能写为: int a10=1,1,1,1,1,1,1,1,1,1; 而不能写为:int a10=1;,(3)如不给数组赋初值,则元素值不确定,对于static型的数组,系统会自动赋以0或0。 (4)如给全部元素赋值,则在数组说明中,可以不给出数组元素的个数,编译系统根据初值个数确定数组长度。 例如: 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,

9、 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 = 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)比较第一个数与第二个数,若为逆序

10、a1a2,则交换;然后比较第二个数与第三个数;依次类推,直至第9个数和第10个数比较为止第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上。 (2)对前9个数进行第二趟冒泡排序,结果使次大的数被安置在第9个元素位置。 (3)重复上述过程,共经过9趟冒泡排序后,排序结束。,例10.5用冒泡法对个数由小到大排序。排序的N-S图如图10.2所示。,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

11、 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) 二维数组中元素的排列顺序为按行按列。即存放完第1 行的元素后再接着存放第 2 行的元素,依次类推。 a00 a01 a03 a03 a10 a11 a12 a13 a20 a21 a22 a23,我们可把二维数组看作是一种特殊的一维数组

12、,它的元素又是一个一维数组。例如:a34可看成 a0-a00 a01 a02 a03 a a1-a10 a11 a12 a13 a2-a20 a21 a22 a23 a0 a2每个元素又是一个包含4个元素的一维数组。 数组名: a 代表整个数组的首地址 a 0:数组第0行的首地址 即第1个元素地址,2. 二维数组元素的引用形式为: 数组名行下标表达式列下标表达式 (1) “行下标表达式”和“列下标表达式”,都应是整型表达式或符号常量。 (2) “行下标表达式”和“列下标表达式”的值,都应在已定义数组大小的范围内。 假设有数组x34,则可用的行下标范围为02,列下标范围为03。 (3) 对基本数

13、据类型的变量所能进行的操作,也都适合于相同数据类型的二维数组元素。,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 a34=1,5,9; static int a34=1,0,6,0,0,11; static int a34=1,5,6; static int

14、 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维数组各元素赋值,并输出全部元素的值。 #include “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)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号