




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数组(二),模块4,共 34 页 第 2 页,1 字符与字符串 2 字符数组 3 字符串处理函数 4 二维字符数组 5 应用实例,字符数据处理,共 34 页 第 3 页,符号常量:以指定符号代表其后的 “一串字符” 格式: #define 标识符 常量,1 字符与字符串,一、字符型数据,可以是任意类型常量,字符常量:以 括起来的单个字符,开头的字符序列。,例:a, A, n表示换行, r表示回车。,字符串常量:用双引号括起来的字符序列。,例:”Ch”,”123”等。长度不限,末尾加0,字符变量:存放字符常量的变量,用char说明。,共 34 页 第 4 页,1 字符与字符串(续),二、字符串,串长:字符串中所包含的字符数。 串结束标记:字符 0 称为串结束标记。,C中的串以 0 结束。,字符串在数组中的存储格式,字符串可以存在一个一维数组中,字符串中的一个字符占用字符数组中一个字节,具有数组特性。 字符串实际占有单元的数量等于字符串长度+1。,例如:要定义一个存放字符串“CHINA”的字符数 组c,应定义为: char c6; 数组c在内存中实际存放情况为:,共 34 页 第 5 页,串长=5,三、字符数据的输入输出,库函数: getchar( ),putchar(ch),从键盘上 读一个字符,1 字符与字符串(续),使用getchar( )时,可以输入任何字符,允许用户根据自己的要求进行控制与处理,串尾0要自己编程加入。其中ENTER接受为r(回车)。,格式化输入输出函数: scanf( );printf( );”%c”,共 34 页 第 6 页,格式: 数据类型 数组名维数说明;,例:char a4,b10; char c34; 表示a数组可以存放4个字符,c数组可以存放12个字符。,例:c34可存放三个字符串,每个字符串最多存放4个字符。, 一维字符型数组作为一个字符串变量使用。 二维字符型数组相当于一个字符串数组,每行存放 一个字符串。,2 字符数组(续),一、一维字符数组的定义,二、字符数组的用途,共 34 页 第 7 页,8-2 字符数组,三、一维字符数组的初始化,用字符串对字符数组初始化,如: char ch6=“CHINA“; char ch6=“CHINA“; /* 省略 */ char ch =“CHINA“; /* 省略长度值 */,字符数组初始化,用单个字符对字符数组初始化,如: char ch6=C,H,I,N,A,0;,2 字符数组(续),共 34 页 第 8 页,2 字符数组(续),四、一维字符数组的引用,如: char a10=“CHINA2000”,b3=“123”; printf(“%cn”,a3); printf(“%sn”,a);,对于字符数组,不仅可以引用它的数组元素,也 可以引用整个数组。,共 34 页 第 9 页,2 字符数组(续),static char a3; for (i=0;i3;i+) scanf(“ %c “,输入数据顺序: d o s 输出数据顺序: dos,四、字符数组的输入与输出,单字符输入输出(用格式符c控制),共 34 页 第 10 页,static char a7; scanf(“ %s “,a);,2 字符数组(续),字符数组名指明数组首地址,字符串输入输出(用格式符s控制),0不输出,只能输入不包括空格、t和n的字符串 自动在串尾加0,printf(“ %sn “,a);,共 34 页 第 11 页,五、字符串在数组中的存储格式,使用字符0作为字符串的结束标记,就使得C语言对字符串的长度没有具体的限制,但字符串的最大长度不能超过存储它的字符数组的长度,否则会造成数组越界错误。,2 字符数组(完),0是在字符串存入字符数组是由系统自动添加的,并不是字符串本身的一部分,在计算串长的时候并不包括 0。,共 34 页 第 12 页,3 字符串处理函数,一、字符串输入输出函数,gets (字符数组名);,由终端输入字符串到字符数组,以换行结束 返回字符数组的首地址,puts (字符数组名);,将以0结束的字符串输出到终端 返回的函数值是字符数组的首地址,共 34 页 第 13 页,3 字符串处理函数(续),格式:strlen(x);,功能:返回x字符串中字符的个数(不包括字符串结束符)。,x是字符串首地址,其形式可以是字符数组或字符指针,也可以是字符常量。,二、求字符串长度的函数,共 34 页 第 14 页,3 字符串处理函数(续),格式:strcat(字符数组1,字符数组2);,功能:连接两个字符数组中的字符串,将串2接在串1后,结果存放在字符数组1中,返回的函数值是字符数组1的首地址。,字符数组1的长度不可缺省,足够大。,三、字符串连接函数,四、字符串复制函数,格式:strcpy(字符数组1,字符数组2);,功能:将串2复制到串1数组中。,共 34 页 第 15 页,程序 #include void main( ) char str1100,str2100; int i, j; printf (”Enter string 1:”); gets (str1); printf (”Enter string 2:”); gets (str2); for ( i=0; str1i!=0; i+ ) ; /* 确定0位置 */ for ( j=0; (str1i=str2j) != 0; i+, j+ ) ; printf(”Output string 1:%sn”, str1); ,例8 字符串连接。将串str2连接到串str1之后。 根据字符串中 0 的位置进行字符串连接。 关键:要用str2的第1个字符覆盖str1的串结束标记0。,a,b,c,d,e,f,g,0,str2,str1,.,.,.,算法: 1、查找str1的串结束标记0 2、从str1的0开始,将str2复制到str1。,3 字符串处理函数(续),共 34 页 第 16 页,例9 字符串复制。 将字符串 str1 拷贝到串 str2 中。 没有必要复制整个数组,根据字符串中 0 的位置,只对 0 前面的字符进行复制。,#include void main ( ) char str1100, str2100; int i; printf (“Enter string 1:“); gets (str1); /* 输入字符串str1 */ for (i=0; (str2i=str1i)!=0; i+) ;/* 复制*/ printf(“Output string 2:%sn“, str2); ,a,b,.,.,.,f,g,0,str1,str2,.,.,.,3 字符串处理函数(续),共 34 页 第 17 页,3 字符串处理函数(续),五、字符串比较函数,格式:strcmp(字符数组1,字符数组2);,功能:比较串1和串2,返回结果为: 0-相等,正数-串1大,负数-串2大,”abc” 与 ”abc” ,相等 ”abcd” 与 ”abck”, ”abcd” 小 ”abc” 与 ”ab”, ”abc” 大,比较原则:按ASCII码比较,共 34 页 第 18 页,例10 字符串比较。 确定字符串大小的基本规则: 按照串中对应位置字符的ASCII码值的大小确定大小。 例如:”abc” ”abadef” 因为字符 c a #include ”stdio.h” void main( ) char str1100, str2100; int i; printf (“Enter string 1:“); gets(str1); printf (“Enter string 2:“); gets(str2); for ( i=0; (str1i=str2i) ,3 字符串处理函数(续),共 34 页 第 19 页,8-3 字符串处理函数,六、大小写字母的转换,1 格式:strlwr(x),功能:把地址为x的字符串中所有大写字母转换成小写字母。x可以是字符数组或字符指针,也可以是字符串常量。 调用形式: strlwr(x);,2 格式:strupr(x),功能:把地址为x的字符串中所有小写字母转换成大写字母。x可以是字符数组或字符指针,也可以是字符串常量。 调用形式: strupr(x);,3 字符串处理函数(完),共 34 页 第 20 页,8-2 字符数组,一、二维字符数组的定义,如: char a25,b37;,与二维数值数组定义相同,但数据类型为char,4 二维字符数组,共 34 页 第 21 页,8-2 字符数组,二、二维字符数组的初始化,可以在定义的同时初始化,如: char a38=“str1“,”str2”,”string3”; char b 6=“s1“,”s2”,”str3”;,二维字符数组初始化,4 二维字符数组(续),二维字符数组初始化在内存的存储,共 34 页 第 22 页,8-2 字符数组,三、二维字符数组的引用,如: (1) for (i=0;i3;i+) printf(“%sn”,ai); (2) for (i=0;i3;i+) printf(“%cn”,aii); (3) for (i=0;i3;i+) printf(“%sn”,对于二维字符数组,每行可以看做一个字符数组。 数组名ai。可以用ai引用i行的字符串,也可以 用aij引用i行j列的字符。,4 二维字符数组(完),输出: (1) str1 (2) s (3) tr1 str2 t r2 strinf3 r ing3,共 34 页 第 23 页,#include #include void main ( ) char string 100, t; int i, j, n; gets ( string ); n = strlen ( string ); for ( i=0; i stringj+1 ) t = stringj; stringj = stringj+1; stringj+1 = t; puts ( string ); ,4 应用实例,例11 输入一行字符,将其中的每个字符从小到大排列 后输出。,共 34 页 第 24 页,例12 输入五个单词,请将它们按从小到大的顺序排列后输出。 #include #include void main ( ) char str 520, t20; int i, j, n; printf (“Enter string:n“); for ( i=0; i 0 ) strcpy ( t, strj ); strcpy ( strj, strj+1); strcpy ( strj+1, t); printf(“Result:n“); for ( i=0; i5; i+ ) puts ( stri ); ,4 应用实例(续),共 34 页 第 25 页,例13 任意输入一个3位整数,取其各位数字的和,再取这个和被7除的余数,输出余数对应的星期(英文单词)。 如:输入123,(1+2+3)%7=6,则输出saturday。 对3位整数n,拆分其百、十和个位的方法: 百位:i=n/100; 十位:j=n/10%10; 个位:k=n%10;,4 应用实例(续),共 34 页 第 26 页,例13: #include “stdio.h” main( ) char week79 = “Sunday“, “Monday“,“Tuesday“, “Wednesday“,“Thursday“,“Friday“, “Saturday“ ; int i,j,k,a,n; do printf(“Please input a number:n“); scanf(“%d“, ,4 应用实例(续),共 34 页 第 27 页,#include “stdio.h” #include “string.h” void main ( ) char str80, c; int i, j, n; printf (“Enter string:“); gets ( str ); n = strlen(str); for ( i=0, j=n-1; ij; i+, j- ) c = stri; stri = strj; strj = c; printf(“Result:“); puts ( str );,4 应用实例,例14 输入一行字符串,将其反序后再输出。,共 34 页 第 28 页,#include “stdio.h” #include “string.h” void main ( ) char str180, str280, str80; int i, j, n; printf (“Enter string1:“); gets ( str1 ); printf (“Enter string2:“); gets ( str2); n = 0; for ( i=0,j=0; str1i!=0 ,4 应用实例,例15 输入两个已经按从小到大顺序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 滑板礼仪知识培训
- 顶棚清洗施工方案模板
- 烧伤患者的液体管理
- 盐碱地绿化施工方案
- 益阳医学高等专科学校《环境工程土建基础》2023-2024学年第二学期期末试卷
- 上海纽约大学《临床输血学检验技术》2023-2024学年第一学期期末试卷
- 天然水源治理方案范本
- 《优化客户交流的艺术》课件
- 西安电子科技大学长安学院《信息系统分析与设计实验课》2023-2024学年第二学期期末试卷
- c级危房加固施工方案
- 输配电线路防火应急预案
- 10月自考外国文学史(00540)试题及答案解析与评分标准
- 基桩高应变动力检测作业指导书
- 预防性侵害和性骚扰
- 资产管理办法培训课件
- 肛管癌的护理查房
- 急诊科护士的急救护理的评估与改进方法
- 公司网络优化方案
- 妊娠期肝病课件
- 一例胸痹病人的护理查房
- 老年衰弱护理课件
评论
0/150
提交评论