首页 C语言程序设计 教学课件 ppt 作者 柴世红_ 第8章

C语言程序设计 教学课件 ppt 作者 柴世红_ 第8章

举报
开通vip

C语言程序设计 教学课件 ppt 作者 柴世红_ 第8章*第8章字符数组与字符串第8章字符数组与字符串8.1字符数组的定义8.2字符数组的初始化8.3字符数组的引用8.4字符串8.5常用字符串处理函数8.6案例学习*第8章字符数组与字符串    8.1字符数组的定义  用来存放字符常量的数组称为字符数组,字符数组的定义形式与前面介绍的数值型数组的定义形式十分类似,其一般形式可表示为:    char数组名[常量表达式]*第8章字符数组与字符串 【例8-1】以下程序的输出结果是()。答案:B。*第8章字符数组与字符串  (2)字符数组也可以定义为二维或多维数组。例如:  ...

C语言程序设计 教学课件 ppt 作者 柴世红_ 第8章
*第8章字符数组与字符串第8章字符数组与字符串8.1字符数组的定义8.2字符数组的初始化8.3字符数组的引用8.4字符串8.5常用字符串处理函数8.6 案例 全员育人导师制案例信息技术应用案例心得信息技术教学案例综合实践活动案例我余额宝案例 学习*第8章字符数组与字符串    8.1字符数组的定义  用来存放字符常量的数组称为字符数组,字符数组的定义形式与前面介绍的数值型数组的定义形式十分类似,其一般形式可表示为:    char数组名[常量表达式]*第8章字符数组与字符串 【例8-1】以下程序的输出结果是()。答案:B。*第8章字符数组与字符串  (2)字符数组也可以定义为二维或多维数组。例如:  charc[5][10];即定义了一个二维字符数组,其数组元素为字符型,数组名为c,其结构为5行10列。和数值型数组一样,数组c也可以看成是由5个含有10个数组元素的一维字符数组组成的数组。  chard[2][3][2];定义了一个三维字符数组,数组名为d。同样,数组d也可以看成是由2个3行2列的二维字符数组组成的数组。*第8章字符数组与字符串    8.2字符数组的初始化  1.一次性赋值  和数值数组一次性赋值一样,字符数组一次性赋值是指在定义数组的过程中,在一对大括号中分别给出数组元素的值。*第8章字符数组与字符串 【例8-2】一次性赋值实例。*第8章字符数组与字符串图8.1例8-2运行结果*第8章字符数组与字符串  以下定义了一个一维字符数组,其有10个数组元素,赋值后各元素的值如图8.2所示。*第8章字符数组与字符串图8.2数组内容图示*第8章字符数组与字符串  2.逐元素赋值  和数值数组一样,字符数组的逐元素赋值指在定义字符数组后,分别对字符数组的每一个元素分别赋值。*第8章字符数组与字符串 【例8-3】逐元素赋值实例。*第8章字符数组与字符串图8.3例8-3运行结果*第8章字符数组与字符串  3.用循环语句赋值  【例8-4】定义一字符数组,用循环语句实现对字符数组赋值。*第8章字符数组与字符串图8.4例8-4运行结果*第8章字符数组与字符串  4.字符串常量赋值  例如:    charstr[10]={"china"};其在内存中的存储形式str[0]为'c'str[1]为'h',str[2]为'i',str[3]为'n',str[4]为'a'。*第8章字符数组与字符串  【例8-5】从键盘上输入一个国家的首都,然后在屏幕上显示。*第8章字符数组与字符串图8.5例8-5运行结果*第8章字符数组与字符串  【例8-6】以下说法正确的是()。  A.已定义charc[]={“china”};,要将所有的字符输出的语句是:printf(“%s”,&c);  B.已定义charc[]={“china”};,要将所有的字符输出的语句是:printf(“%s”,c[0]);  C.‘a’和“a”所占的存储空间是不一样的  D.‘a’和“a”所占的存储空间是一样的  答案:C。*第8章字符数组与字符串     8.3字符数组的引用8.3.1字符数组的引用格式  字符数组的引用格式与普通数组完全相同,其一般形式可表示为:   字符数组名[下标];  注意:  (1)和数值数组一样,字符数组的下标引用从0开始。  (2)如果是二维数组或高维数组,则有两个或两个以上的下标。*第8章字符数组与字符串 【例8-7】以下程序的输出结果为()。*第8章字符数组与字符串  【例8-8】有3个字符串s1,s2和s3,其中s1=“abcdef”;,s2=“12345”;用字符数组实现将s1的内容复制到s3中,再将s2的内容添加到s3的后面,最后输出字串s3。  解析:因为在C语言中没有关于字符串的变量,因此对于字符串的操作必须要用字符数组实现,故首先须定义三个字符数组,同时考虑到第三个字符串的长度要能容纳字符串1和字符串2。程序源代码如下:*第8章字符数组与字符串*第8章字符数组与字符串图8.6例8-8运行结果*第8章字符数组与字符串8.3.2字符数组的输入与输出  1.逐个字符操作  用scanf()函数结合格式控制符“%c”可实现逐个字符的输入,用printf()函数结合格式控制符“%c”可实现逐个字符的输出。*第8章字符数组与字符串 【例8-9】逐个字符的输入实例。*第8章字符数组与字符串图8.7例8-9运行结果*第8章字符数组与字符串  2.将整个字符串一次输入或输出  用scanf()函数结合“%s”可实现字符串的输入,用printf()函数结合“%s”可实现字符串的输出。*第8章字符数组与字符串 【例8-10】字符串的输入和输出。*第8章字符数组与字符串图8.8例8-10运行结果*第8章字符数组与字符串 【例8-11】二维字符数组引用实例。*第8章字符数组与字符串图8.9例8-11运行结果*第8章字符数组与字符串     8.4字符串8.4.1字符串的基本概念  1.C语言对字符串的约定  字符串指若干有效字符组成的序列。所谓有效字符是指系统允许使用的字符,不同的系统允许使用的字符是不相同的。C语言中的字符串可以包括字母、数字、专用字符、转义字符等。例如,下面都是合法的字符串:    "china","basic","a+b=c","32.8"*第8章字符数组与字符串  2.C语言中表示字符串常量的约定  虽然C语言中没有提供字符串数据类型,但却允许使用字符串常量。在前面的介绍中我们提到,字符串常量是由双引号括起来的一串字符,在表示字符串常量时,不需要人为地在其末尾加入 '\0',例如:字符串常量“hello!”不必写成“hello!\0”,C编译程序将自动完成这一工作,在末尾添加字符串结束标记 '\0'。*第8章字符数组与字符串  3.C语言中字符串常量给出的是地址值  每一个字符串常量都分别占用内存中一串连续的存储空间,这些连续的存储空间实际上就是字符型一维数组。这些数组虽然没有名字,但C编译系统却以字符串常量的形式给出存放每一字符串的存储空间的首地址。不同的字符串具有不同的起始地址。也就是说:在C语言中,字符串常量被隐含处理成一个以 '\0' 结尾的无名字符型一维数组。*第8章字符数组与字符串  因此,若有以下定义:    chars[10];则以下赋值是不合法的:    s=“hello”;  因为,字符串常量在赋值过程中给出的是这个字符串在内存中所占的一串连续存储单元(无名一维字符数组)的首地址,而s是一个不可重新赋值的数组名。*第8章字符数组与字符串  4.字符数组与字符串的区别  字符数组的每个元素中可存放一个字符,但它并不限定最后一个字符应该是什么。而在C语言中,因为有关字符串的大量操作都与串结束标志 '\0' 有关,因此,在字符数组中的有效字符后面加上 '\0' 这一特定情况下,可以把这种一维字符型数组看做字符串变量,但它又不等同于一般的变量。如上所述,在字符数组内仅可以存放字符串,不能通过赋值语句将字符串常量或其他字符数组中的字符串直接赋值给字符串变量。可以这样说:字符串是字符数组的一种具体应用。*第8章字符数组与字符串8.4.2用一维字符数组存放字符串  1.用给一般数组赋初值的方式给一维字符数组赋初值  前面我们已经介绍了给一维数组赋初值的方法,包括一次性赋值、逐元素赋值及用循环语句赋值等,例如:    charstr[10]={'s','t','r','i','n','g’,'!','\0'};赋初值后,字符数组str中的内容如下所示:*第8章字符数组与字符串  2.在赋初值时直接赋字符串常量  前面我们提到,C语言允许用字符串的方式对数组作初始化赋值。例如:    charc[]={‘C’,‘’,‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,‘m’,‘\0’};  这条对字符数组赋值的语句也可以改写为:    charc[]={“Cprogram”};  或去掉{}改写为:    charc[]=“Cprogram”;  数组c在内存中的实际存放情况为:*第8章字符数组与字符串  3.不可以用赋值语句给字符数组整体赋一串字符  当作字符串变量使用的字符数组,不能由赋值语句直接赋字符串常量。例如:   charmark[10];   mark=“cprogram”; /*赋值不合法*/以上赋值形式是不允许的,因为字符串常量给出的是地址值,而数组名mark是一个地址常量,不能被重新赋值。同理,以下赋值方式也是错误的:   charstr1[10]=“computer”,str2[10];   str2=str1; /*赋值不合法*/*第8章字符数组与字符串  4.给数组元素逐个赋字符值,最后人为加入串结束标志  利用目前学过的知识,在程序执行过程中,可以通过逐个给数组元素赋值的方式,达到给一维字符数组赋字符串的目的。例如:*第8章字符数组与字符串  也可以通过给一维字符数组输入字符并在最后加 '\0' 的方式,给一维字符数组赋字符串,例如:*第8章字符数组与字符串  5.用格式说明符%s进行整串输入  在scanf函数中使用格式说明符%s可以实现字符串的整体输入。函数调用形式如下:   scanf(“%s”,str_adr);  这里str_adr是地址值。调用此函数时,输入字符依次放入以这一地址为起点的存储单元中,并自动在末尾加‘\0’。str_adr可以是字符数组名、字符数组元素的地址或字符指针变量。例如:   charstr[15];   scanf("%s",str);*第8章字符数组与字符串  6.在printf()函数中,使用格式说明符 %s进行整串输出  函数调用形式如下:   printf("%s",str_adr);*第8章字符数组与字符串   8.5常用字符串处理函数8.5.1字符串输出函数puts  格式:   puts(字符数组名)  功能:把字符数组中的字符串输出到显示器上,即在屏幕上显示该字符串。*第8章字符数组与字符串【例8-12】puts函数应用示例。*第8章字符数组与字符串图8.10例8-12运行结果*第8章字符数组与字符串8.5.2字符串输入函数gets  格式:   gets(字符数组名)  功能:从 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 输入设备键盘上输入一个字符串,存储到指定数组中。本函数得到一个函数值,即为该字符数组的首地址。*第8章字符数组与字符串  【例8-13】get函数应用示例。*第8章字符数组与字符串图8.11例8-13运行结果*第8章字符数组与字符串8.5.3字符串连接函数strcat  格式:   strcat(字符数组名1,字符数组名2)  功能:把字符数组2中的字符串连接到字符数组1中字符串的后面,并删去字符串1后的串标志'\0'。本函数返回值是字符数组1的首地址。*第8章字符数组与字符串 【例8-14】strcat函数应用示例。*第8章字符数组与字符串图8.12例8-14运行结果*第8章字符数组与字符串8.5.4字符串拷贝函数strcpy  格式:   strcpy(字符数组名1,字符数组名2)  功能:把字符数组2中的字符串拷贝到字符数组1中。串结束标志'\0'也一同拷贝。字符数组名2也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。*第8章字符数组与字符串 【例8-15】strcpy函数应用示例。*第8章字符数组与字符串图8.13例8-15运行结果*第8章字符数组与字符串8.5.5字符串比较函数strcmp  格式:   strcmp(字符数组名1,字符数组名2)  功能:按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。   字符串1 = 字符串2,返回值=0; 字符串1>字符串2,返回值>0; 字符串1<字符串2,返回值<0。  本函数也可用于比较两个字符串常量,或比较数组和字符串常量。 *第8章字符数组与字符串 【例8-16】strcmp函数应用示例。*第8章字符数组与字符串图8.14例8-16运行结果*第8章字符数组与字符串8.5.6测字符串长度函数strlen  格式:   strlen(字符数组名)  功能:测字符串的实际长度(不含字符串结束标志'\0')并将其作为函数返回值。*第8章字符数组与字符串 【例8-17】strlen函数应用示例。*第8章字符数组与字符串图8.15例8-17运行结果*第8章字符数组与字符串     8.6案例学习  【例8-18】有3个字符串s1,s2和s3,其中s1=“abcdef”;s2=“12345”;用字符数组实现将s1的内容复制到s3中,再将s2的内容添加到s3的后面,最后输出字符串s3。  本题涉及三个字符串,而字符串在C语言中没有专门的数据类型,因此,考虑定义三个字符数组s1,s2和s3来分别存储三个字符串,然后将s1和s2字符数组的内容依次添加到s3字符串中,最后加上字符串结束标记即可。程序源码如下:*第8章字符数组与字符串*第8章字符数组与字符串图8.16例8-18运行结果*第8章字符数组与字符串  代码说明:本程序要求的功能可以用字符串处理库函数实现。程序如下:*第8章字符数组与字符串  【例8-19】输入一行字符,统计其中有多少个单词(单词间以空格分隔),例如,输入Iamaboy,则有4个单词。  本题编程思路如下:单词的数目由空格出现的次数决定(连续出现的空格记为一次;一行开头的空格不算),应逐个检测每一个字符是否为空格。  用num表示单词数(初值为0)。word=0表示前一字符为空格,word=1表示前一字符不是空格,word初值为0。如果前一字符是空格,当前字符不是空格,则说明出现新单词,num数加1。*第8章字符数组与字符串 程序源码如下:*第8章字符数组与字符串*第8章字符数组与字符串图8.17例8-19运行结果*第8章字符数组与字符串  【例8-20】输入五个字符串并按字母顺序排序输出。 本题编程思路如下:五个字符串应由一个二维字符数组来处理。用字符串比较函数比较各字符串的大小并排序,输出排序结果即可。程序源码如下:*第8章字符数组与字符串*第8章字符数组与字符串图8.18例8-20运行结果*第8章字符数组与字符串  【例8-21】输入三个字符串,输出其中的最大者。  本题可定义一个二维字符数组str[3][20]存储三个字符串,再定义一个一维字符数组存储三个字符串中的最大者,借助本章中介绍的常用字符串函数可实现。程序源码如下:*第8章字符数组与字符串
本文档为【C语言程序设计 教学课件 ppt 作者 柴世红_ 第8章】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
希望
暂无简介~
格式:ppt
大小:488KB
软件:PowerPoint
页数:0
分类:工学
上传时间:2019-09-16
浏览量:7