内容正文:
5.3 字符数组的定义和使用
一、教学目标
1.掌握字符数组的定义和使用方法。
2.掌握字符串的概念和应用。
3.掌握字符数组的输入与输出。
二、重点难点
1.重点:(1)字符数组的定义和使用方法。
(2)掌握字符数组的输入与输出。
2.难点:了解常用的字符串处理函数。
三、教学时间
本任务教学,课内计划1课时。
4、 教学过程
教学过程
教学环节
教师活动
学生活动
设计意图
导入新课
提问:
(1) 何为数组?
数组是有序数据的集合
(2)数组的定义形式?
类型说明符 数组名[常量表达式]
例: int a[10]
结论:当数组长度为n,则元素下标从0~n-1
(3) 数组的赋值形式
数组在计算机的内存中占据一片连续 空间
数组赋值时每个元素的值自动按 顺序 排放
例:若要使得
a[0]=1 a[1]=3 a[2]=5 a[3]=7 a[4]=9
a[5]=11 a[6]=13 a[7]=15 a[8]=17 a[9]=19
int a[10]={1,3,5,7,9,11,13,15,17,19}
进入情景调动积极性,获取信息,分析问题。
思考、回答
充分调动学生的积极性,引入话题,为下一步学习做铺垫
学生带着问题学习,学生掌握知识点,培养学细致观察的能力、认真的学习态度
讲授新课
字符数组
例: int a=10
float b=0.75
char c=‘a’
C语言中有字符常量和字符变量,有字符串常量,但没有字符串变量。如何存储字符串?
前面在对数组的介绍中主要是针对整数和实数类型举例,在具体应用中,字符数组是常用的一种数组类型。字符数组即数组元素为字符类型。字符数组可以存放字符串数据。
一、字符数组的定义和引用
字符数组的定义类似于前面介绍的一维数组的定义,只是它的元素类型为char,元素的下标仍从0开始。
例如:
char s[6];
它有6个元素:s[0]、s[1]、s[2]、s|3]、s[4]、s[5]。
字符数组的每个元素存储一个字符,因此对数组元素应该赋予字符类型或整数类型的值。
在C语言中,字符串是当做字符数组处理的,同样可以用字符数组来存储字符串。例如:
char s1[10]={ ‘f', 'a','s', 'h',‘i',‘o', 'n' };
实际上是定义了一个字符数组s1存放字符串"fashion", 当然s1作为一个字符数组变量也可以存储其他字符串的内容。
C语言规定字符’\0'(一个ASCII值为0的字符)作为字符串的结束标志符。因此,在存储字符串常量时自动在其末尾添加’\0'。例如,字符串常量"perfect"在内存中的表示如图5- 6所示。
在实际应用中,人们关心的是字符串的长度而不是字符数组的长度。上例中,字符数组s1有10个元素,占10个字节,它存储的字符串长度为7;而字符串常量"perfetr “有7个字符,字符串长度为7,而在内存中它占8个字节(多存储了一个字符串结束符’\0' )。
二、字符数组的初始化
字符数组的初始化与一维数组相同,字符数组的初始化也可以全部赋值或部分赋值,例如:
①char s1[10]={‘f', 'a', 's', ‘h', ‘i’, 'o', 'n' };
该定义只对前7个元素赋值,后3个元素为零值(即ASCII码为0的字符)。它在内存中的表示如图5-7所示。
同其他数组一样,若{}内的字符个数超过数组长度将作为语法错误处理。
②char s2[10]=("fashion"};
实际效果同①,只是书写更简洁。但这两种方式在使用时字符个数应少于数组长度,确保末尾至少有一个’\0',这样做是为了程序处理方便和避免出错。
③char s3[ ]={ "perfect" }, s4[ ]="perfect";
在定义字符数组时,若一维长度缺省,则字符串长度由赋值号右边的字符串常量的字符个数决定。系统在字符串常量末尾自动加一个’\0' 作为结束符, "prefect"的串长为7,因此字符数组s3和s4的数组长度均为8,字符数组s3和s4的存储表示如图5-8所示。
由于有了‘\0'作为字符串结束标志,在实际应用中往往使用该标志来判断字符串是否结束,而不是使用数组长度。但定义字符数组时应确保其长度能足够容纳赋值引人的字符串。
同其他类型的数组一样,字符数组的输入与输出可以逐个元素进行处理;但由于字符数组本质上存储的是字符串数据,因此字符数组也可以按照字符串形式处理,可以整体输入和输出。
三、字符数组的输入/输出