C语言程序设计 教学课件 ppt 作者 张强华 吕新平 第8章

上传人:E**** 文档编号:89346711 上传时间:2019-05-23 格式:PPT 页数:23 大小:90KB
返回 下载 相关 举报
C语言程序设计 教学课件 ppt 作者  张强华 吕新平 第8章_第1页
第1页 / 共23页
C语言程序设计 教学课件 ppt 作者  张强华 吕新平 第8章_第2页
第2页 / 共23页
C语言程序设计 教学课件 ppt 作者  张强华 吕新平 第8章_第3页
第3页 / 共23页
C语言程序设计 教学课件 ppt 作者  张强华 吕新平 第8章_第4页
第4页 / 共23页
C语言程序设计 教学课件 ppt 作者  张强华 吕新平 第8章_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《C语言程序设计 教学课件 ppt 作者 张强华 吕新平 第8章》由会员分享,可在线阅读,更多相关《C语言程序设计 教学课件 ppt 作者 张强华 吕新平 第8章(23页珍藏版)》请在金锄头文库上搜索。

1、第8章 数组,8.1 数组基础 8.2 二维数组 8.3 字符数组,退出,8.1 数组基础,数组是处理多个数据时十分有用的工具。数组可分为数值数组、字符数组、指针数组、结构数组等。 8.1.1 数组类型说明 使用数组之前必须先进行说明或定义。 数组说明或定义的一般形式为: 类型符 数组名数组元素总数; 其中,类型符标明数组的类型,可以是任一种数据类型。 数组名是用户定义的数组标识符。方括号中的常量或常量表达式指定数据元素的总数,也称为数组的长度。,对于数组类型说明应注意以下几点: 数组的类型指数组元素的取值类型。对于一个数组只能有一种类型,其所有元素的数据类型都是此种类型; 数组名必须是合法标

2、识符,也就是说必须符合标识符的书写规定; 数组不能与程序中的其它变量同名; 若用方括号中的整数n来表示数组元素的总数,则数组的第一个元素的下标为0,最后一个为n-1。例如b6表示数组b有6个元素,依次是b0,b1,b2,b3,b4,b5;,不能在方括号中用变量来表示元素的个数,下述说明方式是错误的: main() int n; int an; 以下也是错误的: main() int n=6; int an; 可以使用在预处理define中定义的常量。 允许在同一说明中,说明相同类型的多个数组和多个变量。,8.1.2 数组元素的表示方法 数组元素是数组的基本单元,它是一种变量,其标识方法为数组名

3、后跟一个下标。下标指定元素在数组中的顺序号。数组元素的一般形式为: 数组名下标 其中的下标只能为整型常量或整型表达式。如为小数时,C编译将自动取整。例如,a6,bi+j,bi+都是合法的数组元素。 数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。在语言中只能逐个地使用下标变量, 而不能一次引用整个数组。,例如,单独使用一个下标变量: int a10; a7=6; 例如,使用循环语句逐个使用各下标变量: for(i=0; i10; i+) ai=i*i; 【例8-1】(见课本) 注意,数组定义时不能用如An的形式。而引用某个数组时,可以使用如An=10的形式。,8.1.3 数组的

4、赋值 1 数组初始化赋值 在对数据进行说明或定义时,就给数组中各个元素一个值的方法叫做“数组初始化赋值”。 初始化赋值的一般形式为: 类型说明符 数组名n=值1,值2,. .,值n-1; 在 中的各数据值即为各元素的初值,各值之间用逗号间隔。例如: int a10=0,1,2,3,4,5,6,7,8,9; 相当于: a0=0;a1=1.a9=9; 也可以省略为: int a=0,1,2,3,4,5,6,7,8,9;,对数组的初始赋值还有以下几点规定: (1) 可以只给部分元素赋初值。当 中值的个数少于元素个数时,只给最前面部分元素赋给定值,其余元素赋给0。 例如: int b10=0,2,3,

5、4,5; 表示: b0=0 b1=2 b2=3 b3=4 b4=5 b5,b6,b7,b8,b9的值为0。,(2) 只能给元素逐个赋值,不能给数组整体赋值。 例如: int a10=1,1,1,1,1,1,1,1,1,1; 而不能写为: int a10=1; (3) 如不初始化,则数组的全部元素均为0值。 2 动态赋值 在程序执行过程中对数组赋值叫做动态赋值。通常采用以下几种方法来动态赋值。 (1)用循环语句 (2)用已知数组给另一数组赋值 【例8-3】(见课本) (3)用本数组中已经赋值的元素给没有赋值的元素赋值 【例8-4】(见课本) 【例8-5】(见课本),8.2 二维数组,只有一个下标

6、的数组称为一维数组,其数组元素称为单下标变量。有多个下标的数组称为多维数组, 其数组元素称为多下标变量。 最常用的是二维数组,更高维数的数组与二维数组相似。,8.2.1 二维数组的定义 二维数组类型定义的一般形式是: 类型符 数组名下标1总数下标2总数; 其中下标1总数表示第一维下标的长度,下标2总数表示第二维下标的长度。例如: int a23; 说明了一个二行三列的数组,数组名为a,其下标变量的类型为整型。该数组的下标变量共有23个,即: a00,a01,a02 a10,a11,a12 二维数组存储是按行排列的, 即放完一行之后顺次放入第二行。,8.2.2 二维数组元素的表示方法 二维数组的

7、元素也称为双下标变量,其表示的形式为: 数组名下标1下标2 其中下标应为整型常量或整型表达式。例如: a12 表示a数组二行三列的元素。 下标变量和数组说明在形式中有些相似,但这两者具有完全不同的含义。数组说明的方括号中给出的是某一维的长度,即可取下标的最大值;而数组元素中的下标是该元素在数组中的位置标识。前者只能是常量,后者可以是常量,变量或表达式。,8.2.3 二维数组的初始化 二维数组初始化也是在类型说明时给各下标变量赋以初值。 二维数组可按行分段赋值,也可按行连续赋值。这两种赋初值的结果相同。 1). 按行分段赋值 这时,把一行的内容括起来。例如: int a33=1,2,3,4,5,

8、6,7,8,9 .2). 按行连续赋值 把数组元素顺序赋值。例如: int a53=1,2,3,4,5,6,7,8,9 通常写为如下矩阵形式,比较直观: int a33= 1,2,3, 4,5,6, 7,8,9 ,【例8-6】(见课本) 二维数组初始化赋值应注意以下问题: 可以只对部分元素赋初值,未赋初值的元素自动取0值。 对每一行的第一列元素赋值,未赋值的元素取0值。 如对全部元素赋初值,则第一维的长度可以不给出,因为计算机可以自行判断。 8.2.4 动态赋值 也可以在程序执行过程中对二维数组动态赋值。采用方法与一维数组相似,不过多一层循环。 【例8-7】(见课本),8.3 字符数组,8.3

9、.1字符数组的一般情况 用来存放字符量的数组称为字符数组。字符数组的定义与前面介绍的数值数组相同。其定义格式为: char 数组名下标总数; 字符数组也可以是二维或多维数组,其定义格式为: char 数组名下标1总数下标2总数; 字符数组也允许在类型说明时作初始化赋值。例如: char c10=c, ,p,r,o,g,r,a,m; 未赋值的数组元素,由系统自动赋予0值。 当对全体元素赋初值时也可以省去长度说明。例如: char c=c, ,p,r,o,g,r,a,m; 这时C数组的长度自动定为9。 【例8-8】(见课本),8.3.2 字符串 在语言中没有专门的字符串变量,通常用一个字符数组来存

10、放一个字符串。总是以0作为串的结束符,它不执行任何操作。因此当把一个字符串存入一个数组时,也要把结束符0存入数组,以此作为该字符串是否结束的标志。有了0标志后,就不必再用字符数组的长度来判断字符串的长度了。可以用字符串的方式对数组作初始化赋值。例如: char c=c, ,p,r,o,g,r,a,m; 可写为: char c=“C program“; 或去掉写为: char c=“C program“;,用字符串方式赋值比用字符逐个赋值要多占一个字节,用于存放字符串结束标志0。0是由系统自动加上的,无需程序员在编写程序时加上。由于采用了0标志,所以在用字符串赋初值时一般无须指定数组的长度,而由

11、系统自行处理。在采用字符串方式后,字符数组的输入输出将变得简单方便。 除了上述用字符串赋初值的办法外,还可用printf函数和scanf函数一次性输出输入一个字符数组中的字符串,而不必使用循环语句逐个地输入输出每个字符。 【例8-9】(见课本),总之,字符数组输入输出可以采用以下两种方式:其一,逐个字符输入输出,使用格式符“%c”;其二,一次输入或输出整个字符串,使用格式符“%s”。 【例8-10】(见课本) 【例8-11】(见课本) 编程技巧如果可能,也可以用下画线(_)代替空格。 在语言中规定,数组名就代表了该数组的首地址。整个数组是以首地址开头的一块连续的内存单元。,8.3.3 字符串常

12、用函数 C语言提供了丰富的字符串处理函数,大致可分为字符串的输入、输出、合并、修改、比较、转换、复制、搜索几类。要使用输入输出的字符串函数,必须在使用前包含头文件“stdio.h“ ; 使用其它字符串函数则应包含头文件“string.h“。 注意,此类题目在考试时经常出现。 下面介绍几个最常用的字符串函数。 1 字符串输出函数 puts 格式:puts (字符数组名) 功能:把字符数组中的字符串输出到显示器。即在屏幕上显 示该字符串。 【例8-12】(见课本),2 字符串输入函数 gets 格式:gets (字符数组名) 功能:从键盘上输入一个字符串。本函数得到一个函数值,即为该字符数组的首地

13、址。 【例8-13】(见课本) 当输入的字符串中含有空格时,输出仍为全部字符串。函数并不以空格作为字符串输入结束的标志,而只以回车作为输入结束。这是与scanf函数不同的。应该加以注意。 3 字符串连接函数 strcat 格式:strcat (字符数组名1,字符数组名2) 功能:把字符数组2中的字符串连接到字符数组1中字符串的后面,并删去字符串1后的串标志“0”。本函数返回值是字符数组1的首地址。要注意的是,字符数组1应定义足够的长度,否则不能全部装入被连接的字符串。 【例8-14】(见课本),4 字符串拷贝函数 strcpy 格式:strcpy (字符数组名1,字符数组名2) 功能:把字符数

14、组2中的字符串拷贝到字符数组1中。串结束标志“0”也一同拷贝。字符数名2, 也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。 本函数要求字符数组1应有足够的长度,否则不能全部装入所拷贝的字符串。 本函数执行后,字符数组1中原来的内容不存在了(改为新的内容)。 【例8-15】(见课本) 特别应该注意,C语言不允许用赋值语句把字符串赋给一个字符数组。如下语句是错误的: str1=“ok“; str1=str2; 以下格式把字符数组2最前面的n个字符拷贝到字符数组1中,并给字符数组1加上结束符0: 格式:strcpy (字符数组名1,字符数组名2,n),5 字符串比较函数 strcm

15、p 格式:strcmp(字符数组名1,字符数组名2) 功能:按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。 字符串1=字符串2,返回值=0; 字符串1字符串2,返回值0; 字符串1字符串2,返回值0。 本函数也可用于比较两个字符串常量,或比较数组和字符串常量。 【例8-16】(见课本),6 测字符串长度函数 strlen 格式:strlen(字符数组名) 功能:测字符串的实际长度(不含字符串结束标志0) 并作为函数返回值。 【例8-17】(见课本) 7 大写变小写函数 strlwr 格式:strlwr (字符串) 功能:把字符串中的大写字母变成小写字母。 【例8-18】(见课本) 8 小写变大写函数 strupr 格式:strupr (字符串) 功能:把字符串中的小写字母变成大写字母。 【例8-19】(见课本),

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

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

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