内容正文:
课 题
6.3字符型数组
教 学
目 的
1、 掌握字符数组的定义、初始化,结束标志
2、 字符串数据在内存中的存放
教 材
分 析
教学重点
数组的定义
教学难点
符数组定义与存放
课时安排
1
教学方法
讲授与演示法相结合讨论法
教具
计算机、投影仪
教
学
内
容
及
过
程
设
计
第一课时
一、 复习引导
从一般的一维数组、二维数组到特殊的字符数组
二 讲授新课
一)、字符数组的定义:
char 数组名[exp]; 如:char c[10];
二)、字符数组的初始化
1. 给每一个字符型数组元素依次赋给一个单字符。
如:char str[6]={‘C’, ‘h’, ‘i’, ‘n’, ‘a’, ‘\0’};
2. 直接在赋值号右边给出字符串常量。如: char str[6]=“China”;
注意:a) 字符数组的长度可以通过赋初值的方式隐含定义;如:
char str[ ]={‘C’, ‘h’, ‘i’, ‘n’, ‘a’, ‘\0’};
char str[ ]=“China”;
b)如果括号中提供的初值个数(即字符个数)大于数组长度,则作语法错误处理。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定义为空字符(即‘\0’)。
c) 如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。
char c[]={′I′,′ ′,′a′,′m′,′ ′,′h′,′a′,′p′,′p′,′y′};数组c的长度自动定为10。
三)、字符串和字符串结束标志
为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”——‘\0’
字符数组并不要求它的最后一个字符为′\0′,甚至可以不包含′\0′。
例如:char c[5]={′C′,′h′,′i′,′n′,′a′}; 但是由于系统对字符串常量自动加一个′\0′。因此,为了使处理方法一致在字符数组中也常人为地加上一个′\0′。
例如:char c[6]={′C′,′h′,′i′,′n′,′a′,′\0′};
组讨论思考:
定义字符数组∶char c[]={“Pascal program”};要用一个新的字符串代替原有的字符串”Pascal program” ,从键盘向字符数组输入∶Hello如果不加′\0′的话,字符数组中的字符将是什么?参考答案:Hellol program
例如:下面是对s的初始化,其中不正确的是 D 。
A)char s[5]={"abc"}; B)char s[5]={'a','b','c'};
C)char s[5]=""; D)char s[5]="abcde";
三、小结
1、 字符串的结束标记
2、字符数组的定义存放
第二课时
一、 复习引导
字符数组的定义与引用
二 讲授新课
一)、字符数组的输入和输出
1、字符数组的输出
(1)用格式符“%c”控制的 printf(),逐个字符输出
(2)用格式符“%s”控制的 printf();字符数组值整体输出
(3)puts (字符数组名);字符数组值整体输出
例如:
char c[]={″China″};printf(″%s″,c);
在内存中数组c的状态
说明:(1)用“%s”格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名。
(2)如果数组长度大于字符串实际长度,也只输出到遇′\0′结束。
(3)输出字符不包括结束符′\0′。
(4)如果一个字符数组中包含一个以上′\0′,则遇第一个′\0′时输出就结束。
(5)可以用scanf函数输入一个字符串
如果利用一个scanf函数输入多个字符串,则在输入时以空格分隔
例如:
char strl[5],str2[5],str3[5];scanf(″%s %s %s″,str1,str2,str3);
输入数据:How are you?
数组中未被赋值的元素的值自动置′\0′
(6)puts用字符数组名,而不用数组元素名;
(7)输出的字符串中可含转义字符;如:static char str[]=“China
Beijing”; puts(str);
2、字符数组的输入
(1)用格式符“%s”控制的scanf();
如: static char str1[5],str2[5],str3[5];scanf(“%s%s%s”, str1,str2,str3); /*不能写成&str1*/
若输入数据流为:How are you? str1、str2、str3分别接收到“How”、“are”、“you?”,且在各个字符串的最后自动加‘\0’。
如果利用一个scanf函数输入多个字符串时,则以空格分隔;
(2) 用gets( );如:char ch[16]; gets(ch);
注意:
①gets一次只能输入一个字符串;
②自变量应是数组名,而不能是数组元素名;
③要求从键盘上输入一个字符串直到遇到换行符为止,系统会自动把换行符换成“\0”加在字符串末尾。
与scanf不同,输入字符串中的空格也会被接收。
scanf函数中的输入项如果字符数组名。不要再加地址符&,因为在C语言中数组名代表该数组的起始地址。下面写法不对:
scanf(″%s″,&str)
三、课堂小结
1、 字符串的输出与输入
四、作业:
汇编P79 29-81 (其中34.35.39要求上机调试
学科网(北京)股份有限公司
$$