C语言程序设计第六章实用教案_第1页
C语言程序设计第六章实用教案_第2页
C语言程序设计第六章实用教案_第3页
C语言程序设计第六章实用教案_第4页
C语言程序设计第六章实用教案_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、6.1.3 6.1.3 一维数组存储一维数组存储C C系统定义数组时,根据定义语句中的空间需求,分配足系统定义数组时,根据定义语句中的空间需求,分配足够的的存储空间,数组元素顺序存放在这片存储单元够的的存储空间,数组元素顺序存放在这片存储单元中。下标为中。下标为0 0的元素排在最前面,每个元素占据的存储的元素排在最前面,每个元素占据的存储空间完全相同。空间完全相同。计算数组的空间开销,应该使用计算数组的空间开销,应该使用sizeofsizeof算符,方法有二:算符,方法有二:(1 1)存储容量)存储容量(cn ch rn lin)= (cn ch rn lin)= 数组元素个数数组元素个数*

2、*sizeofsizeof(数组元素类型名)(数组元素类型名)(2 2)存储容量)存储容量(cn ch rn lin)= sizeof(cn ch rn lin)= sizeof(数组(数组名)名)6.1.4 6.1.4 一维数组初始化一维数组初始化一维数组定义时可以用花括号对全部或前面一部分数组一维数组定义时可以用花括号对全部或前面一部分数组元素赋初值,叫初始化。通过初始化也可以定义一维元素赋初值,叫初始化。通过初始化也可以定义一维数组。数组。数组也是变量,在作用域和存在期方面与简单变量的规数组也是变量,在作用域和存在期方面与简单变量的规定相同,全局数组在程序开始执行前建立,在静态存定相同,

3、全局数组在程序开始执行前建立,在静态存储区存储,定义全局数组时,可以进行初始化,如果储区存储,定义全局数组时,可以进行初始化,如果没有,系统自动将全局数组的值初始化为没有,系统自动将全局数组的值初始化为0 0。局部数组。局部数组存储在动态存储区中,建立时如果没有进行初始化,存储在动态存储区中,建立时如果没有进行初始化,其值是不确定的。其值是不确定的。 6.16.1一维数组一维数组 第1页/共16页第一页,共17页。6.1.4 6.1.4 一维数组初始化一维数组初始化例例: : 解释下面解释下面(xi mian)(xi mian)数组定义和初始化的数组定义和初始化的意义:意义: int a6=1

4、,2,3,4,5,6; int a6=1,2,3,4,5,6; int a6=1,2; int a6=1,2; int a3=1,2,3,4; int a3=1,2,3,4; int a=1,2,3,4,5,6; int a=1,2,3,4,5,6; 讨论例题的结果及原因。讨论例题的结果及原因。6.1.5 6.1.5 一维数组实例一维数组实例 6.16.1一维数组一维数组 第2页/共16页第二页,共17页。6.2.1 6.2.1 二维数组的定义二维数组的定义 二维数组:数组中每个元素带有两个下标。二维数组:数组中每个元素带有两个下标。 定义形式为:定义形式为: 类型说明符类型说明符 数组名数组

5、名 常量表达式常量表达式1 1 常量表达式常量表达式22; 逻辑上,可把二维数组看成逻辑上,可把二维数组看成(kn chn)(kn chn)是一个是一个矩阵,常量表达式矩阵,常量表达式1 1表示矩阵有几行,常量表达表示矩阵有几行,常量表达式式2 2表示矩阵的列数。表示矩阵的列数。 可以把二维数组看作是一种特殊的一维数组,它可以把二维数组看作是一种特殊的一维数组,它的元素又是一维数组。即二维数组是数组的数的元素又是一维数组。即二维数组是数组的数组。组。 讨论讨论 int a34; int a34; 的矩阵理解和数组之数组的矩阵理解和数组之数组理解。理解。讨论多维数组的理解问题。讨论多维数组的理解

6、问题。6.2 6.2 二维和多维数组二维和多维数组 第3页/共16页第三页,共17页。6.2.2 二维数组的引用二维数组的引用引用二维数组元素时必须带有两个下标,形式如引用二维数组元素时必须带有两个下标,形式如下:下: 数组名数组名下标下标1下标下标26.2.3 二维数组存储二维数组存储 二维数组在内存中占据一系列连续二维数组在内存中占据一系列连续(linx)的存的存储单元,数组元素按行顺序存放,先放行下标是储单元,数组元素按行顺序存放,先放行下标是0的元素,再放行下标是的元素,再放行下标是1的元素,的元素,. 数组数组int a34的存储示意的存储示意 6.2 6.2 二维和多维数组二维和多

7、维数组 a00a01a02a03a10a11a12a13a20a21a22a23第4页/共16页第四页,共17页。6.2.4 6.2.4 二维数组初始化二维数组初始化 二维数组定义时也可以用花括号对全部或前面二维数组定义时也可以用花括号对全部或前面(qin mian)(qin mian)一部分数组元素赋初始化。通过一部分数组元素赋初始化。通过初始化也可以定义二维数组。初始化也可以定义二维数组。 例:例: 解释下面数组定义和初始化的意义:解释下面数组定义和初始化的意义:int a23=1,2,3,4,5,6;int a23=1,2,3,4,5,6;int a23=1,2; int a23=1,2

8、; int a23=1,2,3, 4,5,6 ; int a23=1,2,3, 4,5,6 ; int a34=1,2, 3, 4,5,6; int a34=1,2, 3, 4,5,6; int a34=1,2,3, ; int a34=1,2,3, ; int a23=1,2,3,4,5,6,7,8; int a23=1,2,3,4,5,6,7,8; int a3= 1,2,3,4,5,6; int a3= 1,2,3,4,5,6; int a3= 1,2,3,4,5,6,7; int a3= 1,2,3,4,5,6,7; 6.2.5 6.2.5 二维数组实例二维数组实例6.2 6.2 二维

9、和多维数组二维和多维数组 第5页/共16页第五页,共17页。6.3.1 6.3.1 字符数组字符数组字符数组是元素数据类型是字符类型的一维数组。字符数组是元素数据类型是字符类型的一维数组。字符数组引用、存储、初始化的方法都与一维字符数组引用、存储、初始化的方法都与一维数组相同,只是要注意字符数组的元素是字符,数组相同,只是要注意字符数组的元素是字符,有特殊的字面表示格式。有特殊的字面表示格式。 字符数组初始化的方法也和一维数组相同。字符数组初始化的方法也和一维数组相同。 例:例:char char s5=1,2,3,4,5; s5=1,2,3,4,5; char s5=1,2; char s5

10、=1,2; char char s=1,2,3,4,5; s=1,2,3,4,5; 初始化时没有赋值的元素值为空是编码初始化时没有赋值的元素值为空是编码(bin (bin m)m)为为0 0的字符,叫空字符,用的字符,叫空字符,用00表示。它表示。它即不是空格字符(即不是空格字符(3232),也不是),也不是0 0字符(字符(4848)。)。 6.3 6.3 字符字符(z f)(z f)数组和字符数组和字符(z f)(z f)串串 第6页/共16页第六页,共17页。6.3.2 6.3.2 字符串字符串 C C语言中用双引号语言中用双引号”括起来的任意字符序列,就是字符括起来的任意字符序列,就是

11、字符串。串。C C语言中,顺序书写的两个字符串中间仅由空格、换行语言中,顺序书写的两个字符串中间仅由空格、换行符或制表符分隔,编译时,自动将这些字符串连接符或制表符分隔,编译时,自动将这些字符串连接成一个长的字符串。成一个长的字符串。 字符串里不能直接出现双引号字符串里不能直接出现双引号”(被认为是结束符),(被认为是结束符),需用需用(x yn)(x yn)换意序列换意序列“”“”表示双引号字符表示双引号字符”对程序中的字符串字面量,系统用字符数组方式保存,对程序中的字符串字面量,系统用字符数组方式保存,连续、顺序存放每一个字符,最后加一个空字符连续、顺序存放每一个字符,最后加一个空字符“0

12、”“0”做结束标志。做结束标志。结束标志结束标志“0”“0”是字符数组与字符串的区别。是字符数组与字符串的区别。讨论程序中为什么需要字符串的结束标志?讨论程序中为什么需要字符串的结束标志? 讨论讨论C C语言表示字符串长度的方法语言表示字符串长度的方法 6.3 6.3 字符字符(z f)(z f)数组和字符数组和字符(z f)(z f)串串 第7页/共16页第七页,共17页。6.3.2 6.3.2 字符串字符串 C C语言中没有字符串变量,通过字符数组可以实现相语言中没有字符串变量,通过字符数组可以实现相关的功能,字符串是字符数组最普通的具体应用。关的功能,字符串是字符数组最普通的具体应用。当

13、要用字符数组存储(可能变化的)字符串时,应当要用字符数组存储(可能变化的)字符串时,应考虑:考虑:(1 1)定义变量时,考虑可能存储的最长字符串的长)定义变量时,考虑可能存储的最长字符串的长度。度。(2 2)在字符数组中顺序存放字符串的每一个字符,)在字符数组中顺序存放字符串的每一个字符,最后最后(zuhu)(zuhu)加上加上“0”“0”。(3 3)对字符数组初值赋值方法的扩充,例:)对字符数组初值赋值方法的扩充,例:char str= “China”; char str= “China”; char str=“China”; char str=“China”; char str10=“Ch

14、ina”; char str10=“China”; char str5=“morning!”; char str5=“morning!”; 字符串操作中,要注意控制不要超出字符数组的空字符串操作中,要注意控制不要超出字符数组的空间限制。间限制。 6.3 6.3 字符字符(z f)(z f)数组和字符数组和字符(z f)(z f)串串 第8页/共16页第八页,共17页。6.3.3 6.3.3 字符串数组字符串数组字符串数组就是数组中的每一个元素又都是存放字符串数组就是数组中的每一个元素又都是存放字符串的数组。字符串的数组。 可以将一个二维字符数组看作一个字符串数组。可以将一个二维字符数组看作一个

15、字符串数组。例:例:char line1080; char line1080; 数组数组lineline共有共有(n (n yu)10yu)10个元素,每个元素可以存放个元素,每个元素可以存放8080个字符个字符(7979个普通字符,一个结束字符),第一个下标个普通字符,一个结束字符),第一个下标决定字符串个数,第二个下标决定字符串的最大决定字符串个数,第二个下标决定字符串的最大长度。长度。lineline是有是有1010个字符串的数组,这些字符串个字符串的数组,这些字符串的最大长度为的最大长度为7979。 6.3 6.3 字符字符(z f)(z f)数组和字符数组和字符(z f)(z f)串

16、串 第9页/共16页第九页,共17页。6.3.3 6.3.3 字符串数组字符串数组字符串数组的初始化方法:字符串数组的初始化方法:例:例:char str35=“a”, “ ab”, “abc”; char str35=“a”, “ ab”, “abc”; / /* *根据定义的大小初始化根据定义的大小初始化* */ / char str5=“a”, “ab”, “abc”; char str5=“a”, “ab”, “abc”; / /* *根据右边字符串的个数,定义数组大小根据右边字符串的个数,定义数组大小* */ /本数组的存储示意本数组的存储示意(shy)(shy)如下如下 6.3 6

17、.3 字符字符(z f)(z f)数组和字符数组和字符(z f)(z f)串串 第10页/共16页第十页,共17页。6.3.4 6.3.4 字符串函数字符串函数 C C标准函数库中提供了许多相关的函数,它们的原型说明在标准函数库中提供了许多相关的函数,它们的原型说明在两个头文件中,两个头文件中,ctype.hctype.h说明了一组字符类型说明了一组字符类型(lixng)(lixng)判断函数,判断函数,string.hstring.h说明了许多字符串处理函数。另外说明了许多字符串处理函数。另外标准输入输出函数库中还有用于字符串输入和输出的函标准输入输出函数库中还有用于字符串输入和输出的函数。

18、数。6.3.4.16.3.4.1字符串输入输出字符串输入输出 1. scanf1. scanf的的s s 格式串可以实现字符串的整体输入。例:格式串可以实现字符串的整体输入。例: char str20; char str20; scanf(“%s”,str); / scanf(“%s”,str); /* *strstr是地址是地址 * */ / 2. printf 2. printf的的s s格式串可以实现字符串的输出,例:格式串可以实现字符串的输出,例: printf(“%s”,str); / printf(“%s”,str); /* *strstr是地址是地址 * */ / 3. gets

19、 3. gets从终端输入字符串行从终端输入字符串行形式:形式:gets(str); gets(str); strstr是存放字符串的起始地址。可以是字符数组名、字符数是存放字符串的起始地址。可以是字符数组名、字符数组元素地址或下一章将要介绍的字符指针。组元素地址或下一章将要介绍的字符指针。 6.3 6.3 字符字符(z f)(z f)数组和字符数组和字符(z f)(z f)串串 第11页/共16页第十一页,共17页。6.3.4.16.3.4.1字符串输入输出(shch) -(shch) -包含头文件stdio.h stdio.h 4.puts4.puts向终端输出(shch)(shch)字符

20、串形式:puts(str); puts(str); strstr是输出(shch)(shch)字符串的起始地址,从这一地址开始,依次输出(shch)(shch)存储单元中的字符,直到遇到第一个00为止。并自动输出(shch)(shch)一个换行符。 strstr是存放字符串的起始地址。可以是字符数组名、字符数组元素地址或下一章将要介绍的字符指针。6.3.4.26.3.4.2字符串处理函数 - - 包含头文件string.h string.h 1.1.字符串复制函数strcpystrcpy。调用形式如下: strcpy(s1,s2) strcpy(s1,s2) 2.2.字符串连接函数strcat

21、strcat。调用形式如下: strcat(s1,s2) strcat(s1,s2) 6.3 6.3 字符字符(z f)(z f)数组和字符数组和字符(z f)(z f)串串 第12页/共16页第十二页,共17页。6.3.4.26.3.4.2字符串处理函数 3.3.求字符串长度函数strlenstrlen。调用形式如下: strlen(s) strlen(s) 4.4.字符串比较函数strcmpstrcmp。调用形式如下: strcmp(s1,s2) strcmp(s1,s2) 讨论C C语言字符串相等的概念和字符比较规则6.3.4.36.3.4.3字符判断函数 - -包含头文件ctype.h

22、ctype.h。 字符判断函数大部分是用宏实现的。返回值都是真和假值,即非0 0 和 0 0 。 如 i s a l p h a ( c )i s a l p h a ( c ) : 判 断 c c 是 否 为 字 母 ( z m )( z m ) ;isdigit(c)isdigit(c):判断c c是否为数字;isupper(c ) : isupper(c ) : 判断c c是否为大写字母(zm). (zm). 。 讨论使用字符判断函数设计程序的好处6.3.5 6.3.5 字符数组和字符串实例 6.3 6.3 字符字符(z f)(z f)数组和字符数组和字符(z f)(z f)串串 第13页/共16页第十三页,共17页。首先,如果数组元素属于基本类型,这些元素可以作为(zuwi)基本类型使用,当然可以作为(zuwi)函数的实参,送给函数处理,实参形参传递的是数组元素的值,形参操作不影响实参的值,处理的结果以返回值的方式带回,也可以赋给数组元素。这种方式处理数组元素与处理基本类型的变量没有什么区别。 第二,可以利用全局变量,将要处理的数组定义成全局数组,使每一个函数都能操作需要的数组。用数组作函数的参数,这样可以在函数里处理整个数组的数据,也可以通过不同调用完成同一函数对不同数组的同样计算。数组名作函数参数,实参形参传递的是数组名表示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论