收藏 分享(赏)

C12 第4章 4.2字符串.pptx

上传人:再无少少年 文档编号:1563473 上传时间:2018-08-05 格式:PPTX 页数:27 大小:134.08KB
下载 相关 举报
C12 第4章 4.2字符串.pptx_第1页
第1页 / 共27页
C12 第4章 4.2字符串.pptx_第2页
第2页 / 共27页
C12 第4章 4.2字符串.pptx_第3页
第3页 / 共27页
C12 第4章 4.2字符串.pptx_第4页
第4页 / 共27页
C12 第4章 4.2字符串.pptx_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、第4章 数组,4.1 数组的定义与使用4.2 字符数组的定义和使用4.3 数组应用举例(习题课),1 字符数组,(1)字符数组的定义,定义方法与前面介绍的一维数组一样。例如:char c10;c0=I;c1= ;c2=a;c3=m;c4= ;c5=h;c6=a;c7=p;c8=p;c9=y;,如何输出? 演示,for (i=0;ici;,逐个字符赋给数组中各元素。如: char c10=I, , a,m, ,h,a, p,p,y;,如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。,如果花括弧中提供的初值个数(即字符个数)大于数组长度,则按语法错误处理。,(2)字符数组的初始化

2、,演示,在哪里学过,代表什么?,char c10=c, ,p,r,o, g,r,a,m;,如果初值个数小于数组长度,则只将这些字符赋给数 组中前面那些元素,其余的元素自动定为空字符 (即0)。例如:,char c=I, ,a,m, ,h, a,p,p,y;数组c的长度自动定为10。,char diamond55= , ,*, ,*, ,*,*, , , ,*, ,*, ,*, , ,*;,演示,如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。例如:,也可以定义和初始化一个二维字符数组。例如:,2 字符串和字符串结束标志,C+规定了一个“字符

3、串结束标志”,以字符0作为标志。如果有一个字符串,前面9个字符都不是空字符(即0) ,而第10个字符是0,则此字符串的有效字符为9个。 系统对字符串常量也自动加一个0作为结束符。,0代表ASCII码为0的字符,从ASCII码表中可以查到,ASCII码为0的字符不是一个可以显示的字符,而是一个“空操作符”,即它什么也不干。用它来作为字符串结束标志不会产生附加的操作,只起一个供辨别的标志。,(1)字符串常量字符串常量(简称字符串)用一对双引号将字符序列括起来。 (2)字符串结束标志为了判断字符串是否结束,系统自动在字符串的末尾加上一个字符0 作为字符串的结束标志 。 (3)字符串常量和字符常量的区

4、别,(4)可以用字符串常量来使字符数组初始化。 例如 char c=“I am happy”; 也可以省略花括弧,直接写成 char c=“I am happy”; 它与下面的数组初始化等价 char c =I, ,a,m, ,h,a,p,p,y, 0;,注意,再比如 char c10=“China; 数组c的前5个元素为C,h,i,n,a,第6个元素为0,后4个元素也设定为空字符。,说明: 字符数组并不要求它的最后一个字符为0,甚至可以不包含0。 例如:char c5=C,h,i,n,a; 但为了使处理方法一致,在字符数组中也常人为地加上一个0。 如:char c6=C,h,i,n,a,0;

5、 这样做是为了便于引用字符数组中的字符串。 给字符数组指定一个字符串初值,系统将自动在最后一个字符后面加一个字符0 。 例如:char str=“C+ program“; 注意:字符数组str的长度为12,而不是11。,3.字符数组的输入与输出,(1)把字符数组中的元素逐个输入/输出。这种输入/输出方法通常采用循环语句来实现。 【例4.8-】 将从键盘输入的10个字符依次送给数组str中的各个元素,并将数组str中的元素按倒序输出。(2)把字符数组作为字符串进行整体的输入/输出。采用这种方法输入时,在cin中仅给出字符数组名;输出时,在cout中也仅给出字符数组名。【例4.8】 将两个字符串分

6、别输入到两个字符数组中,并把这两个数组中的字符串输出。,例 4.8+,#include void main(void) int i;char str10;coutstri;for (i=9;i=0;i-)coutstri;coutendl; 程序执行后提示:Input ten character: ABCDEFGHIJJIHGFEDCBA,例4.8,#include void main(void) char s140,s240;couts1s2;cout“s1=“s1t“s2=“s2endl; 输出为:s1=very s2=good, 输入字符串时,遇到空格字符或换行字符(Enter健),认为

7、一个字符串结束,接着的非空格字符作为一个新的字符串开始;并且系统自动会在每一个字符串后加一个0。 一个字符数组作为一个字符串输出时,必须保证在数组中包含字符串结束符0;当遇到0时,输出自动结束,0不输出。,(3)整行输入字符串,cin.getline(字符数组名, 字符个数N, 结束符); 功能:一次连续读入多个字符(可以包括空格),直到读满N个,或遇到指定的结束符(默认为n)。读入的字符串存放于字符数组中。读取但不存储结束符。 如:cin.getline(str,40 , ,);cin.getline(str,40); cin.get(字符数组名, 字符个数N, 结束符); 功能:一次连续读

8、入多个字符(可以包括空格),直到读满N个,或遇到指定的结束符(默认为n)。读入的字符串存放于字符数组中。 既不读取也不存储结束符。,使用时一般可以只给出两个参数,不指定结束符,演示,strcat(连接),strcpy(复制), strcmp(比较),strlen(求长度), strlwr(转换为小写), strupr(转换为大写)头文件,4. 字符串处理函数,(1)字符串复制函数strcpy(),格式:strcpy(,) 功能:将字符串2复制到字符数组1中。 例如:char str112,str2=“C+ program“;strcpy(str1,str2); 则字符数组str1的内容为“C+

9、 program“。 说明: (1)字符数组1必须是字符数组名,字符串2可以是字符数组名,也可以是字符串常量; (2)字符数组1必须足够大,以便容纳被复制的字符串; (3)字符串2后的0也一起复制到字符数组1中; (4)不能用赋值语句将一个字符串常量或字符数组赋给另一个字符数组,只能用字符串复制函数来处理。例如下面操作是非法的:str2=“C+ program“;str1=str2;,(2)字符串连接函数strcat(),格式:strcat(,) 功能:将字符串2连接到字符数组1中的字符串后,其结果存放在字符数组1中。 例如:char str130=“I am a “;char str2=“s

10、tudent.“;strcat(str1,str2); 则字符数组1的内容为“I am a student.“。 说明: (1)字符数组1必须是字符数组名,字符串2可以是字符数组名,也可以是字符串常量; (2)字符数组1必须足够大,以便容纳连接后的新字符串; (3)连接时字符串1之后的0取消,只在新字符串最后保留一个0。,(3)字符串比较函数strcmp(),格式:strcmp(,) 功能:将两个字符串从左到右逐个字符进行比较(按ASCII码的大小比较),直到出现不同的字符或遇到0为止。如果所有字符相同,则认为两个字符串相等;若出现不相同的字符,则以第一个不相同的字符的比较结果作为两个字符串的

11、比较结果。比较结果由函数值带回。 (1)如果字符串1=字符串2,则函数值为0; (2)如果字符串1字符串2,则函数值为一个正整数; (3)如果字符串1字符串2,则函数值为一个负整数。,说明: (1)字符串1和字符串2都可以是字符数组名,也可以是字符串常量; (2)两个字符串间不能用关系运算符进行比较,而只能用字符串比较函数来处理。例如下面的操作是非法的:if (str1=str2)cout“True“;else cout“False“;,(4)字符串中大写字母变换成小写字母函数strlwr(),格式:strlwr() 功能:将字符数组中的所有大写字母均换成小写字母。 例如:char str=“

12、CHINA“;strlwr(str); 则str中的内容变换成:“china “;,(5)字符串中小写字母变换成大写字母函数strupr(),格式:strupr() 功能:将字符数组中的所有小写字母均换成大写字母。 例如:char str=“china“;strupr(str); 则str中的内容变换成:“CHINA“。,(6)求字符串长度函数strlen(),格式:strlen() 功能:求字符串长度 例如:char str=“CHINA“;coutstrlen(str); 则屏幕输出 5; 说明: (1)字符串可以是字符数组名,也可以是字符串常量; (2)函数值是字符串的实际长度,不包括最

13、后的0在内;,5 字符数组应用举例,【例4.9】从键盘输入两个字符串,将它们连接成一个字符串。 方法一:使用字符串连接函数strcat连接两个字符串。 方法二:不使用字符串连接函数strcat连接两个字符串。 方法三:在方法二中,使用字符串结束标志0来判断字符串的结束位置。事实上也可以用求字符串长度函数strlen确定字符串结束位置。,字符串的连接,i,j,i,g o o d,stri=0,方法一,#include #include void main(void) char str140,str220; /定义字符数组str1、str2cout“Input two strings:n“;cin

14、.getline(str1,20); /输入字符串1到str1中cin.getline(str2,20); /输入字符串2到str2中strcat(str1,str2); /将str1、str2连接后存入str1coutstr1endl; /输出str1 ,方法二,方法三,#include #include void main(void) char str140,str220; /定义字符数组str1、str2int i,j;cout“Input two string:n“;cin.getline(str1,20); /输入字符串1到str1中cin.getline(str2,20); /输入字符串2到str2中i=strlen(str1); /使i指向str1的结束位置0for (j=0;j=strlen(str2);i+,j+) /j从0到str2的结束位置0 依次循环 str1i=str2j; /将str2j赋给str1icoutstr1endl; /输出str1 ,作业,P96 习题4.14、4.17,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > C/C++资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报