ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:19.18KB ,
资源ID:9858254      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9858254.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言程序设计第15章 字符串处理 课件教案.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言程序设计第15章 字符串处理 课件教案.docx

1、C语言程序设计第15章 字符串处理 课件教案C语言程序设计 课件教案第十五章 字符串处理教学目的 字符与字符串的长度和尺寸的区别,在此基础上让学生掌握字符数组的定义、初始化和应用,字符串与指针(字符串的常用处理函数、sizeof)。教学要求1. 熟练掌握字符和字符串的基本语法2. 熟练掌握字符数组的定义、初始化和应用重点和难点1. 字符和字符串2. 字符数组的定义、初始化和应用教学支撑环境与教学资源:1. 笔记本电脑2. VC20103. 投影仪教学方法讲授法、练习法、讨论法授课课时6课时教学过程-AM-一、课程引入存储全班同学的成绩如何实现存储学生的姓名,可以采用定义字符数组方式解决。二、一

2、维字符数组与字符串复习字符和字符串常量:1.字符常量:用一对单引号引起来的一个字符,要求单引号里面有且仅有一个字符,在内存中以ASCII码的形式存储,占据一个字节 |-普通字符常量:注意 单引号、双引号 和斜杠三个特殊字符的写法 即必须在前面加字符 |-转义字符常量 |-数值转义:xhh:hh表示后面跟12位16进制数 最大为FF ddd:ddd跟13位八进制数 不能超过unsigned char 的最大值,因此最大为377 |-字符转义:n t2.字符串常量:用一对双引号包含的字符,在内存中存放时,以0为结束标识(0是数值转义字符,对应的ASCII码为数值0)。 demo china; 19

3、2.168.0.1; richard_20_170301_ NOTE:1 计算字符串尺寸可以使用sizeof(); demo printf(%d, sizeof(chinan);/占据6个字节 printf(%d, sizeof();/空串,只含有0占据1个BYTE printf(%d, sizeof(china0usan);/遇到第一个0截止因此不会输出usa,但是usa还是占据内存且后面会隐含0,占据10byte printf(%d, sizeof(377123378);/377 占据1BYTE 378不能算一个,因为越界因此算2BYTE,总共9byte printf(%d, sizeof

4、(0xFF);2字符串长度:从字符串的左边开始计数,到第一个0为止,且0不参与计数。 demo printf(%d, strlen(china);/5 printf(%d, strlen();/0 printf(%d, strlen(china0usa);/5思考:字符串常量可以改写吗? 如何定义字符串变量从而实现字符串的改写? -C语言中没有字符串类型,用字符数组来存放字符串,即用字符型的一维数组称为一维字符数组。三、字符数组定义和初始化1.传统的字符集合方式(不推荐) char str15=a,b,c,d,e;/全部赋值, char str25=a,b,c;/部分元素赋值 char str

5、3=a,b,c,d,e;/省略数组长度赋值思考:上面三个字符数组中存放的是字符串吗?如果数组内存中没有0就未存储字符串 char str15=a,b,c,d,e;/不是字符串 char str25=a,b,c;/为赋值的元素为0,因此是字符串 char str3=a,b,c,d,e;/省略数组长度赋值,长度根据字符的个数确定,不会自动补充0,因此不是字符串总结:用字符集合的方式赋值时,养成习惯在末尾补充0否则不是字符串2. 字符串字面值方式(推荐) char ch5=abcd;/系统会自动在后面加0,即ch4=0 char ch3=abcde;/错误,超出数组的长度 char ch5=abcd

6、e;/错误,超出数组长度char ch=abc;/推荐!系统会自动在后面加0,即a3=0,所以该数组的元素个数是4个。四、字符串的存储结构和指针(重点)1.存储结构字符串占据连续的内存单元以0结束demo char a = ;2.字符串的首元素地址:C语言中用字符串常量或一维数组的数组名表示字符串的首地址(规定)demo#define ARR_SIZE 100int main(void) char aARR_SIZE = china;/画内存图和地址关系* printf(%Xn, a); printf(%Xn, china); return 0;3.使用指针指向一个字符串 1.可以在定义字符指

7、针变量的同时,将存放字符串的存储单元起始地址赋值给指针变量。 char * ps1=form one;/这里是把存放字符串常量form one的无名存储区的首地址 /赋值给指针变量ps1,使ps1指向字符串的第一个字符f。 char str=form two,*ps2=str; 2.通过赋值运算使指针指向一个字符串 char str=from two ,*p2; p2=str;/词语等价于 p2=&str0; 通过赋值语句使指针p2指向了存放字符串的字符数组str的首地址 注意: 1指针变量指向的是字符串的首地址,字符串是另外占据存储空间的。(画图说明) 2字符串赋值给字符数组时,字符串就是存

8、放字符数组的存储空间。(画图说明)4.输入输出的基本原则原则:输入和输出必须给出字符串的首地址1字符串的输出: demo输出字符串常量-字符串常量本身表示字符串的首元素地址 printf(chinan); printf(%sn, china); puts(china);/会自动换行 puts();/输出换行 printf(学渣.n); puts和printf的区别:puts会自动输出换行而printf不会,推荐用puts demo输出存储在字符数组中的字符串 #define ARR_SIZE 100 char aARR_SIZE = chinan; char bARR_SIZE = ; cha

9、r cARR_SIZE = 学渣.n; printf(a);/ERROR 必须加%s printf(b);/ERROR 必须加%s printf(c);/ERROR 必须加%s printf(%s, a); printf(%s, b); printf(%s, c); puts(a); puts(b); puts(c);2字符串的输入:scanf_s 和gets demo: 从键盘上输入字符串,并用字符数组存储 #include #define ARR_SIZE 100 /*一维字符数组a 的长度*/ int main(void) char aARR_SIZE = ;/养成赋初值的习惯,通常用空

10、串给字符数组赋初值 printf(输入字符串(不能含有空格,长度不超过%d):, ARR_SIZE-1); scanf_s(%s, a);/scanf_s不能接受含有空格的字符串,否则无法接受空格后面的字符 printf(你刚才输入的字符串为:%sn, a); printf(输入字符串(可以含有空格,长度不超过%d):, ARR_SIZE-1); gets(a);/gets可以接受含有空格的字符串,否则无法接受空格后面的字符 puts(a); return 0; 总结:scanf_s:不能完整的接收含有空格的字符串而gets可以,因此推荐用getsprintf:输出字符串不会自动换行,因此推荐

11、用puts思考:找出下面语句中的错误char a100 = china;a0 = b;char* p = a;*p = m;char* q = japan;*q = m;-PM-五、字符串处理(输入输出、赋值、连接、比较.)注意:必须包含stdio.h好string.h1.求字符串长度函数 int strlen(const char* pStr)/参数:字符串指针 返回值:长度 demo int main(void) char a=abcde; printf(%d, strlen(a); printf(%d, strlen(l love c teacher.n); printf(%d, str

12、len(1920abc); printf(%d, strlen(192012abc); return 0; 2.字符串复制函数 char* strcpy(char* pDes, const char* pSrc)/要确保pDes足够长,否则产生运行时错误 demo 交换字符串 #define ARR_SIZE 100 int main(void) char aARR_SIZE = china; char bARR_SIZE = japan; char tARR_SIZE = ; strcpy(t, a); strcpy(a, b); strcpy(b, t); puts(a); puts(b)

13、; return 0; 思考:找出下面程序的错误 char aARR_SIZE = china; char bARR_SIZE = japan; char tARR_SIZE = ; t = a; a = b; b = t; 思考:找出下面程序的错误 #include int main(void) char a=usa; char b10=japan; strcpy(a,b);/a内存不足,对未知内存进行改写,产生了运行时错误 puts(b); return 0; 3.字符串连接函数 char* strcat(char* pDes, const char* pSrc)/要确保pDes足够长,否

14、则产生运行时错误 #include #include int main(void) char a10=china; char b10=japan; char s=GoldenGlobal; char * p = View; strcat(a,b); puts(b); strcat(s, p); puts(s); return 0; 思考:下面程序的错误 #include #include int main(void) char a=china; char b10=japan; strcat(a,b);/a内存不足,对未知内存进行改写,产生了运行时错误 puts(b); return 0; 4.

15、int strcmp(const char *pDes, const char *pSrc); 设这两个字符串为str1,str2, 若str1=str2,则返回零; 若str1str2,则返回正数。 比较规则:从左向右的字符两两比较,如果相同则继续向后比较,直到遇到第一个不相同的字符就以该不同的字符作为比较的依据 #include int main(void) char a100 = 123ac; char b100 = abc; printf(%dn, strcmp(china, japan); printf(%dn, strcmp(chine, chinese); printf(%dn,

16、 strcmp(CHINA, china); printf(%dn, strcmp(张三, 李四);/不支持中文字符的大于或小于比较,仅支持中文串的等于比较 printf(%dn, strcmp(a, b); printf(%dn, strcmp(australia, b); printf(%dn, strcmp(a usa); return 0; 5.小写字母转大写字母char *strupr(char* pStr); #include #include int main(void) char s=Copywrite 1999-2000 GGV Technologies;char b100

17、= ; puts(strupr(s); strcpy(b, s); puts(b); return 0; 6.大字母转小写字母 char *strlwr(char* pStr); #include #include int main(void) char s=Copywrite 1999-2000 GGV Technologies; char b100 = ; puts(strlwr(s); strcpy(b, s); puts(b); return 0;六、课后作业练习1:DIY库函数DIY strcpy demo1 char* myStrcpy1(char *pDes, const cha

18、r *pSrc) if(0 = pDes | 0 = pStr) return 0; char* t = pDes; while(*pStr != 0) *pDes+ = *pStr+; *pDes = 0; return t; demo2 char* myStrcpy2(char *pDes, const char *pSrc) if(0 = pDes | 0 = pStr) return 0; char* t = pDes, i = 0; while(pSrci) pDesi = pSrci; i+; pDesi = 0; return t; int main(void) char a10

19、0 = china; char b100 = japan; char t100 = ; myStrcpy1(t, a); myStrcpy1(a, b); myStrcpy1(b, t); puts(a); puts(b); 练习2:DIY库函数 int strcmp(const char *pDes, const char *pSrc) int myStrcmp(char* pStr1, char* pStr2) if(0 = pDes | 0 = pStr) return 0; while(*pStr1 != *pStr2) return *pStr1 - *pStr2; return *

20、pStr1 - *pStr2; 练习3:DIY库函数 int strlen(const char* pStr);int myStrlen(char* pStr) int len = 0; if(0 = pStr) return -1; while(*pStr) len+; pStr+; return len;int main(void) printf(%d, myStrlen(china0japan); return 0;练习4:DIY库函数 char *strcat(char *dest, const char *src);char *strcat(char *dest, const cha

21、r *src) if(0 = dest | 0 = src) return 0; char* p = dest; while(*dest) dest+; while(*str) *dest+ = *str+; *dest = 0; return p; demo:编写函数,从字符串中找出空格,并返回空格个数 int check(char *p,int len); int main(void) char a20=we are family; int spaceNum = 0; spaceNum = chack(a,20); printf(%dn,spaceNum); return 0; /利用字符

22、串以0结尾的特性,对字符串进行检测 int check(const char *p) if(0 = p) return -1; int num = 0;/统计空格个数 while(*p != 0) if(*p= )num+; p+; return num; demo:编写函数,从字符串中找出某个字符,并用逗号替换,并返回空格个数 int exchang(char *p, char n); int main(void) char a=we are family; int spaceNum = 0; spaceNum = exchange(a); printf(%dn,spaceNum); puts(a); return 0; int exchang(char *p,char n) int num = 0; while(*p != 0) if(*p= ) *p = ,; num+; p+; return num;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1