第六章循环控制1.doc_第1页
第六章循环控制1.doc_第2页
第六章循环控制1.doc_第3页
第六章循环控制1.doc_第4页
第六章循环控制1.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课题: 第六章 循环控制6.1概述 6.2 goto语句 6.3 while语句 6.4 do-while语句 6.5for语句教学目的及要求:了解用goto语句构成循环;掌握用while语句构成循环;掌握用do-while语句构成循环。教学重点: 用goto语句构成循环;用while语句、do-while语句和for语句构成循环。教学难点:用goto语句构成循环;用while语句、do-while语句和for语句构成循环。教学步骤及内容 : 第六章 循环控制61 概述 在很多实际应用中需要用到循环控制。 C语言中的循环结构。 1)用goto语句和if语句构成循环; 2)用while语句构成循环; 3)用do_while语句构成循环; 4)用for语句构成循环。62 goto语句以及用goto语句构成循环一、一般形式: goto 语句标号; 语句标号同标识符。二、用goto语句和if语句构成循环。63 while语句一、一般形式:while(表达式) 语句 当表达式为非0值时,执行while语句中的内嵌语句。其特点是:先判断表达式,后执行语句。二、用while语句构成循环注意:1)循环体如果包含一个以上的语句,应该用花括弧括起来, 以复合语句形式出现。 2)在循环体中应有使循环趋向于结束的语句。旁批栏:64 do-while语句do-while语句的特点是先执行循环体,然后判断循环条件是否成立。一、一般形式:do 循环体语句 While(表达式);说明:执行顺序,先执行一次指定的循环体语句,然后判别表达 式,当表达式的值为非零(“真”)时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束。二、用do-while语句形成循环。65 for语句 C语言中的for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,可完全代替while语句。一、一般形式:for(表达式1;表达式2;表达式3)语句 执行过程: 1)先求解表达式1; 2)求解表达式2,若其值为真(值为非0),则执行for语句中 指定的内嵌语句,然后执行下面第3步。若为假(值为0), 则结束循环,转到第5步。 3)求解表达式3; 4)转回上面第2步继续执行; 5)循环结束,执行for语句下面的一个语句。一般应用如下形式: for(循环变量赋初值;循环条件;循环变量增值) 语句说明:1)for语句的一般形式中的“表达式1”可以省略。 2)如果表达式2省略,即不判断循环条件,循环无终止地 进行下去。 3)表达式3也可以省略,但此时应设法保证循环能正常结 束。 4)可以省略表达式1和表达式3,只有表达式2,即只给循 环条件。 5)三个表达式都可以省略。 6)表达式1可以是设置循环初值的赋值表达式,也可以是与循环变量无关的其他表达式。 7)表达式一般是关系表达式或逻辑表达式,但也可以是数 值表达式,只要其值为非零,就执行循环体。旁批栏:重庆电子工程职业学院授课方案 课名: C语言程序设计 教师: 周 莹 班级: 应电061 062 045 编写时间:08.09.15 课题: 第六章循环控制 6.5for语句 6.7循环的比较 6.8break和continue语句教学目的及要求:了解循环的嵌套; 理解几种循环的比较;掌握用for语句构成循环;掌握break语句和continue语句的使用。教学重点: 用for语句构成循环;break语句和continue语句的使用。教学难点: 用for语句构成循环;break语句和continue语句的使用。教学步骤及内容 : 66 循环的嵌套一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,称多层循环。67 几种循环的比较1、四种循环都可以用来处理同一问题,一般情况下它们可以互相 代替。2、while和do-while循环,只在while后面指定循环条件,在循环体中应包含使循环趋于结束的语句。3、用while和do-while循环时,循环变量初始化的操作应在while 和do-while语句之前完成。而for语句可以在表达式1中实现 循环变量的初始化。4、while循环、do-while循环和for循环,可以用break语句跳出循环,用continue语句结束本次循环。68 break语句和continue语句一、break语句 作用:可以使流程跳出switch结构,继续执行switch语句下面的一个语句。还可以用来从循环体内跨出循环体,即提前结束循环,接着执行循环下面的语句。 一般形式:break;说明:break语句不能用于循环语句和switch语句之外的任何其他语句中。旁批栏:二、continue语句1、一般形式:continue;2、作用:为结束本次循环,即跳过循环体中下面尚未执行的语句, 接着进行下一次是否执行循环的判定。3、continue语句和break语句的区别: continue语句只结束本次循环,而不是终止整个循环的执行。而break语句则是结束整个循环过程,不再判断执行循环条件是否成立。旁批栏:重庆电子工程职业学院授课方案 课名: C语言程序设计 教师: 周 莹 班级: 应电061 062 045 编写时间:08.09.16 课题: 第七章 数组 7.1 一维数组的定义和引用 7.2 二维数组的定义和引用教学目的及要求:掌握一维数组的定义、一维数组元素的引用和初始化。掌握二维数组的定义、二维数组元素的引用和初始化。教学重点: 掌握一维数组和二维数组的定义、一维数组元素的引用和初始化。教学难点: 掌握一维数组和二维数组的定义、一维数组元素的引用和初始化。教学步骤及内容 : 第七章 数组71 一维数组的定义和引用一、一维数组的定义 形式如下: 类型说明符 数组名常量表达式; 如:int a10;说明:1)数组名定名规则和变量名相同,遵循标识符定名规则; 2)数组名后是用方括弧括起来的常量表达式,不能用圆括 号。 3)常量表达式表示元素的个数,即数组长度。 4)常量表达式中可以包括常量和符号常量,不能包含变量。 即C不允许对数组大小作动态定义。二、一维数组元素的引用 数组必须先定义,后使用。C语言规定只能逐个引用数组元素而不能一次引用整个数组。数组元素的表示形式:数组名下标下标可以是整型常量或整型表达式。三、一维数组的初始化1、在定义数组时对数组元素赋初值。2、可以只给一部分元素赋值。3、对全部数组元素赋初值时,可以不指定数组长度。72 二维数组的定义和引用一、二维数组的定义旁批栏:一般形式:类型说明符 数组名常量表达式常量表达式可将二维数组视为特殊的一维数组,它的元素又是一个一维数组。二、二维数组的引用 二维数组的元素的表示形式为 数组名下标下标三、二维数组的初始化 1、分行给二维数组赋初值。 2、可以将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值。 3、可以对部分元素赋初值。 4、如果对全部元素赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省略。旁批栏:重庆电子工程职业学院授课方案 课名: C语言程序设计 教师: 周 莹 班级: 应电061 062 045 编写时间:08.09.17 课题: 第七章 数组7.3 字符数组教学目的及要求:掌握字符数组的定义、字符数组引用和初始化。理解字符数组的输入输出;字符串处理函数的使用。教学重点: 字符数组的定义、字符数组引用和初始化。字符数组的输入输出;字符串处理函数的使用。教学难点: 字符数组的输入输出;字符串处理函数的使用。教学步骤及内容 : 第七章 数组7.3 字符数组一、字符数组的定义 一般形式:数据类型 数组名常量表达式 数据类型 数组名常量表达式常量表达式二、字符数组的初始化1、逐个字符赋值给数组中各元素。 2、用字符串常量使字符数组初始化。三、字符数组的引用 可以引用字符数组中的一个元素,得到一个字符。四、字符串和字符串结束标志 在C语言中,可将字符串作为字符数组来存放。 在实用中,人们关注的是字符串的实际长度,因此引入了“字 符串结束标志”,以字符0表示。根据0出现的位子, 来确定字符串的实际长度。五、字符数组的输入输出1、逐个字符输入输出。以格式符“%c”输入或输出单个字符。2、将整个字符串一次输入或输出。以格式符“%s”输出字符串。注意:1)输出字符不包括结束符0。 2)用“%s”格式符输出字符串时,printf函数中的输出项 是字符数组名,而不是数组元素名。 3)如果数组长度大于字符串实际长度,也只能输出到遇 0结束。旁批栏: 4)如果一个字符数组中包含一个以上0,则遇第一个 0时输出结束。六、字符串处理函数1、puts(字符数组) 作用:将一个字符串(以0结束的字符序列)输出到终端。2、gets(字符数组) 作用:从终端输入一个字符串到字符数组,并且得到一个函数 值,该函数值是字符数组的起始地址。3、strcat(字符数组1,字符数组2) 作用:连接两个字符数组中的字符串,把字符串2接到字符串 1的后面,结果放在字符数组1中,函数调用后得到一 个函数值-字符数组1的地址。4、strcpy(字符数组1,字符串2) 作用:将字符串2复制到字符数组1中去。说明:1)字符数组1必须足够大,以容纳被复制的字符串。 2)“字符数组1”必须写成数组名形式,“字符串2”可以是 数组名,也可以是一个字符串常量。 3)复制时连同字符串后面的0一起复制到字符数组1 中。 4)不能用赋值语句将一个字符串常量或字符数组直接给一 个字符数组。 5)可以用strncpy函数将字符串2中前面若干个字符复制 到字符数组1中去。5、strcmp(字符串1,字符串2) 作用:比较字符串1和字符串2。6、strlen(字符数组) 作用:测试字符串长度。7、strlwr(字符串) 作用:将字符串中大写字母换成小写字母。8、strupr(字符串) 作用:将字符串中大写字母换成小写字母。旁批栏:重庆电子工程职业学院授课方案 课名: C语言程序设计 教师: 周 莹 班级: 应电061 062 045 编写时间:08.09.18课题: 第八章 函数 8.1概述 8.2函数定义的一般形式 8.3函数参数和函数的值8.4函数的调用 8.5函数的嵌套调用 8.6函数的递归调用教学目的及要求:了解函数定义的一般形式;理解函数参数和函数的值;理解函数的嵌套调用和递归调用。教学重点: 理解函数参数和函数的值;理解函数的嵌套调用和递归调用。教学难点: 理解函数参数和函数的值;理解函数的嵌套调用和递归调用。教学步骤及内容 : 第八章 函数81 概述 一个较大的程序一般可分为若干个程序模块,每一个模块用来实现一个特定的功能,程序模块称为子程序。 在C语言中,子程序的作用是由函数完成的。 一个C程序可以由一个主函数和若干个子函数构成。由主函数调用其他函数,其他函数可以互相调用。同一个函数可以被一个或多个函数调用任意多次。说明:1)一个源程序文件由一个或多个函数构成。 2)一个C程序由一个或多个源程序文件组成。 3)C程序的执行从main函数开始,调用其他函数后流程回 到main函数,在main函数中结束整个程序的运行。 4)所有函数都是平行的,即在定义函数时是互相独立的,函 数不能嵌套定义。 5)从用户角度看,函数分标准函数和自定义函数二类。 6)从函数形式看,函数分无参函数和有参函数二类。82 函数定义的一般形式1、无参函数的定义形式 类型标识符 函数名( ) 声明部分 语句 旁批栏:2、有参函数定义的一般形式 类型标识符 函数名(形式参数表列) 声明部分 语句 3、可以有“空函数” 类型说明符 函数名() 4、对形参的声明的传统方式83 函数参数和函数的值一、形式参数和实际参数 在调用函数时,主调函数和被调函数之间有数据传递关系。 形参:在定义函数时函数名后面括弧中的变量名称为“形参”。 实参:在主调函数中调用一个函数时,函数名后面括弧中的参数(也可为一个表达式)称为“实参”。说明:1)在定义函数中指定的形参,在未出现函数调用时,它们 不占用内存中的存储单元。只有在发生函数调用时,函 数参数才被分配内存单元。在调用结束后,形参所占的 内存单元也被释放。 2)实参可以是常量、变量或表达式。 3)在被定义的函数中,必须指定形参的类型。 4)实参与形参的类型应相同或赋值兼容。 5)C规定,实参变量是对形参变量的数据传递都是“值传 递”,即单向传递,只能实参传给形参,而不能由形参传 回来给实参。二、函数的返回值 通过函数调用使主调函数能得到一个确定的值,即函数的返回 值。说明:1)函数的返回值是通过函数中的return语句获得的。 2)函数的类型。 3)如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。 4)如果被调用函数中没有return语句,并不带回一个确定 的,用户所希望得到的函数值,而实际上,函数并非不带回值,而只是不带回有用的值,带回的是一个不确定的值。 5)为了明确表示“不带回值”,可以用“void”定义“无类 型”(或称“空类型”)。84 函数的调用一、函数调用的一般形式 函数名(实参表列);旁批栏:注意:1)若实参表列包含多个实参,则各参数用逗号隔开。 2)实参与形参的个数应相等,类型应一致,实参与形参按 顺序对应,一一传递数据。二、函数调用的方式1、函数语句2、函数表达式3、函数参数三、对被调用函数的声明和函数原型1、首先被调用的函数必须是已经存在的函数。2、如果使用库函数,应在文件开头用#include命令将调用有关函数时所需用到的信息“包含”到本文件中。3、如果使用用户自己定义的函数,而且该函数与调用它的函数在 同一个文件中,一般还应在主调函数中对被调用的函数作声明。85 函数的嵌套调用 C语句不能嵌套定义函数,但要以嵌套调用函数,即在调用一个函数的过程中,又调用另一个函数。86 函数的递归调用 在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。旁批栏:重庆电子工程职业学院授课方案 课名: C语言程序设计 教师: 周 莹 班级: 应电061 062 045 编写时间:08.09.20 课题: 第八章 函数8.7 数组作为函数参数 8.8 局部变量和全局变量 8.9 变量的存储类别教学目的及要求:了解数组作为函数参数;掌握局部变量和全局变量的定义、使用及区别;掌握变量的存储方式。教学重点: 局部变量和全局变量的定义、使用及区别;变量的存储方式。教学难点: 局部变量和全局变量的定义、使用及区别;变量的存储方式。教学步骤及内容 : 8.7 数组作为函数参数数组元素可以作函数实参,用法与变量的使用相同。数组名也可以作为实参和形参,传递的是整个数组。1. 数组元素作函数实参数组元素作函数实参时,与变量作实参一样,是单向传递,即“值传送”方式。2. 数组名作函数参数说明:1)用数组名作函数参数,应该在主调函数和被调用函数分别定义数组; 2)实参数组与形参数组类型应一致; 3)在被调用函数中声明了形参数组的大小,但在实际上,指定其大小是不起任何作用的, C编译时只是将实参数组的首地址传给形参数组。 4)形参数组也可以不指定大小,在定义数组时在数组名后面跟一个空的方括弧。 5)用数组名作函数实参时,不是把数组的值传递给形参,而是把实参数组的起始地址传递给形参数组,两个数组共同占用一段内存。8.8 局部变量和全局变量一、局部变量 在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,在此函数以外是不能使用这些变量的,称为“局部变量”。旁批栏:说明:1)不同函数中可以作用相同名字的变量,它们代表不同的对象,互不干扰。2)形式参数也是局部变量。3)在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效。二、全局变量在函数外部定义的变量称为外部变量,外部变量是全局变量(也称全程变量)。全局变量可以为本文件中其他函数所共用。其有效范围为从定义变量的位置开始到本源文件结束。说明:1)设全局变量的作用是增加了函数间数据联系的渠道。 2)不在必要时不要使用全局变量。因为全局变量在程序的全部执行过程中都要占用存储单元;且它使函数的通用性和清晰度降低了。 3)如果在同一个源文件中,外部变量与局部变量同名,则在局部变量作用范围内,外部变量被“屏蔽”,即不起作用。8.9 变量的存储类别一、动态存储方式与静态存储方式静态存储方式是指在程序运行期间分配固定的存储空间的方式。动态存储方式则是在程序运行期间根据需要进行动态的分配存储空间的方式。二、用static声明局部变量有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次函数调用时,该变量已有值,就是上一次函数调用结束时的值。这时可指定该局部变量为“静态局部变量”,用关键字static进行声明。说明:1)静态局部变量属于静态存储类别,在静态存储区内分配存储单元。2)对静态局部变量是在编译时赋初值的,只赋初值一次。3)如在定义局部变量时不赋初值的话,在编译时自动赋初值0。4)静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。三、register变量为提高执行效率,C语言允许将局部变量的值放在CPU中的寄存器中,需要时直接从寄存器取出参加运算,这种变量称为“寄存器变量”,用关键字“register”声明。说明:1)只有局部自动变量和形式参数可以作为寄存器变量。 2)一个计算机系统中的寄存器数目是有限的,不能定义任意多个寄存器变量。 3)局部静态变量不能定义为寄存器变量。旁批栏:重庆电子工程职业学院授课方案 课名: C语言程序设计 教师: 周 莹 班级: 应电061 062 045 编写时间:08.09.22 课题: 第九章 预处理命令教学目的及要求:了解预处理命令的作用;了解宏定义和文件包含处理的使用。教学重点: 宏定义、文件包含的形式和使用;宏定义和函数调用的区别。教学难点: 宏定义、文件包含的形式和使用;宏定义和函数调用的区别。教学步骤及内容 : 第九章 预处理命令作用:改进程序设计环境,提高编程效率。预处理命令是由ANSI C统一规定的,但是它不是C语言本身的组成部分,不能直接对它们进行编译,必须在对程序进行通常的编译之前,先对程序中这些特殊命令进行“预处理”,即根据预处理命令对程序作相应的处理。经处理后程序不再包括预处理命令,再由编译程序对预处理后的源程序进行编译处理,得到可执行的目标代码。C提供的预处理功能主要有以下三种:1、宏定义2、文件包含3、条件编译 为了与一般的C语句相区别,这些命令以符号“#”开头。9.1 宏定义一、不带参数的宏定义 用一个指定的标识符来代表一个字符串。 其一般形式如下: #define 标识符 字符串宏展开:在编译时,将宏名替换成字符串的过程。说明:1)宏名一般习惯用大写字母表示,以便与变量名相区别。2)使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量。旁批栏:3)宏定义是用宏名代替一个字符串,即做简单的置换,不作正确性检查。4)宏定义不是C语句,不必在行末加分号。5)#define命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到本源文件结束。6)可以用#undef命令终止宏定义的作用域。7)在进行宏定义时,可以引用已定义的宏名,可以层层置换。8)对程序中用双引号括起来的字符串内的字符,即使与宏名相同,也不进行置换。9)宏定义是专门用于预处理命令的一个专用名词,它与定义变量的含义不同,只作字符替换,不分配内存空间。二、带参数的宏定义不进行简单的字符串替换,还要进行参数替换。其一般形式如下: #define 宏名(参数) 字符串说明:1)对带参数的宏的展开只是将语句中的宏名后面括号内的实参字符串代替#define命令行中的形参。2)在宏定义时,在宏名与带参数的括弧之间不应加空格,否则将空格以后的字符都视为替代字符串的一部分。函数调用与带参宏定义之间的区别1)函数调用时,先求出实参表达式的值,再代入形参;而带参的宏只进行简单的字符替换。2)函数调用是在程序运行时处理的,分配临时的内存单元;宏展开是在编译时进行的,在展开时并不根本内存单元,不进行值的传递,也没有“返回值”。3)对函数中的实参和形参都要定义类型,二者的类型要求一致,如不一致,应进行类型转换;而宏不存在类型问题。4)调用函数只可得到一个返回值,而用宏可以得到多个结果。5)多次使用宏会使源程序增长。6)宏替换不占运行时间,只占编译时间。9.2 “文件包含”处理“文件包含”指一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。一般形式: #include “文件名” 或 #include 9.3 条件编译通常,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也即对一部分内容指定编译的条件,即“条件编译”。旁批栏:重庆电子工程职业学院授课方案 课名: C语言程序设计 教师: 周 莹 班级: 应电061 062 045 编写时间:08.09.23 课题: 第十章 指针10.1 地址和指针的概念 10.2 变量的指针和指向变量的指针变量教学目的及要求:了解变量的地址和指针的相关概念;掌握变量的指针和指向变量的指针变量。教学重点: 变量的指针和指向变量的指针变量的区别。教学难点: 变量的指针和指向变量的指针变量的区别。教学步骤及内容 : 第十章 指针101 地址和指针的概念 内存区中每一字节有一个编号,称为“地址”。 “指向”是通过地址来体现的。 用一个变量专门用来存放另一变量的地址,该变量称为“指针变量”。 指针变量的值是指针(地址)。102 变量的指针和指向变量的指针变量 变量的指针就是变量的地址。 存放变量地址的变量是指针变量,用来指向另一个变量。一、定义一个指针变量 C语言规定所有变量在使用前必须先定义,指定其类型,并按此分配内存单元。指针变量不同于整型变量和其他类型的变量,是专门用来存放地址的。定义指针变量的一般形式为:基类型 *指针变量名注意:1)指针变量前面的“*”,表示该变量的类型为指针型变量。 2)在定义指针变量时必须指定基类型。二、指针变量的引用 指针变量中只能存放地址(指针),不要将一个整型量赋给一个指针变量。旁批栏:有关的运算符:1)&:取地址运算符;2)*:指针运算符。三、指针变量作为函数参数 函数的参数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论