C语言程序设计第六章PPT课件
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
char str[20]; scanf(“%s”,str); /*str是地址 */ 2. printf的s格式串可以实现字符串的输出,例: printf(“%s”,str); /*str是地址 */ 3. gets从终端输入字符串行 形式:gets(str); str是存放字符串的起始地址。可以是字符数组名、字符数组
第3页/共16页
6.2 二维和多维数组
6.2.2 二维数组的引用
引用二维数组元素时必须带有两个下标,形式如下: 数组名[下标1][下标2]
6.2.3 二维数组存储
二维数组在内存中占据一系列连续的存储单元,数组元素按 行顺序存放,先放行下标是0的元素,再放行下标是1的元 素 , . . . a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3]
第11页/共16页
6.3 字符数组和字符串
6.3.4.1字符串输入输出 --包含头文件stdio.h 4.puts向终端输出字符串 形式:puts(str); str是输出字符串的起始地址,从这一地址开始,依次输出存
储单元中的字符,直到遇到第一个‘\0’为止。并自动输出 一个换行符。 str是存放字符串的起始地址。可以是字符数组名、字符数组 元素地址或下一章将要介绍的字符指针。 6.3.4.2字符串处理函数 -- 包含头文件string.h 1.字符串复制函数strcpy。调用形式如下:
第7页/共16页
6.3 字符数组和字符串
6.3.2 字符串
C语言中没有字符串变量,通过字符数组可以实现相关的功能, 字符串是字符数组最普通的具体应用。
当要用字符数组存储(可能变化的)字符串时,应考虑: (1)定义变量时,考虑可能存储的最长字符串的长度。 (2)在字符数组中顺序存放字符串的每一个字符,最后加上
数组int a[3][4]的存储示意
第4页/共16页
6.2 二维和多维数组
6.2.4 二维数组初始化
二维数组定义时也可以用花括号对全部或前面一部分数 组元素赋初始化。通过初始化也可以定义二维数组。
例: 解释下面数组定义和初始化的意义:
int a[2][3]={1,2,3,4,5,6}; int a[2][3]={1,2}; int a[2][3]={{1,2,3}, {4,5,6} }; int a[3][4]={{1,2}, {3}, {4,5},{6}}; int a[3][4]={{1,2},{3}, }; int a[2][3]={1,2,3,4,5,6,7,8}; int a[][3]={ {1,2,3},{4,5},{6}}; int a[][3]={ 1,2,3,4,5,6,7};
实参数组和形参数组的类型必须一致,如果需要在函数中知 道 处 理 元 素 的 个 数 , 可第1以4页另/共设16一页个 表 示 元 素 个 数 的 参 数 。
第六章 数组
本章主要知识点:
数组基本概念。数组定义,数组类型,数组唯数,数组存储, 数组元素和数组下标概念,数组说明,初始化方法,数组元素 下标的范围,正确引用数组中的元素,数组元素的输入和输出 方法,多唯数组元素的排列方法和初始化等问题。
第1页/共16页
6.1一维数组
6.1.4 一维数组初始化
例: 解释下面数组定义和初始化的意义: int a[6]={1,2,3,4,5,6}; int a[6]={1,2}; int a[3]={1,2,3,4}; int a[]={1,2,3,4,5,6}; 讨论例题的结果及原因。
6.1.5 一维数组实例
C语言中用双引号”括起来的任意字符序列,就是字符串。 C语言中,顺序书写的两个字符串中间仅由空格、换行符或制
表符分隔,编译时,自动将这些字符串连接成一个长的字 符串。 字符串里不能直接出现双引号”(被认为是结束符),需用 换意序列“\””表示双引号字符” 对程序中的字符串字面量,系统用字符数组方式保存,连续、 顺序存放每一个字符,最后加一个空字符“\0”做结束标志。 结束标志“\0”是字符数组与字符串的区别。 讨论程序中为什么需要字符串的结束标志?
strcpy(s1,s2)
第12页/共16页
6.3 字符数组和字符串
6.3.4.2字符串处理函数 3.求字符串长度函数strlen。调用形式如下:
strlen(s) 4.字符串比较函数strcmp。调用形式如下:
strcmp(s1,s2) 讨论C语言字符串相等的概念和字符比较规则 6.3.4.3字符判断函数 ---包含头文件ctype.h。 字符判断函数大部分是用宏实现的。返回值都是真和假值,
第2页/共16页
6.2 二维和多维数组
6.2.1 二维数组的定义
二维数组:数组中每个元素带有两个下标。 定义形式为:
类型说明符 数组名[常量表达式1] [常量表达式 2]; 逻辑上,可把二维数组看成是一个矩阵,常量表达式1 表示矩阵有几行,常量表达式2表示矩阵的列数。 可以把二维数组看作是一种特殊的一维数组,它的元素 又是一维数组。即二维数组是数组的数组。
6.3 字符数组和字符串
6.3.3 字符串数组
字符串数组就是数组中的每一个元素又都是存放字 符串的数组。
可以将一个二维字符数组看作一个字符串数组。 例:char line[10][80]; 数组line共有10个元素,
每个元素可以存放80个字符(79个普通字符,一 个结束字符),第一个下标决定字符串个数,第 二个下标决定字符串的最大长度。line是有10个 字符串的数组,这些字符串的最大长度为79。
“\0”。 (3)对字符数组初值赋值方法的扩充,例: char str[]= “China”; char str[]={“China”}; char str[10]={“China”};
char str[5]=“morning!”; 字符串操作中,要注意控制不要超出字符数组的空间限制。
第8页/共16页
6.2.5 二维数组实例 第5页/共16页
6.3 字符数组和字符串
6.3.1 字符数组
字符数组是元素数据类型是字符类型的一维数组。 字符数组引用、存储、初始化的方法都与一维数 组相同,只是要注意字符数组的元素是字符,有 特殊的字面表示格式。
字符数组初始化的方法也和一维数组相同。 例:char s[5]={‘1’,’2’,’3’,’4’,’5’};
第9页/共16页
6.3 字符数组和字符串
6.3.3 字符串数组
字符串数组的初始化方法: 例:char str[3][5]={“a”, “ ab”, “abc”}; /*根据定
义的大小初始化*/ char str[][5]={“a”, “ab”, “abc”}; /*根据右边
字符串的个数,定义数组大小*/ 本数组的存储示意如下
6.1.4 一维数组初始化
一维数组定义时可以用花括号对全部或前面一部分数组元素赋初值, 叫初始化。通过初始化也可以定义一维数组。
数组也是变量,在作用域和存在期方面与简单变量的规定相同,全 局数组在程序开始执行前建立,在静态存储区存储,定义全局数 组时,可以进行初始化,如果没有,系统自动将全局数组的值初 始化为0。局部数组存储在动态存储区中,建立时如果没有进行 初始化,其值是不确定的。
第二,可以利用全局变量,将要处理的数组定义成全局数组, 使每一个函数都能操作需要的数组。
用数组作函数的参数,这样可以在函数里处理整个数组的数 据,也可以通过不同调用完成同一函数对不同数组的同样 计算。
数组名作函数参数,实参形参传递的是数组名表示的地址值 (依然是值传递)。因此,实参和形参数组操作的是同一 片空间。形参数组操作可以改变实参数组元素的值。这是 用数组作参数和用简单变量作参数最大的不同。
6.1一维数组
6.1.3 一维数组存储
C系统定义数组时,根据定义语句中的空间需求,分配足够的的存 储空间,数组元素顺序存放在这片存储单元中。下标为0的元素 排在最前面,每个元素占据的存储空间完全相同。
计算数组的空间开销,应该使用sizeof算符,方法有二: (1)存储容量= 数组元素个数*sizeof(数组元素类型名) (2)存储容量= sizeof(数组名)
char s[5]={‘1’,’2’}; char s[]={‘1’,’2’,’3’,’4’,’5’}; 初始化时没有赋值的元素值为空是编码为0的字符, 叫 空 字 符, 用 ’ \0’ 表 示 。它即不是空格字符 (32),也不是0字符(48)。
6.3.2 字符串
即 非 0 和 0 。 如 isalpha(c) : 判 断 c 是 否 为 字 母 ; isdigit(c):判断c是否为数字;isupper(c ) : 判断c 是否为大写字母….. 第。13页/共16页
6.4 数组作为函数的参数
首先,如果数组元素属于基本类型,这些元素可以作为基本 类型使用,当然可以作为函数的实参,送给函数处理,实 参形参传递的是数组元素的值,形参操作不影响实参的值, 处理的结果以返回值的方式带回,也可以赋给数组元素。 这种方式处理数组元素与处理基本类型的变量没有什么区 别。
第10页/共16页
6.3 字符数组和字符串
6.3.4 字符串函数
C标准函数库中提供了许多相关的函数,它们的原型说明在 两个头文件中,ctype.h说明了一组字符类型判断函数, string.h说明了许多字符串处理函数。另外标准输入输出 函数库中还有用于字符串输入和输出的函数。
6.3.4.1字符串输入输出 1. scanf的s 格式串可以实现字符串的整体输入。例:
字符型数组。字符型数组与其他数组的区别,字符串及其特点, 字符型数组初始化,使用不同的库函数输入输出字符串,对字 符串的简单处理。
数组与函数间的关系。将数组作为参数在函数之间传递,将数
组中的元素作为参数在函数之间传递。
回本章首页
常见的使用数组的算法
第15页/共16页
感谢您的欣赏!
第16页/共16页
第3页/共16页
6.2 二维和多维数组
6.2.2 二维数组的引用
引用二维数组元素时必须带有两个下标,形式如下: 数组名[下标1][下标2]
6.2.3 二维数组存储
二维数组在内存中占据一系列连续的存储单元,数组元素按 行顺序存放,先放行下标是0的元素,再放行下标是1的元 素 , . . . a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3]
第11页/共16页
6.3 字符数组和字符串
6.3.4.1字符串输入输出 --包含头文件stdio.h 4.puts向终端输出字符串 形式:puts(str); str是输出字符串的起始地址,从这一地址开始,依次输出存
储单元中的字符,直到遇到第一个‘\0’为止。并自动输出 一个换行符。 str是存放字符串的起始地址。可以是字符数组名、字符数组 元素地址或下一章将要介绍的字符指针。 6.3.4.2字符串处理函数 -- 包含头文件string.h 1.字符串复制函数strcpy。调用形式如下:
第7页/共16页
6.3 字符数组和字符串
6.3.2 字符串
C语言中没有字符串变量,通过字符数组可以实现相关的功能, 字符串是字符数组最普通的具体应用。
当要用字符数组存储(可能变化的)字符串时,应考虑: (1)定义变量时,考虑可能存储的最长字符串的长度。 (2)在字符数组中顺序存放字符串的每一个字符,最后加上
数组int a[3][4]的存储示意
第4页/共16页
6.2 二维和多维数组
6.2.4 二维数组初始化
二维数组定义时也可以用花括号对全部或前面一部分数 组元素赋初始化。通过初始化也可以定义二维数组。
例: 解释下面数组定义和初始化的意义:
int a[2][3]={1,2,3,4,5,6}; int a[2][3]={1,2}; int a[2][3]={{1,2,3}, {4,5,6} }; int a[3][4]={{1,2}, {3}, {4,5},{6}}; int a[3][4]={{1,2},{3}, }; int a[2][3]={1,2,3,4,5,6,7,8}; int a[][3]={ {1,2,3},{4,5},{6}}; int a[][3]={ 1,2,3,4,5,6,7};
实参数组和形参数组的类型必须一致,如果需要在函数中知 道 处 理 元 素 的 个 数 , 可第1以4页另/共设16一页个 表 示 元 素 个 数 的 参 数 。
第六章 数组
本章主要知识点:
数组基本概念。数组定义,数组类型,数组唯数,数组存储, 数组元素和数组下标概念,数组说明,初始化方法,数组元素 下标的范围,正确引用数组中的元素,数组元素的输入和输出 方法,多唯数组元素的排列方法和初始化等问题。
第1页/共16页
6.1一维数组
6.1.4 一维数组初始化
例: 解释下面数组定义和初始化的意义: int a[6]={1,2,3,4,5,6}; int a[6]={1,2}; int a[3]={1,2,3,4}; int a[]={1,2,3,4,5,6}; 讨论例题的结果及原因。
6.1.5 一维数组实例
C语言中用双引号”括起来的任意字符序列,就是字符串。 C语言中,顺序书写的两个字符串中间仅由空格、换行符或制
表符分隔,编译时,自动将这些字符串连接成一个长的字 符串。 字符串里不能直接出现双引号”(被认为是结束符),需用 换意序列“\””表示双引号字符” 对程序中的字符串字面量,系统用字符数组方式保存,连续、 顺序存放每一个字符,最后加一个空字符“\0”做结束标志。 结束标志“\0”是字符数组与字符串的区别。 讨论程序中为什么需要字符串的结束标志?
strcpy(s1,s2)
第12页/共16页
6.3 字符数组和字符串
6.3.4.2字符串处理函数 3.求字符串长度函数strlen。调用形式如下:
strlen(s) 4.字符串比较函数strcmp。调用形式如下:
strcmp(s1,s2) 讨论C语言字符串相等的概念和字符比较规则 6.3.4.3字符判断函数 ---包含头文件ctype.h。 字符判断函数大部分是用宏实现的。返回值都是真和假值,
第2页/共16页
6.2 二维和多维数组
6.2.1 二维数组的定义
二维数组:数组中每个元素带有两个下标。 定义形式为:
类型说明符 数组名[常量表达式1] [常量表达式 2]; 逻辑上,可把二维数组看成是一个矩阵,常量表达式1 表示矩阵有几行,常量表达式2表示矩阵的列数。 可以把二维数组看作是一种特殊的一维数组,它的元素 又是一维数组。即二维数组是数组的数组。
6.3 字符数组和字符串
6.3.3 字符串数组
字符串数组就是数组中的每一个元素又都是存放字 符串的数组。
可以将一个二维字符数组看作一个字符串数组。 例:char line[10][80]; 数组line共有10个元素,
每个元素可以存放80个字符(79个普通字符,一 个结束字符),第一个下标决定字符串个数,第 二个下标决定字符串的最大长度。line是有10个 字符串的数组,这些字符串的最大长度为79。
“\0”。 (3)对字符数组初值赋值方法的扩充,例: char str[]= “China”; char str[]={“China”}; char str[10]={“China”};
char str[5]=“morning!”; 字符串操作中,要注意控制不要超出字符数组的空间限制。
第8页/共16页
6.2.5 二维数组实例 第5页/共16页
6.3 字符数组和字符串
6.3.1 字符数组
字符数组是元素数据类型是字符类型的一维数组。 字符数组引用、存储、初始化的方法都与一维数 组相同,只是要注意字符数组的元素是字符,有 特殊的字面表示格式。
字符数组初始化的方法也和一维数组相同。 例:char s[5]={‘1’,’2’,’3’,’4’,’5’};
第9页/共16页
6.3 字符数组和字符串
6.3.3 字符串数组
字符串数组的初始化方法: 例:char str[3][5]={“a”, “ ab”, “abc”}; /*根据定
义的大小初始化*/ char str[][5]={“a”, “ab”, “abc”}; /*根据右边
字符串的个数,定义数组大小*/ 本数组的存储示意如下
6.1.4 一维数组初始化
一维数组定义时可以用花括号对全部或前面一部分数组元素赋初值, 叫初始化。通过初始化也可以定义一维数组。
数组也是变量,在作用域和存在期方面与简单变量的规定相同,全 局数组在程序开始执行前建立,在静态存储区存储,定义全局数 组时,可以进行初始化,如果没有,系统自动将全局数组的值初 始化为0。局部数组存储在动态存储区中,建立时如果没有进行 初始化,其值是不确定的。
第二,可以利用全局变量,将要处理的数组定义成全局数组, 使每一个函数都能操作需要的数组。
用数组作函数的参数,这样可以在函数里处理整个数组的数 据,也可以通过不同调用完成同一函数对不同数组的同样 计算。
数组名作函数参数,实参形参传递的是数组名表示的地址值 (依然是值传递)。因此,实参和形参数组操作的是同一 片空间。形参数组操作可以改变实参数组元素的值。这是 用数组作参数和用简单变量作参数最大的不同。
6.1一维数组
6.1.3 一维数组存储
C系统定义数组时,根据定义语句中的空间需求,分配足够的的存 储空间,数组元素顺序存放在这片存储单元中。下标为0的元素 排在最前面,每个元素占据的存储空间完全相同。
计算数组的空间开销,应该使用sizeof算符,方法有二: (1)存储容量= 数组元素个数*sizeof(数组元素类型名) (2)存储容量= sizeof(数组名)
char s[5]={‘1’,’2’}; char s[]={‘1’,’2’,’3’,’4’,’5’}; 初始化时没有赋值的元素值为空是编码为0的字符, 叫 空 字 符, 用 ’ \0’ 表 示 。它即不是空格字符 (32),也不是0字符(48)。
6.3.2 字符串
即 非 0 和 0 。 如 isalpha(c) : 判 断 c 是 否 为 字 母 ; isdigit(c):判断c是否为数字;isupper(c ) : 判断c 是否为大写字母….. 第。13页/共16页
6.4 数组作为函数的参数
首先,如果数组元素属于基本类型,这些元素可以作为基本 类型使用,当然可以作为函数的实参,送给函数处理,实 参形参传递的是数组元素的值,形参操作不影响实参的值, 处理的结果以返回值的方式带回,也可以赋给数组元素。 这种方式处理数组元素与处理基本类型的变量没有什么区 别。
第10页/共16页
6.3 字符数组和字符串
6.3.4 字符串函数
C标准函数库中提供了许多相关的函数,它们的原型说明在 两个头文件中,ctype.h说明了一组字符类型判断函数, string.h说明了许多字符串处理函数。另外标准输入输出 函数库中还有用于字符串输入和输出的函数。
6.3.4.1字符串输入输出 1. scanf的s 格式串可以实现字符串的整体输入。例:
字符型数组。字符型数组与其他数组的区别,字符串及其特点, 字符型数组初始化,使用不同的库函数输入输出字符串,对字 符串的简单处理。
数组与函数间的关系。将数组作为参数在函数之间传递,将数
组中的元素作为参数在函数之间传递。
回本章首页
常见的使用数组的算法
第15页/共16页
感谢您的欣赏!
第16页/共16页