数据的组织结构字符串二维数组

上传人:tian****1990 文档编号:71596658 上传时间:2019-01-21 格式:PPT 页数:53 大小:447.50KB
返回 下载 相关 举报
数据的组织结构字符串二维数组_第1页
第1页 / 共53页
数据的组织结构字符串二维数组_第2页
第2页 / 共53页
数据的组织结构字符串二维数组_第3页
第3页 / 共53页
数据的组织结构字符串二维数组_第4页
第4页 / 共53页
数据的组织结构字符串二维数组_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《数据的组织结构字符串二维数组》由会员分享,可在线阅读,更多相关《数据的组织结构字符串二维数组(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; 把字符串作

2、为整体进行初始化 char str = “C program”; (自动在末尾加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,常用

3、0判断是否结束循环,等价于K,0,6,字符串与字符数组的区别 字符数组是变量,用于存放字符型数据,包括字符串;字符串是数据,存放在字符数组中,是一串用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结

4、束。如果将字符串按字符一个一个地处理就需要人为地添加这个结束符。,9,程序段: 逐个从键盘接受一个字符串并打印。 char str20; int i=0; while (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,【例】字符串的输入输出示例。 #

5、include main( ) char a10, b10; gets(a); scanf(“%s”,b); puts(a); printf(“%sn”,b); ,必须开辟足够大的空间,运行结果: Sit down Sit down Sit down Sit,遇空格、跳格符或回车符,认为字符串输入结束,%s,gets( ),puts( ) 在stdio.h中。,基于一维数组的字符串操作 字符串的输入输出,12,字符串的输入(整体输入),标准函数 scanf(“%s”, str); /* 自动添加0 */ gets(str); /* 把换行符转换为0 */ 其中str是存放字符串的数组名称, 如

6、:char str20; 注意事项 用“%s”输入字符串时是用空格符、换行符或制表符作为输入结束,在字符串中不能含有这些符号 用“%s”格式符时,对应的输入变量str前不能有& gets( ) 函数以换行符作为输入的结束,在输入的字符串中允许包含空格和制表符,13,输出字符串(整体输出),将字符串的内容显示到标准输出设备屏幕上 标准函数 printf(“%s”, str); /* 只有输出,不换行 */ puts(str); /* 输出并换行 */ 其中str是存放字符串的数组名称,定义: char str20; str所指的字符串必须用0结束 puts( ) 输出后,自动换行 scanf(

7、)输出后,要人为添加换行符“n”,14,字符串输出举例,char str = “Hello“; puts(str); puts(str); 显示结果: Hello Hello,char str = “Hello“; printf(“%s%s“, str,str); 显示结果: HelloHello,15,字符串标准函数 在C语言的标准函数库中,提供了数十种与字符串处理有关的标准函数,从而大大地提高了字符串处理的能力,降低了字符串处理的复杂程度。,常用字符串标准函数及应用实例,16,字符串转换成数值类型 (P98 例4-7) atof(str); -将字符串str转换成一个double值 ato

8、i(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类型的数值 其中str用于存放结果的字符串,radix是用户指定的进制数,它的取值必须介于236之间,17,大小写转换 strlwr(str); -所有大写字母转换成小写字母 strupr(str); -所有小写字母转换成大写字母 函数原型

9、都在 string.h中,实例:统计一段文本中每个英文字母出现的次数(小写都被认为是大写)。,教材 P101 例4-9,18,#include #include #include #define NUM 26 main( ) int letterNUM = 0; /* 用于存放统计结果的一维数组 */ char str80; /* 存放以字符串形式输入的文本 */ int i; printf(“nEnter a text line“); gets(str); /* 输入文本 */ strupr(str); /* 将文本中的所有小写字母转换成大写字母 */ for (i=0; stri!=0;

10、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不计算在内。 字符串比较 strcmp(str1, str2); -比较字符串str1与str2的大小 若str1=

11、str2 函数返回值=0 若str1str2 函数返回值0 若str1 “ABC” “ABCD” = “ABCD”,字符串处理函数,20,实例 假设用户的密码是“administrators”,下面这个程序将用于检测用户输入的密码是否正确。如果不正确,给出相应的提示信息,并请求用户重新输入。,教材 P102 例4-10,21,#include #include main( ) char password20; /* 存放用户输入的密码 */ printf(“nEnter password: “); gets(password); /* 输入密码 */ /* 检测用户输入的密码,如果不正确,给出

12、提示,并请求重新输入 */ 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:从键盘输入若干单词,找出最长的单词,问题

13、分析 与找最大值类似 因不知输入的单词数量,不能确定循环次数,以空字符串作为结束标志 用字符串的长度进行比较,但要保存当前最长字符串和其长度,23,#include #include main() char str80, maxstr80; int max=0, len; do printf(“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,字符串连接 st

14、rcat(str1, str2); - 将str2连接在str1之后,并在结束处添加一个字符串结束符0,实例:根据用户的选择输出相应的字符串。,教材 P104 例4-11,说明 显示一个菜单,用户选择一项,则可以输出与该项相关的信息,25,#include #include main( ) char str180 = “This is a “; char str2 = “ program.“; char str3 = “Java“; char str4 = “Pascal“; char str5 = “C“; char str6 = “C+“; int choice; printf(“n =

15、MENU =n“); /* 菜单 */ printf(“n Java . . 1“); printf(“n Pascal . 2“); printf(“n C . . 3“); printf(“n C+ 4“); printf(“n choice:“); scanf(“%d“, /* 用户做出选择 */,程序代码,只给出部分初值,26,switch (choice) /* 根据用户的选择拼接字符串 */ case 1: strcat(str1, str3); strcat(str1, str2); break; case 2: strcat(str1, str4); strcat(str1, str2); break; case 3: strcat

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号