5.4字符数组与字符串(课件)-《 C语言程序设计》同步教学(电子工业出版社)

2024-08-05
| 35页
| 99人阅读
| 7人下载
普通

内容正文:

项目五 数组 1 C语言程序设计基础 知识目标 了解数组 掌握一维数组的使用方法 掌握二维数组的使用方法 掌握字符数组与字符串的使用方法 掌握数组的应用 技能目标 学会一维数组的使用方法 学会二维数组的使用方法 学会字符数组的使用方法 学会字符串的使用方法 思政目标 提高德、智、体、美、劳全面发展的意识 重视思想政治素质的培养 2 任务4 ——字符数组与字符串 3 一维字符数组定义的语法格式: char 数组名[常量表达式]; 二维字符数组定义的语法格式: char 数组名[常量表达式1][常量表达式2]; 数组——基础篇 4.1字符数组的定义 4 (1)对一维字符数组a部分元素赋初值时,未赋值的元素自动赋值char类型默认值,即空字符null(即’\0’)。 (2)对一维字符数组a中所有元素赋初值时,可以不指定数组长度。 char a[ ]={‘a’,’b’,’c’,’d’,’e’}; (3)对二维字符数组a赋初值。 char a[2][3]={{‘1’,’*’},{‘\0’,’a’}; 数组——基础篇 4.2字符数组的初始化 5 字符数组元素的引用与数值数组元素引用方式相同。 一维字符数组的数组元素引用形式: 数组名[下标1] 二维字符数组的数组元素引用形式: 数组名[下标1][下标2] 数组——基础篇 4.3字符数组的引用 6 【例5-4】使用字符数组输出字符串“I love you China!”。 【解题思路1】 1. 需要定义一个字符数组存储字符串,定义一个一维字符数组即可。 2. 给一维字符数组元素赋初值时,注意不要遗漏了字符串中的空格字符,字符个数一共17个 char a[17]={‘I’,’ ’,’l’,’o’,’v’,’e’,’ ’,’y’,’o’, ’u’,’ ’,’C’,’h’,’i’,’n’,’a’,’!’}; 。 3. 定义循环变量i。 4. 使用循环for(i=0;i<17;i++) 输出数组内字符。 数组——基础篇 7 【程序代码】 数组——基础篇 8 【解题思路2】 1.由于字符串中字符个数较多,算字符个数容易出错,初时化时可以使用不指定数组长度的方式进行赋值初。 2. 此时,在使用循环输出数组内字符时,由于不知道循环次数,可采用循环while(a[i]!=’\0’) 输出数组内字符。 数组——基础篇 9 【程序代码】 数组——基础篇 10 【运行结果】 数组——基础篇 11 字符串常量是用双引号括起来的一串字符,并用’\0’(ASCII码值为0)作为字符串的结束标志,结束标志占一个字节的内存空间,但不计入串的长度。 初始化字符数组时,可使用字符串常量对字符数组赋初值。 数组——基础篇 4.4字符串 12 字符数组的输入输出有两种方式: 1.逐个字符输入和输出 用格式化符号“%c”逐个输入或输出一个字符。 若已定义字符数组a, 输入一般格式: 在循环中使用scanf(“%c”,&a[i]); 输出一般格式: 在循环中使用printf(“%c”,a[i]); 数组——基础篇 4.5字符数组的输入输出 13 2.整个字符串输入和输出 用格式化符号“%s”输入或输出整个字符串。 若已定义字符数组a, 输入一般格式: scanf(“%s”,a); 输出一般格式: printf(“%s”,a); 注意:a为数组名,也即是数组a的首地址。 数组——基础篇 14 【例5-5】通过键盘输入字符串“我爱我的祖国,我爱我的家乡,我爱我的学校!”并将字符串输出显示。 【解题思路】 1. 定义一个能足够存下字符串的字符数组。估算一下50字节空间足够。当然有同学想具体算一下准确的字符串长度也是可以的,但要注意1个汉字占2个字节,使用字符串赋值时,不要漏算字符串最后的‘\0’。 2. 在使用输入语句时,一般需要在之前使用printf()对输入的内容进行提示,否则编译运行时,不知该输入什么内容。请大家养成良好的习惯。 数组——基础篇 15 【程序代码】 数组——基础篇 16 【运行结果】 数组——基础篇 17 说明: 使用scanf(“%s”,a); 输入字符串时,不允许输入空格,当输入空格时,虽仍然能继续输入字符,但后续输入的字符无法存入字符数组。 如例5-5运行时,输入的字符串为“I love you China!”,输出的字符串为“I”。 也就是说,如果要输入的字符串中含有空格,使用scanf()输入时,必须使用循环进行逐个字符输入,代码如下。 数组——基础篇 18 数组——基础篇 19 C语言的函数库中提供了专门用来处理字符串的函数,使用这些函数可以大大减轻编程的负担。 用于输入输出字符串的函数,在使用前,应包含头文件”stdio.h”,其它的字符串处理函数,在使用前,应包含头文件”string.h”。 数组——基础篇 4.6常用字符串处理函数 20 1. 字符串输入函数 gets() 格式: gets(字符数组名); 功能: 从终端上(如键盘)输入一个字符串到字符数组,该函数得到一个函数值,即为该字符数组的首地址。gets()函数允许输入空格,当输入的字符串含有空格时不会被截断,以enter确定字符串输入结束。 数组——基础篇 21 2.字符串输出函数 puts() 格式: puts(字符数组名); 功能: 把字符数组中的字符串输出到显示器上。 数组——基础篇 22 说明: (1)使用scanf(“%s”,a); 输入字符串时,不能接收空格,gets()函数允许输入空格,因此输入整个字符串对字符数组赋值时,一般使用gets()函数。 (2)gets()函数从标准输入设备上读字符,可以无限读取,不会判断定义的字符数组上限,仅以回车结束读取,因此编写程序时,要确保buffer(缓冲)空间足够大,以便在读操作时不发生溢出。 数组——基础篇 23 【例5-6】使用gets()函数获取任意字符串到字符数组,并输出字符串。 【程序代码】 数组——基础篇 24 【运行结果】 数组——基础篇 25 3.测试字符串长度函数 strlen() 格式: strlen(字符数组名) 功能: 测试字符串的实际长度(不含字符串结束标志字符‘\0’),并作为函数返回值。 数组——基础篇 26 【例5-7】测试字符串1“I love you China .”和字符串2“我爱你中国。”(注意标点符号) 【程序代码】 数组——基础篇 27 【运行结果】 数组——基础篇 28 4.字符串连接函数 strcat() 格式: strcat(目标字符数组名,源字符数组名) 功能:删去目标字符数组后的字符串结束标志字符‘\0’,把源字符数组中的字符串连接到目标字符数组的后面。该函数返回值是目标字符数组的首地址。 数组——基础篇 29 【例5-8】 字符串1“我的家乡是:”,字符串2,输入您的家乡名,作为字符串2的内容。使用连接字符串,将字符串2连接到字符串1之后。 【程序代码】 数组——基础篇 30 【运行结果】 数组——基础篇 31 5.字符串复制函数 strcpy() 格式: strcpy(目标字符数组名,源字符数组名) 功能: 把源字符数组中的字符串,复制到目标字符数组中,结束字符‘\0’也一同复制。源字符数组也可以是一个字符串常量,这时,相当于把一个字符串赋予一个字符数组。 数组——基础篇 32 例如: (1)char a[60]; char b[ ]=”富强,民主,文明,和谐,自由,平等,公正,法治,爱国,敬业,诚信,友善”; strcpy(a,b); 表示将字符数组b中字符串复制到a数组中。 (2)char a[60]; strcpy(a,”富强,民主,文明,和谐,自由,平等,公正,法治,爱国,敬业,诚信,友善”); 表示将字符串复制到a数组中。 数组——基础篇 33 6.字符串比较函数 strcmp() 格式: strcmp(字符数组1名或字符串1,字符数组2名或字符串2) 功能:按照ASCII码值大小将两个字符串中字符从左至右逐个比较,直到出现不同的字符或遇到’\0’为止。如果全部字符相同,则认为相等;如果出现不相同的字符,则以第一次不相同字符的比较结果为准返回函数值。 ①字符串1 等于 字符串2,函数值=0; ②字符串1 大于 字符串2,函数值>0; ③字符串1 小于 字符串2,函数值<0。 ANSI标准规定,返回值有正数,负数,0。而确切数值是依赖不同的C实现的。比如,有些会把两个字符的ASCII码之差作为比较结果由函数值返回。但一般来说,返回值会是:0,1,-1。 数组——基础篇 34 7.大写转小写函数strlwr()与小写转大写函数strupr() 格式: strlwr(字符数组名或字符串) 功能: 将字符串中大写字母转为小写字母。 格式: strupr(字符数组名或字符串) 功能: 将字符串中小写字母转为大写字母。 数组——基础篇 35 $$

资源预览图

5.4字符数组与字符串(课件)-《 C语言程序设计》同步教学(电子工业出版社)
1
5.4字符数组与字符串(课件)-《 C语言程序设计》同步教学(电子工业出版社)
2
5.4字符数组与字符串(课件)-《 C语言程序设计》同步教学(电子工业出版社)
3
5.4字符数组与字符串(课件)-《 C语言程序设计》同步教学(电子工业出版社)
4
5.4字符数组与字符串(课件)-《 C语言程序设计》同步教学(电子工业出版社)
5
5.4字符数组与字符串(课件)-《 C语言程序设计》同步教学(电子工业出版社)
6
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。