《C语言程序设计基础》教案第16课数组的使用(三).docx
教案首页周次第周时间年月日专业班级:授课章节单元6:数组的使用(三)授课方式理论课口实验课口实训课教学做一体化课程日教学时数2学时,教学目的理解字符数组的含义;掌握字符数组的定义、初始化及引用方法;掌握字符串及其处理函数。教学组织教学内容教学过程设计及时间分配1 .复习二维数组2 .字符数组的定义与初始化3 .字符串的与处理函数4 .案例与实践操作1 .复习讲授互动5分2 .字符数组的定义讲授10分3 .字符数组的初始化演示、讲授10分4 .字符串的引用演示、操作15分5 .字符串处理函数演示、讲授25分6 .随堂练习案例20分7 .小结、作业及实验安排讲授5分教学重点教学难点重点:字符数组与字符串的定义难点:字符串操作函数教学手段理论讲授、演示、对比讲解、案例分析双语教学characterstring一字符串bubblesort一冒泡排序作业及思考题作业:单元总结与单元练习知识拓展:算法的空间复杂度参考资料L谭浩强主编的C语言程序设计(清华大学出版社)。2 .丹尼斯里奇C语言程序设计(第二版)。3 .NCRE考试用教程C语言程序设计(高等教育出版社)。4 .网络教学资源:国家精品课网站。本讲内容学法指导对于字符串的使用,首先理解其存储形式,在此基础上掌握字符串的几个重要处理函数,个别函数相对抽象,需要通过实践加深印象。课程:C语言程序设计学年第学期授课教师:单元6-3数组的使用(教案)教学内容及教学过程说明步骤一复习二维数组的定义二维数组的初始化二维数组元素的引用步骤二讲授6.3字符数组与字符串字符数组:存放字符型数据的数组,其中每个数组元素的值都是一个字符。字符串:C语言用字符数组实现字符串,此时需在字符数组有效字符的末端存放一个字符串结束标志'0'。6.3.1字符数组的定义及初始化【例6-16类比(l)chars31,str45;定义一维字符数组S和二维字符数组str(2) chars3=V,b,c,;定义一维字符数组s,同时为各个元素初始化(3)charstr6=,C,h,i,n,a,0,);定义一维字符数组存放字符串"China"(4) charslr6="China");与(3)等价,可简写为CharSti*6="China";(5) charstr310=“China”JltaIy”,"Germany”;定义二维字符数组str,存放三个字符串实例说明注意特殊结束符6. 3.2字符串及其处理函数程序开头使用编译预处理命令#include<string.h>o1 .字符串输入函数gets()函数调用格式:gets(str);函数功能:在标准输入设备输入一个字符串,以回车符结束,并将字符串存放到Str指定的字符数组或存储区域中。注意2.字符串输出函数PlItS()函数调用格式:puts(str);函数功能:将SIr中存放的字符串输出到显示器,输出时自动将字符串结束标志0'转换为回车换行符。【例6-18charslr201="China";puts(str);输出结果为:China3.求字符串长度函数StHeII()函数调用格式tStrlen(Str);函数功能:求Str所代表的字符串的长度,不包括字符串结束标志,【例6-19重点intIen;charstr2O=,'China"Ien=Strlen(Str);/Ien的值为54.字符串复制函数StrCPy()函数调用格式:StrCPy(StrI,str2);函数功能:将字符串str2复制到Slrl对应的字符数组或存储区域中。【例6-20重点强调charstrl20,str220="China"strcpy(strl,str2);puts(strl);输出字符串strl,即China难点分析算法5.字符串连接函数StrCat()函数调用格式:StrCat(Strl,st2);函数功能:去掉Strl后的(T,将字符串str2连接到Strl的有效字符之后。【例6-21charStrl20="Hello!'str220="China."strcat(strl,str2);puts(strl);输出字符串StrL即HeIlo!China.需要说明的是,Strl所对应的存储空间要能容得下连接后的字符串。6.字符串比较函数strcmp()函数调用格式:SIrCmP(SIrI,slr2);重点分析函数功能:按字典序比较字符串Strl和str2的大小。比较规则:将两个字符串自左至右逐个字符按ASCII值大小比较,直到出现不同的字符或遇'0'为止。若全部字符相同,则认为两个字符串相等,返回O值;否则,计算第一对不同字符的ASCII值之差,若为正整数,则strl>str2,返回值为1;若为负整数,则StrkStr2,返回值为6.4综合应用案例【例623采用冒泡法对一维数组中的十个整数排序。分析,设一维数组a有N个元素,要求从小到大排序。冒法排序的过程描述如下:(1)每次从首元素开始两两比较,即aj和aj+l比较,若aj>aj+l则两元素交换,否则不交换。(2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。每对元素比较后都可得到“小数在先,大数在后”的结果,这样进行一轮以后,数组最大值就排在了数组最后一个位置。(3)针对所有的元素(除最后一个元素)重复以上的步骤,就排好数组最后两个位置。(4)依此类推,经过Nj轮比较后完成排序。程序实现代码如下:重点难点结合图示#include<stdio.h>#defineN10voidmain()(inti,j,k,t,aN;Printf("请输入d个整数:n”,N);/检入待排序的N个整数for(i=0;i<N;i+)scanf("%d"ai);for(i=O;i<N-l;i+)/N个整数需要N-I轮排序(for(j=OJ<N-l-i;j+)每轮排序中的两两比较(if(aj>a+l)t=aUl:aU=aU+l:aU+l=t;Prinlf("第d轮排序后的情况为:n*i+1):for(k=0;k<N;k+)输出每轮排序后的情况(if(k=N-l)printf("%d",ak);elseprintf(',%d,ak);Printf("n");)Printf(”数组冒泡排序最终结果为:n");for(i=0;i<N;i+)输出最终排序结果printf("%d",ai);printf("n");)步骤三课堂小结1 .字符串与字符数组注意:结束标志2 .字符串处理函数3 .冒泡排序步骤四实验与作业1 .实验内容(1)实训指导145利用VC环境实现该程序(3)实训指导2232 .课后作业(1)单元总结提升第4题(2)单元练习第一题15第二题45教学总结