数据的组织结构-字符串、二维数组.ppt
《数据的组织结构-字符串、二维数组.ppt》由会员分享,可在线阅读,更多相关《数据的组织结构-字符串、二维数组.ppt(53页珍藏版)》请在三一办公上搜索。
1、1,数据的组织结构字符串,第四章,三、字符数组与字符串,2,字符串的组织,字符串是指一个有限长度的字符序列,并且用0字符结尾(0作为字符串的结束标志)字符串常量用一个双引号(“”)括起来例:“C program”“blue”C语言中,没有直接提供字符串数据类型,字符串存储在字符数组中“C program”的存储,3,实现字符串的方法,用一维字符型数组定义 char array10;可以用array0array9存放 9 个字符。字符串的初始化可以用数组的初始化方法进行字符串的初始化 char str=C,p,r,o,g,r,a,m,0;把字符串作为整体进行初始化 char str=“C pro
2、gram”;(自动在末尾加0),4,说明用字符型数组存放字符串时,在有效字符后自动加0字符串中所包含字符的个数称为字符串长度 例如,“blue”的长度为4,但占5个字节(0占一位)字符串占用数组元素的个数为字符串长数加1,5,【例】字符串示例#include main()int i=0;char a=K;char b=Sit down;while(ai!=0)putchar(ai);i+;printf(n);i=0;while(bi!=0)putchar(bi);i+;,省略了2,常用0判断是否结束循环,等价于K,0,6,字符串与字符数组的区别字符数组是变量,用于存放字符型数据,包括字符串;字
3、符串是数据,存放在字符数组中,是一串用0 结束的字符字符数组的长度可以大于字符串的长度,7,字符串与字符数组区别,字符串放在字符数组中,应包含结束符char str=C,p,r,o,m,g,r,a,m,0;printf(%snn,str);下列情况可能输出不可识别字符(乱码)char str1=C,p,r,o,m,g,r,a,m;printf(%snn,str1);,8,字符串的结束符0,0是字符串结束标志,有关字符串处理的所有函数都要求用0结束。如果将字符串按字符一个一个地处理就需要人为地添加这个结束符。,9,程序段:逐个从键盘接受一个字符串并打印。char str20;int i=0;wh
4、ile(1)/*输入回车后结束*/if(stri+=getchar()=n)break;stri-1=0;/人为地添加字符串的结束符printf(“%s”,str);/用“0”替换了“n”,10,程序段:逐个输出字符串的内容。i=0;while(stri!=0)/*遇到字符串 结束时停止输出*/putchar(stri);i+;putchar(“n”);,11,【例】字符串的输入输出示例。#include main()char a10,b10;gets(a);scanf(“%s”,b);puts(a);printf(“%sn”,b);,必须开辟足够大的空间,运行结果:Sit downSit d
5、ownSit down Sit,遇空格、跳格符或回车符,认为字符串输入结束,%s,gets(),puts()在stdio.h中。,基于一维数组的字符串操作 字符串的输入输出,12,字符串的输入(整体输入),标准函数 scanf(“%s”,str);/*自动添加0*/gets(str);/*把换行符转换为0*/其中str是存放字符串的数组名称,如:char str20;注意事项用“%s”输入字符串时是用空格符、换行符或制表符作为输入结束,在字符串中不能含有这些符号用“%s”格式符时,对应的输入变量str前不能有&gets()函数以换行符作为输入的结束,在输入的字符串中允许包含空格和制表符,13,
6、输出字符串(整体输出),将字符串的内容显示到标准输出设备屏幕上标准函数 printf(“%s”,str);/*只有输出,不换行*/puts(str);/*输出并换行*/其中str是存放字符串的数组名称,定义:char str20;str所指的字符串必须用0结束puts()输出后,自动换行scanf()输出后,要人为添加换行符“n”,14,字符串输出举例,char str=Hello;puts(str);puts(str);显示结果:HelloHello,char str=Hello;printf(%s%s,str,str);显示结果:HelloHello,15,字符串标准函数 在C语言的标准函
7、数库中,提供了数十种与字符串处理有关的标准函数,从而大大地提高了字符串处理的能力,降低了字符串处理的复杂程度。,常用字符串标准函数及应用实例,16,字符串转换成数值类型(P98 例4-7)atof(str);-将字符串str转换成一个double值atoi(str);-将字符串str转换成普通整型(int)atol(str);-将字符串str转换成长整型(long)原型在 stdlib.h中,其中str是数字字符串,数值类型转换成字符串(P99 例4-8)itoa(num,str,radix);num是一个int类型的数值 ltoa(num,str,radix);num是一个long类型的数值
8、其中str用于存放结果的字符串,radix是用户指定的进制数,它的取值必须介于236之间,17,大小写转换 strlwr(str);-所有大写字母转换成小写字母 strupr(str);-所有小写字母转换成大写字母函数原型都在 string.h中,实例:统计一段文本中每个英文字母出现的次数(小写都被认为是大写)。,教材 P101 例4-9,18,#include#include#include#define NUM 26main()int letterNUM=0;/*用于存放统计结果的一维数组*/char str80;/*存放以字符串形式输入的文本*/int i;printf(nEnter a
9、 text line);gets(str);/*输入文本*/strupr(str);/*将文本中的所有小写字母转换成大写字母*/for(i=0;stri!=0;i+)/*统计每个字母出现的次数*/*isalpha判ch中是否为字母,是则返回非0,否则返回0*/if(isalpha(stri)letterstri-A=letterstri-A+1;for(i=0;iNUM;i+)/*输出统计结果*/printf(n%c:%d,A+i,letteri);,程序代码,与教材P8485 例4-2比较,19,计算字符串长度 strlen(str);-返回字符串中所包含的字符个数,即字符串长度,0不计算在
10、内。字符串比较 strcmp(str1,str2);-比较字符串str1与str2的大小 若str1=str2 函数返回值=0 若str1str2 函数返回值0 若str1“ABC”“ABCD”=“ABCD”,字符串处理函数,20,实例假设用户的密码是“administrators”,下面这个程序将用于检测用户输入的密码是否正确。如果不正确,给出相应的提示信息,并请求用户重新输入。,教材 P102 例4-10,21,#include#include main()char password20;/*存放用户输入的密码*/printf(nEnter password:);gets(password
11、);/*输入密码*/*检测用户输入的密码,如果不正确,给出提示,并请求重新输入*/while(strcmp(password,administrators)!=0)printf(nInvalid passwordnn);printf(Enter password,again:);gets(password);printf(OK);/*输入正确,显示OK*/,程序代码,问题:要限制密码输入的次数(3次),应如何修改,22,字符串拷贝 strcpy(str1,str2);-将字符串str2拷贝到字符串str1中 str1是用于存放拷贝结果的存储区域,例D-1:从键盘输入若干单词,找出最长的单词,问
12、题分析与找最大值类似因不知输入的单词数量,不能确定循环次数,以空字符串作为结束标志用字符串的长度进行比较,但要保存当前最长字符串和其长度,23,#include#include main()char str80,maxstr80;int max=0,len;doprintf(Enter a string:);gets(str);len=strlen(str);if(lenmax)strcpy(maxstr,str);max=len;while(len0);printf(The max string is%sn,maxstr);,24,字符串连接 strcat(str1,str2);-将str2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 组织 结构 字符串 二维 数组

链接地址:https://www.31ppt.com/p-6296751.html