ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:23.63KB ,
资源ID:20040494      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20040494.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言教案 第4章Word下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言教案 第4章Word下载.docx

1、1、一维数组的定义。数组同变量一样,也必须先定义、后使用。只有一个下标的数组称为一维数组。一维数组的定义格式为:类型说明符数组名常量表达式;(1)“数据类型”是指数组元素的数据类型。(2)数组名,与变量名一样,必须遵循标识符命名规则。(3)“常量表达式”必须用方括号括起来,指的是数组的元素个数(又称数组长度),它是一个整型值,其中可以包含常数和符号常量,但不能包含变量。注意:C语言中不允许动态定义数组。(4)数组元素的下标,是元素相对于数组起始地址的偏移量,所以从0开始顺序编号。(5)数组名中存放的是一个地址常量,它代表整个数组的首地址。同一数组中的所有元素,按其下标的顺序占用一段连续的存储单

2、元。2、一维数组元素的引用。数组必须先定义后使用。C语言规定只能逐个引用数组元素而不能引用整个数组。数组元素的引用格式为:数组名下标。(1)“下标表达式”可以是任何非负整型数据,取值范围是0(元素个数-1)。特别强调:在运行C语言程序过程中,系统并不自动检验数组元素的下标是否越界。因此在编写程序时,保证数组下标不越界是十分重要的。(2)一个数组元素,实质上就是一个变量,它具有和相同类型单个变量一样的属性,可以对它进行赋值和参与各种运算。(3)在C语言中,数组作为一个整体,不能参加数据运算,只能对单个的元素进行处理。3、冒泡法排序的思路:比较两个相邻的数,将大的数往后调,一趟排序后最大的数沉到最

3、后。本例要求是降序排列,因此将小的数往后调。4、数组作为函数参数。数组名也可以作为实参和形参,传递的是整个数组。(1)数组元素作函数参数数组元素就是下标变量,它与普通变量并无区别。数组元素只能用作函数实参,其用法与普通变量完全相同:在发生函数调用时,把数组元素的值传送给形参,实现单向值传送。用数组元素作实参时,只要数组类型和函数的形参类型一致即可,并不要求函数的形参也是下标变量。换句话说,对数组元素的处理是按普通变量对待的。在普通变量或下标变量作函数参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元。在函数调用时发生的值传送,是把实参变量的值赋予形参变量。(2)数组名可作函数参数数

4、组名作函数参数时,既可以作形参,也可以作实参。数组名作函数参数时,要求形参和相对应的实参都必须是类型相同的数组(或指向数组的指针变量),都必须有明确的数组说明用数组名作函数参数,应该在调用函数和被调用函数中分别定义数组,且数据类型必须一致,否则结果将出错。例如,在本案例中,形参数组为a,实参数组为sco,它们的数据类型相同。C编译系统对形参数组大小不作检查,所以形参数组可以不指定大小。例如,本案例中的形参数组a。如果指定形参数组的大小,则实参数组的大小必须大于等于形参数组,否则因形参数组的部分元素没有确定值而导致计算结果错误。5、一维数组的初始化。在数组定义后对数组元素进行赋值,也可以在定义数

5、组的同时对数组元素赋以初值。(1)对全部数组元素赋初值。(2)部分元素赋初值。(3)数组中全部元素的值都赋为0。小结:本次课介绍了一维数组的定义、输入/输出方法以其如何运用一维数组进行程序设计。同变量一样,一维数组也要先定义后使用。定义数组时,常量表达式一定用方括号括起来。C语言中允许对数组进行初始化。输入案例程序教师可以进行启发式提问方式小结案例思考案例思考1、2作业 第4章 数组(2)1、熟练运用二维数组实现学生多科成绩的输入/存储/输出。2、掌握二维数组实现学生多科成绩的统计。3、掌握二维数组实现学生多科成绩的查询。1、运用二维数组的输入/存储/输出2、运用二维数组进行程序设计1、熟练运

6、用二维数组实现学生多科成绩的输入、存储和输出。2、掌握应用二维数组实现学生多科成绩的统计。3、掌握应用二维数组实现学生多科成绩的查询。思考,讨论,练习和巩固导入上一堂课介绍了一维数组的定义、引用、初始化以及运用一维数组进行程序设计的方法,这堂课介绍二维数组。二维数组的定义与一维数组类似,只是多了一个下标表达式。案例4.2:多科学生成绩的管理案例4_2.c*/(略)1、二维数组的定义。有两个下标的数组称为二维数组。二维数组的定义格式为:类型说明符数组名常量表达式1 常量表达式2;(1)数组元素在内存中的排列顺序为“按行存放”,即先顺序存放第一行的元素,再存放第二行,以此类推。(2)设有一个m*n

7、的数组x,则第i行第j列的元素xij在数组中的位置为:i*n+j(注意:行号、列号均从0开始计数)。(3)可以把二维数组看作是一种特殊的一维数组即它的每个元素又是一个一维数组。2、二维数组元素的引用。数组元素的表示格式为:数组名下标1 下标2(1)“行下标表达式”和“列下标表达式”,都应是整型表达式或符号常量。(2)“行下标表达式”和“列下标表达式”的值,都应在已定义数组大小的范围内。假设有数组x34,则可用的行下标范围为02,列下标范围为03。(3)对基本数据类型的变量所能进行的操作,也都适合于相同数据类型的二维数组元素。3、用二维数组名作函数参数。用二维数组名作为实参和形参(实参数组的首地

8、址传给形参数组)。由于数组各元素在内存中是按顺序存储,没有行列之分,因此被调用函数中对形参数组定义时必须指定第二维下标的大小(可以省略第一维的大小说明)。4、二维数组的初始化。(1)按行赋初值数据类型 数组名行常量表达式列常量表达式第0行初值表,第1行初值表,最后1行初值表;赋值规则:将“第0行初值表”中的数据,依次赋给第0行中各元素;将“第1行初值表”中的数据,依次赋给第1行各元素;以此类推。(2)按二维数组在内存中的排列顺序给各元素赋初值数据类型 数组名行常量表达式列常量表达式初值表;按2维数组在内存中的排列顺序,将初值表中的数据,依次赋给各元素。如果对全部元素都赋初值,则“行数”可以省略

9、。只能省略“行数”。例4.3 对二维数组全部数组元素赋初值4_2_1.c*/# include main ( ) int a23 =10,20,30,40,50,60,b 3 =10,20,30,40,50,60,i,j; for(i=0;i2;i+) for(j=0;j3;j+) printf(“a%d%d=%dt”,i,j,aij); printf(“n”); printf(“nn”); printf(“b%d%d=%dt”,i,j,bij); getch( );例4.4 对二维数组中的部分数组元素赋初值4_2_2.c*/(略)比较例4。3与4。4的运行结果。本次课介绍了地二维数组的定义、

10、输入/输出方法以其如何运用二维数组进行程序设计。可以把二维数组看作是一种特殊的一维数组即它的每个元素又是一个一维数组。输入程序调试运行分析讨论案例思考习题第4章 数组(3)掌握字符串的存储和使用方法。1、掌握字符串的存储和使用方法。2、掌握字符串的存储和使用方法。2、掌握使用常用的字符串处理函数方法。上一堂课介绍了二维数组的定义、引用、初始化以及运用二维数组进行程序设计的方法,本堂课介绍一种特殊的数组字符数组。字符数组可以定义成一维数组,也可以定义为二维数组,数组元素为字符型。在C语言中字符串的应用很普遍,用字符数组来存放字符串十分方便。案例4.3:学生姓名的排序案例4_3.c*/# incl

11、ude main() void sort(char name10); int i;char name510=“WangLi”,”ChenLin”,”HuangJin”,”WuHai”,”LiuXiu”;sort(name);for(i=0;5;i+)/*输出排序后的名单*/ puts(namei);getch(); void sort(char name10)/*用冒泡法对姓名进行升序排序*/ int i,j,flag;char temp10;4;flag=0;for(j=0;4-i; if(strcmp(namej,namej+1)0) strcpy(temp, namej);strcpy(

12、namej, namej+1);strcpy(namej+1, temp); flag=1;/*一趟排序中有出现数据交换*/ if(flag=0) break;/*一趟排序中没出现数据交换,数据已经有序*/1、字符数组的定义。用来存放字符数据的数组是字符数组。字符数组的一个元素存放一个字符。字符数组的定义格式与其它数组定义格式相似。它的定义格式为:char nameMAX1,cMAX1 MAX2 ;2、字符串概念。零个或多个字符组成的有限序列称为字符串。在C语言中,没有字符串变量。通常要用字符数组来存放字符串,并规定以字符0作为字符串结束标志。系统在存储字符串常量时,自动在字符串的末端加上一个

13、0作为字符串结束符。例如,WangLi字符串只有6个字母,系统在字母“i”后自动加上一个0作为字符串结束标志,这样在内存中就占用了7个存储单元。有了结束标志0后,字符数组的长度就显得重要了。在程序中往往不是根据数组的长度来决定字符串长度,而是依靠检测的位置来判断字符串是否结束。但在定义字符数组时要保证数组长度至少比字符串实际长度多1。3、字符数组的初始化对数组元素逐个赋值如果初值个数和数组长度相同,定义时可以省略数组长度用字符串常量来初始化字符数组用一个字符串作为初值时,字符串的两端使用双引号。4、排序方法与原理。本次课介绍了字符数组的定义、引用及初始化。字符数组用于存放字符串,以方便字符串的

14、处理。教师可以进行启发式提问案例思考第4章 数组(4)掌握使用常用的字符串处理函数方法1、掌握使用常用的字符串处理函数方法。掌握使用常用的字符串处理函数方法。上次课介绍了字符数组的定义、引用及初始化,还介绍了字符串,本次课介绍一些常用的字符串处理函数,运用这些函数可以更有效地处理字符串。总结讲解在C语言的标准函数库中提供了一些处理字符串的函数,这些函数原型保存在头文件string.h中。(1)gets(字符数组) 其功能是:从终端输入一个字符串到字符数组,并用0代替输入中的换行符。如执行:gets(name)从键盘输入:WangLi系统将输入的字符串“WangLi”送给字符数组name(共有7

15、个字符)。该函数执行成功时,返回字符数组的起始地址,否则返回NULL。用gets函数只能输入一个字符串。例如: gets(name1,name2);是错误的。(2)puts(字符数组)其功能是:将一个字符串输出到终端,并加上换行符n。char name=;puts(name);结果是:用puts函数输出的字符串中可以包含转义字符。例: char name=WangLitChenLin puts(name); WangLi ChenLin该函数执行成功时,返回最后一个字符的ASCII码值,否则返回EOF。用puts函数只能输出一个字符串。 puts(name1,name2);(3)strcpy(

16、字符数组1,字符数组2)strcpy是STRing CoPY(字符串复制)的缩写。它是“字符串复制”函数。将字符串2复制到字符数组1中去。例如本案例中: strcpy(temp, namei);当i=1时,将字符串”ChenLin”赋给变量temp。执行前后变量temp的状态如图4-6所示。执行前temp:执行后temp:ChenLi0图4-6 字符存储状态说明:字符数组1的长度大于字符串2的长度,以便容纳被复制的字符串。“字符数组1”必须写成数组名形式(如temp),“字符串2”可以是字符数组名,也可以是一个字符串常量。 strcpy(str1,ChenLin);复制时连同字符串后面的0一起

17、复制到字符数组1中。不能用赋值语句将一个字符常量或字符数组直接给一个字符数组。 str1=; str1=str2;这两个语句都是错误的。可以用strncpy函数将字符串2中前面若干个字符复制到字符数组1中去。 strncpy(temp,name1,4);其功能是将name1中前面4个字符复制到变量temp中去,然后再加上0。执行前后变量temp的状态如图4-7所示。图4-7 字符存储状态(4)strcmp(字符串1,字符串2)strcmp是STRing CoMPare(字符串比较)的缩写。比较字符串1和字符串2。 strcmp(namei,namei+1);字符串比较规则是对两个字符串自左至右

18、逐个字符(按ASCII码值大小比较)进行相比。直到出现不同的字符或遇到0为止。如全部字符相同,则认为相等;若出现不相同的字符,则以第一个不相同的字符的比较结果为准。“WangLi”ChenLin”“ChenLin”LiuXiu”“WangLi”WuHai”“ABCD”abcd”。 如果参加比较的两个字符串都由英文字母组成,那么简单的规律是:在英文字母排列顺序中位置在后面的字母比前面的“大”。小写字母比大写字母“大”。所以有”ABCD” 函数返回整型值。若函数值为0,则字符串1与字符串2相等;若函数值为一正整数(两个不同字符的ASCII码之差),则字符串1大于字符串2;若函数值为一负整数,则字符

19、串1小于字符串2。strcmp(“Wu”, “Wu” );函数返回值为0;strcmp(“WangLi”, “WuHai” );函数返回值为-20;strcmp(“WuHai”, “WangLi”);函数返回值为20。 注意:进行两个字符串比较时,用“=”容易出错。 if(name1= =name2)是错误的。 if(strcmp(name1,name2)= =0) 是正确的。可以用strncmp函数只比较字符串1和字符串2中前面若干个字符。 strncmp(“WuHai”, “WangLi”,1);则函数返回值为0。(5)字符数组的输入与输出。字符数组的输入与输出可以有两种方法:逐个字符输入

20、输出。用格式符“%c”输入或输出一个字符,例如: char str=”I am a student.”;15; printf(“%c”,stri);输出结果为: I am a student.将整个字符串一次输入或输出。用格式符“%s”输入或输出一个字符串。 printf(%s,str);输出时,遇结束符0就停止输出。输出字符不包括结束符0。 “%s”格式符输出字符时,printf函数中的输出项是字符数组名,而不是数组元素名。,str0);如果数组长度大于字符串实际长度,也只输出到0结束。 char str20=”I am a student.”;其输出”I am a student.”15个

21、字符。这就是使用字符串结束符0的结果。如果一个字符数组中包含一个以上0,那么以第一个0为准。可以用scanf函数从键盘输入一个字符串,但字符串长度应短于字符数组的长度。用scanf函数输入一个字符串时,字符串中不能有空格(字符串含有空格,最好用gets函数输入)。 char str10; scanf(Student 后,系统自动在后面加一个0结束符。如果利用一个scanf函数输入多个字符串,则以空格分隔。 char str15,str25,str35;scanf(%s%s%s,str1,str2,str3);从键盘输入数据: How are you?数组中未被赋值的元素的值是不可预料的。str

22、1、str2、str3数组状态如图4-8所示。str1:Howstr2:arstr3:yu?图4-8 字符存储状态若改为: char str13;如果输入以下12个字符 How are you?由于输入的字符串中有空格,所以送到数组str中的只有第一个空格前的字符“How”和0。str数组状态如图4-9所示。str:图4-9 字符存储状态(6)strcat(字符数组1,字符数组2)strcat是STRing CA Tenate(字符串连接)的缩写。连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符数组1中,例如: char str116=I am a char str2=s

23、tudent.,strcat(str1,str2);输出:连接前后的状况如图4-10所示。连接前str1:Imstd.连接后str1:图4-10 字符存储状态该函数调用后得到一个函数值字符数组1的地址。字符数组1必须足够大,以便容纳连接后的新字符串。本例中str1的长度为16。连接之前两个字符串的末端都有一个0,连接后字符串1末端的0取消,只在新字符串末端保留一个0。(7)strlen(字符数组)strlen是STRingLENgth(字符串长度)的缩写。它是测定字符串长度的函数。函数的值为字符串中的实际长度,不包括0。 char str20= I am a student.%d,strlen

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1