《C语言教案-第十周.doc》由会员分享,可在线阅读,更多相关《C语言教案-第十周.doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第十节 数组字符数组1:通过对本节课的学习,能够了解、掌握字符数组定义、初始化、引用、字符串结束标志和在程序中使用。1.1学习目的:1. 掌握字符数组定义、初始化、引用2. 掌握字符串结束标志3. 能够实现字符数组的应用1.2学习内容:1. 字符数组定义、初始化、引用2. 字符串结束标志、字符数组的应用13学习重点:字符串结束标志、字符数组的应用1.4教学方法:讲授法、课件演示15学习方法:听课、做笔记、课后作业16学习时间第十六周2:回顾上一节:10分钟1. 二维数组定义、初始化及引用3:课程知识点讲解:具体知识点1:字符数组的定义10分钟引例:【案例6.15】 输出字符串“I am hap
2、py”中的所有字符。编程分析:用字符数组存放字符串的每个字符,循环语句逐个输出字符。程序如下:main () char c10;int i;c0=I;c1= ;c2=a;c3=m;c4= ;c5=h;c6=a;c7=p;c8=p;c9=y; for(i=0;i10;i+)printf(%c,ci);printf(n); 程序运行结果:I am happy程序说明:(1)字符数组与前面学过的数组一样都必须先定义后使用,定义的方法也与前面介绍的类似,形式如下:char 数组名常量表达式如:char c10; 则定义c为字符数组,包含10个元素。(2)字符数组赋值方法与一般的数组是一样的。c0 c1
3、 c2 c3 c4 c5 c6 c7 c8 c9Iamhappy需要说明的是,由于字符型与整型是互相通用的, 故字符数组的处理基本上与整型数组相同,只不过每个元素的值都是小于整数255而已。 具体知识点2:字符数组的初始化10分钟 对字符数组初始化,最容易理解的方式是逐个字符赋给数组中各元素。如:char c10=I, ,a,m, ,h,a,p,p,y;把10个字符分别赋给c0到c910个元素。如果花括弧中提供的初值个数(即字符个数)大于数组长度,则作语法错误处理。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即0).如:char c10=c, ,p
4、,r,o,g,r,a,m;赋值后数组状态如图6.11所示。c0 c1 c2 c3 c4 c5 c6 c7 c8 c9cprogram0图6.11如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。如:char c =I, ,a,m, ,h,a,p,p,y;数组c的长度自动定为10。用这种方式可以不必去数字符的个数,尤其在赋初值的字符个数较多时,比较方便。案例讲解【案例6.16】输出字符串welcome。程序如下:main() int i ;char str =w , e , l , c , o , m , e ;for(i=0 ; i7 ; i
5、+) printf(%c , stri) ; 程序运行结果:welcome 【案例6.17】 输出一个钻石图形。main() char diamond5= , ,*, ,*, ,*, *, , , ,*, ,*, ,*, , ,*;int i,j;for(i=0;i5;i+)for(j0;j5;i+)printf(%c,diamondij);printf(n); 程序运行结果:* * * * * * * * 具体知识点3:字符串和字符串结束标志15分钟 在C语言中,将字符串作为字符数组来处理。这个字符串的实际长度与数组长度相等。为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”,以字
6、符0代表。如果有一个字符串,其第10个字符为0,则此字符串的有效字符为9个。也就是说,在遇到字符0时,表示字符串结束,由它前面的字符组成字符串。系统对字符串常量也自动加一个0作为结束符。例如“C program”共有9个字符,但内存中占10个字节,最后一个字节放0,字符串作为一维数组来存放。说明:0代表ASCII码为0的字符,从ASCII码表中可以查到,ASCII码为0的字符不是一个可以显示的字符,而是一个“空操作符”,即它什么也不干。用它来作字符串结束标志不会产生附加的操作或增加有效字符,只起一个供辨别的标志。具体知识点4:字符串的输入输出及字符串处理函数15分钟1、逐个字符输入输出,用格式
7、符%c输入或输出一个字符。或将整个字符串一次输入或输出。用“%s”格式符,意思是输出字符串string2、 2.1 字符串输入输出函数(gets 和puts)2.2 字符串连接函数(strcat)2.3 字符串的复制函数(strcpy) 2.4 字符串比较函数(strcmp)2.5 求字符串长度的函数(strlen)2.6 strlwr(字符串)将字符串中大写字母转换成小写字母lwr1owercase(小写)的缩写。2.7 strupr(字符串)将字符串中的小写字母转换成大写字母。具体知识点5:字符数组应用举例20分钟案例讲解【案例6.24】用gets函数和strcmp函数编写密码检测程序。假
8、设三次密码输入不正确,退出程序。 编程分析:最少提供3次键盘输入字符串,并与正确口令比较,若相等程序进入相应的程序段。若不相等给出提示,错误输入3次终止程序。【案例6.25】有三个字符串,要求找出其中最大者。编程分析:今设一个二维的字符数组str,大小为320,即有3行20列,每一行可以容纳20个字符。【案例6.26】输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。编程分析:单词的数目可以由空格出现的次数决定(连续的若干个空格作为出现一次空格;一行开头的空格不在内)。如果测出某一个字符为非空格,而它的前面的字符是空格,则表示“新的单词开始了”此时使num(单词数)累加1。如果当前字符
9、为非空格而其前面的字符也是非空格,则意味着仍然是原来那个单词的继续,num不应再累加1。前面一个字符是否空格可以从word的值看出来,若word0,则表示前一个字符是空格,如果word=1,意味着前一个字符为非空格。4 本节总结 10分钟学生问题汇总: 问题1: 将字符数组定义为一个字符 问题2: 混淆c和“c”的意义 问题3: 字符数组整体输入时用取地址符号是不对的作业: 习题1:有一行电文,已按下面的规律译成密码 AZ az BY by CX cx 即第一个字母变成第二十六个字母,第i个字母变成第(26i+1)个字母。非字母字符不变,要求编程将密码译回原文,打印密码和原文。 习题2:有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文的写字母、小写字母、数字、空格以及其他字符的个数。 习题3:输入两个字符串,并将其中较小的字符串连接到大的字符串后面。