版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程教案课程名称:程序设计基础(C语言)授课对象:本科一年级开课单位:教研室(教学系):课程负责人:2026年3月1日
授课单元教案课程单元函数学时8章节第七章专题教学目标设计1、函数的概念2、作用及分类3、函数的定义及调用方法4、函数的参数传递5、函数的声明6、变量的作用域和存储类别7、编译预处理8、智能控制项目实践教学重点难点及处理1、函数的参数传递2、函数的递归调用3、变量的作用域和存储类别教学媒体和资源选择硬件环境:连接到Internet的多媒体网络教室(每人一机),大屏幕投影仪,联网智能手机,耳麦,音响设备,激光投影笔等。软件资源:PPT课件、网络教学软件、VC++软件、学习通手机APP、Zoomit板书演示辅助软件等。作业课前:线上平台完成第七章视频观看,了解本章节学习内容;2、实践及课后:(1)完成课堂测验7与课后作业7(2)AI赋能,解锁未来(3)双向对错演示视频教学设计1、函数的概念与分类(1)将一个C程序分为若干模块,每个模块实现一个特定的功能,在C语言中用函数来实现模块的功能。引例:从键盘输入两个整数,输出其较小的数。(2)从用户使用的角度看,函数有两种:①标准函数(库函数);②用户自己定义的函数(3)从函数的参数形式看,函数可分为两类:①无参函数;②有参函数(4)从函数功能角度看,函数可分为两类:①有返回值函数;②无返回值函数2、函数定义与返回值(1)无参函数定义类型说明符函数名(){说明部分语句}例1、调用无参函数输出菜单。(2)有参函数定义类型标识符函数名(参数表){说明部分语句}例2、使用函数计算一个学生两门课程的总分和平均分。随堂练习1(3)函数参数和返回值形式参数和实际参数形式参数:在定义函数时函数名后面括弧中的变量名,简称形参。实际参数:在调用函数时函数名后面括弧中的表达式,简称实参。随堂练习2函数的返回值通过函数中的return语句将被调用函数中的一个确定的值带回到主调函数中去。3、函数调用(1)函数的声明和函数调用函数声明的一般格式:类型说明符函数名(形式参数表列);随堂练习3所谓函数调用就是调用函数向被调函数传送数据并将控制权交给被调用函数,当被调用函数执行完后,将结果回传给调用函数并交回控制权。调用方式函数表达式如:c=2*max(a,b);作为语句用(函数语句)如:printf(“****”);fun();作为函数参数如:m=max(a,max(b,c));printf(“%f\n”,max(a,b));随堂练习4(2)函数的参数传递发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。(1)函数被调用时,系统给形参变量分配内存单元,调用结束时,内存单元就被释放。(在内存中实参单元和形参单元是不同的存储单元。)(2)无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值。(3)实参和形参在数量上,类型上,顺序上应相匹配(4)函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,不能把形参值反向传送给实参。因此,形参的值如发生改变,不会影响到调用函数中实参的值例3、调用函数时的参数传递。类型标识符函数名()5、嵌套调用与递归调用(1)嵌套调用在C语言中,不能将函数定义放在另一个函数的函数体中,但允许在调用一个函数的过程中调用另一个函数。这称为函数的嵌套调用。例4、用弦切法求方程x3-5x2+16x-80=0的根。(2)递归调用在调用一个函数的过程中直接或间接调用该函数本身,称为函数的递归调用。递归调用简称递归。例5、编写一个递归函数,求n的阶乘值n!随堂练习5:有一只调皮的小猴子,摘了一堆水果,第一天吃了水果的一半,又多吃了一个;第二天吃了剩下水果的一半,又多吃了一个;依次类推….到第十天,发现只剩下了1个水果,请问这只猴子到底摘了多少个水果?6、数组作函数参数(1)数组元素作函数参数数组元素作函数的参数与普通变量作函数的参数本质相同。数组元素作函数实参时,仅仅是将其代表的值作为实参处理。数组中元素作为函数的实参,与简单变量作为实参一样,结合的方式是单向的值传递。(2)数组名作函数参数例6、求数组中的最大元素。用数组名作函数的参数可以解决函数只能有一个返回值的问题。数组名代表数组的首地址,在数组名作为函数的参数时,形参和实参都应该是数组名。在函数调用时,实参给形参传递的数据是实参数组的首地址,即实参数组和形参数组完全等同,是存放在同一存储空间的同一个数组,形参数组和实参数组共享存储单元。如果在函数调用过程中形参数组的内容被修改了,实际上也修改了实参数组的内容。例7、求数组中的最大元素。随堂练习6随堂练习7(3)二维数组作函数参数多维数组名也可以作为函数的实参和形参。在定义函数时,对形参数组的说明可以指定每一维的大小,也可以省略第一维的大小。但是不能把多维数组的第二维及其他高维的大小说明省略。因为从实参传来的是数组起始地址,如果在形参中不说明列数,则系统无法决定应为多少行多少列,也就无法确定数组元素在内存中的位置。例8、利用函数求两个矩阵的和并输出。7、变量作用域与存储类别(1)变量作用域变量的作用域是指变量的可见范围或可使用的有效范围。变量的作用域可为一个函数,也可为整个程序。C语言中变量说明的方式不同,其作用域也不同。C语言中的变量,按作用域范围可分为两种:局部变量和全局变量。局部变量概念:在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,即其作用域是有限的、局部的,称为局部变量。例:不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰。floatf1(inta){intb,c;:}charf2(intx,inty){inti,j,b;:}intmain(){intm,n,j;:}例9、复合语句中的局部变量全局变量概念:在函数外面定义的变量称为全局变量(外部变量)。全局变量可以被本文件中的其他函数所共有。其作用域为从定义处开始至本文件的结束。例:输入4个数,编一个函数求这些数的平均值,最大数、最小数例9、远水救不了近火(全局变量与局部变量同名的实例)。(2)变量存储类别静态存储方式是指在程序的运行期间分配固定的存储空间的方式。动态存储方式是指在程序运行期间根据需要进行动态的分配存储空间的方式。四种存储类别:自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。自动存储变量的定义格式为:[auto]类型说明符变量名[=初值表达式],......;寄存器存储变量的定义格式为:register类型说明符变量名局部静态存储变量的定义格式:static类型说明符变量名[=初始化常量表达式],......;随堂练习8:外部变量默认是静态存储类别,auto只能用于函数内部的变量外部变量是指定义在文件中的所有函数之外的变量。在定义时,不必加关键字“extern”,但在声明时必须加“extern”关键字。随堂练习98、编译预处理(1)C提供的预处理功能主要有三种:宏定义;文件包含;条件编译(2)宏定义无参的宏定义#define标识符字符串例:输入圆的半径,求圆的周长、面积和球的体积(要求使用无参宏定义圆周率)。带参数的宏定义#define宏名(形参表)字符串带参宏调用宏名(实参表)取消宏定义#undef标识符随堂练习10随堂练习11随堂练习12(3)文件包含一个源文件可以将另一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。#include"包含文件名"(4)条件编译所谓“条件编译”,是对部分内容指定编译的条件,使其只在满足一定条件才进行编译形式一:#ifdef标识符程序段1#else程序段2#endif形式二:#ifndef标识符程序段1#else程序段2#endif形式三:#if常量表达式程序段1#else程序段2#endif例:输入一行字母字符,根据需要设置条件编译,使之能将字母全改为大写输出,或全改为小写字母输出。9、智能控制项目实践例:模拟单片机LED灯控制:用户输入闪烁次数(n)和闪烁间隔(秒),程序输出LED的“亮”“灭”状态,模拟循环闪烁效果(用延时函数模拟硬件延时)。AI实践:(1)模拟恒温箱控制设定目标温度(如25℃),程序随机生成当前环境温度(10-40℃),通过“加热”“制冷”“待机”三种动作调节温度,直到接近目标温度(误差≤0.5℃),输出调节过程。(2)电机转速调节(PWM脉冲模拟)模拟电机PWM(脉冲宽度调制)调速:用户输入目标转速(0-100%),程序输出PWM波形的“高电平”“低电平”序列(占空比=转速百分比),模拟电机转速控制(占空比越高,转速越快)。10、AI赋能:解锁未来用函数实现输入一个3位正整数,求各位数之和,完成思考、纠错与优化过程。教学反思概念的提出采用启发式教学方法,函数的定义及调用主要通过对实际例子分析、现场程序编制等方法加以说明、理解和巩固,突出重点;整个内容的安排采用由浅入深的方法,例题的选用采用三个难度等级,逐步加深,将教学的难点分散到整个教学过程中,前后呼应。对于作用域和存储类别问题的讲解采有图示法帮助学生理解相对抽象的存储概念。授课单元教案课程单元指针学时8章节第八章专题教学目标设计1、指针与指针变量2、指针的运算3、指针与数组4、指针与字符串5、指针与函数教学重点难点及处理1、指针的运算2、指针与数组3、指针与字符串教学媒体和资源选择硬件环境:连接到Internet的多媒体网络教室(每人一机),大屏幕投影仪,联网智能手机,耳麦,音响设备,激光投影笔等。软件资源:PPT课件、网络教学软件、VC++软件、学习通手机APP、Zoomit板书演示辅助软件等。作业课前:预习本章节学习内容;2、实践及课后:(1)完成课堂测验8与课后作业8(2)AI赋能,解锁未来(3)双向对错演示视频教学设计1、指针与指针变量(1)指针概念内存单元:在计算机中所有的数据都是存放在存储器中的。一般把存储器中的一个字节称为一个内存单元。指针:为了方便管理,为每个内存单元编号。根据内存单元的编号就可以找到所需的内存单元。内存单元编号也叫地址,通常也把这个地址称为指针。指针变量:存放指针的变量指针变量的值:某个内存单元的地址(2)指针变量的定义类型说明符*指针变量名;2、指针的运算(1)有关指针的两个运算符取地址运算符&:&变量名;取内容运算符*:intb=3,*p;p=&b; 我们称*p得到的是变量b(或3)。(2)赋值运算把一个变量的地址赋予指向相同数据类型的指针变量。 inta,*pa; pa=&a;/*把整型变量a的地址赋予整型指针变量pa*/把一个指针变量的值赋予指向相同类型变量的另一个指针变量。 inta,*pa,*pb;pa=&a;pb=pa;/*把a的地址赋予指针变量pb*/把数组的首地址赋予指向数组的指针变量。 inta[5],*pa; pa=a; 也可写为:pa=&a[0];把字符串的首地址赋予指向字符类型的指针变量。 char*pc; pc="clanguage"; 或用初始化赋值的方法写为: char*pc="cLanguage";(3)指针的算术运算对指针变量,可以加上或减去一个整型量,也可以进行自增、自减运算。即下面的运算是合法的(p是指针变量)。 p+n,p-n,p++,++p,p--,--p(4)两个指针变量之间的运算只有指向同一数组的两个指针变量之间才能进行运算,否则运算毫无意义。两指针变量相减所得之差是两个指针所指数组元素之间相差的元素个数。 如:inta[10],*p=&a[1],*q=&a[5];则q-p的值为4。注意:两个指针变量不能进行加法运算。两指针变量进行关系运算 指向同一数组的两指针变量进行关系运算可表示它们所指数组元素之间的关系。3、指针与数组(1)一维数组的指针表示一个数组的元素在内存中是连续存放的,数组第一个元素的地址称为数组的首地址。C语言规定数组名是该数组的首地址。例如,有如下定义语句: inta[10],*p;则语句p=a;和p=&a[0]是等价的,都表示指针p指向数组a的首地址。注意:*C语言规定,数组首地址即数组名是一个地址常量,是不能改变的,a++;是非法的。由于a+i为a[i]的地址,因此用指针给出数组元素的地址和内容有以下几种表示形式:p+i和a+i都表示a[i]的地址,它们都指向a[i]。*(p+i)和*(a+i)都表示p+i或者a+i所指向对象的内容,即a[i]。指向数组元素的指针,也可以表示成数组的形式,也就是说指针变量也可以带有下标,如p[i]与*(p+i)等价。例1、利用指针实现数组中的元素输入和输出。(2)二维数组的指针表示二维数组元素的地址 对于一个具有n行m列的二维数组a,可以将a看成是一个长度为n的一维数组,数组中的每一个元素又是一个长度为m的一维数组。 从二维数组的角度来看,a代表二维数组的首地址,当然也可看成是二维数组第0行的首地址。a+1就代表第1行的首地址,a+2就代表第2行的首地址。 a[i]是一个一维数组名,即a[i]代表第i行的首地址,a[i]+j即代表第i行第j列元素的地址,即&a[i][j]。 可用指针的形式来表示二维数组各元素的地址。如前所述,a[0]与*(a+0)等价,a[1]与*(a+1)等价,因此a[i]+j就与*(a+i)+j等价,它表示数组元素a[i][j]的地址。 二维数组元素a[i][j]可表示成*(a[i]+j)或*(*(a+i)+j),它们都与a[i][j]等价,或者还可写成(*(a+i))[j]。即有如下关系成立。 a+i↔a[i]↔*(a+i)↔&a[i][0] *(*(a+i)+j)=a[i][j]用一级指针引用二维数组元素由于二维数组在存储时是线性存储的,因而可以用一级指针来引用二维数组的元素。其一般形式为: 设有如下定义(其中M和N是已经定义了的符号常量): inta[M][N],*p=a[0]; 则有:p+i*N+j表示了数组元素a[i][j]的地址;*(p+i*N+j)表示了数组元素a[i][j]。即有:p+i*N+j↔&a[i][j] *(p+i*N+j)↔a[i][j]例2、求5阶方阵的主对角元素之和。用指向由n个元素构成的一维数组的指针表示二维数组的元素 指向一个由n个元素所组成的数组指针的定义格式为: 类型说明符(*指针变量名)[大小];此指针也称为行指针。例如: int(*p)[5]; 指针p为指向一个由5个元素所组成的整型数组指针。用行指针表示二维数组的一般形式为: 设有如下定义(其中M和N是已经定义了的符号常量): inta[M][N],(*p)[N]=a;则有: p+i↔a+i↔a[i] *(p+i)+j↔&a[i][j] *(*(p+i)+j)↔a[i][j]例3、用行指针方式求5阶方阵的主对角元素之和。(3)指针数组一个数组的若干元素均为指针型数据类型,称为指针数组。即每个元素都是指针类型的数组。 指针数组的定义形式为: 类型名*数组名[数组长度]; 例如:int*p[6]; p是数组名,这个数组包括6个元素,p[0]-p[5],每个元素都是指向整型数据的指针,及p可以用于保存6个整型数据的地址。4、指针与字符串对字符串的操作有两种方法:一种方法是使用字符数组,另一种是使用字符指针。在字符串处理中,使用字符指针往往比使用字符数组更方便。 将字符串的指向数组名赋给一个字符串指针变量,让字符串指针变量指向字符串的首地址,这样就可以通过指向字符串的指针变量操作字符串,例如:charstr[]="WelcomeToChina“,*p;p=str;printf("%s\n",p);也可以不定义字符数组,而定义一个字符指针,用字符指针指向字符串中的字符。例如: char*p="WelcomeToChina"; printf("%s\n",p);还可以按以下形式赋值: char*p; p="WelcomeToChina";例4、利用字符指针变量的方法,完成字符串的复制。5、指针与函数(1)指针作函数参数指针变量既可以作为函数的形参,也可以作函数的实参。指针变量作参数时,参数传递是“地址传递”,即将实参(一个地址)传递给被调用函数的形参(必须是一个指针变量)。特点:共享内存,“双向”传递例5、从键盘输入两个数,再从大到小输出。例6、从键盘输入10个数,按从小到大的顺序输出。(2)返回指针的函数一个函数可以返回一个整型值,实型值等,在有的情况下,我们希望通过函数返回一个指针值。返回指针值的函数称为返回指针的函数(或称指针函数)。定义返回指针的函数形式为: 类型说明符*函数名(类型形参1,类型形参2,…) { 函数体 } 函数名前面的“*”表示该函数是返回指针的函数,“类型说明符”是函数返回的指针所指向的数据类型。 返回指针的函数在被调用的时候必须注意:调用该函数给指针变量赋值,该指针变量的基类型必须与该函数返回的指针的基类型相同。例7、有若干学生的成绩(每个学生有5门成绩),要求在用户在输入学生序号以后,能输出该学生的全部成绩(要求用指针函数来实现)。(3)指向函数的指针函数指针变量定义的一般形式为: 类型说明符(*指针变量名)(); 其中“类型说明符”表示被指向的函数的返回值的类型。“(*指针变量名)”表示“*”后面的变量是定义的指针变量。最后的空括号表示指针变量所指的是一个函数。 例如:int(*pf)(); 表示pf是一个指向函数入口的指针变量,该函数的返回值(函数值)是整型。指向函数的指针变量的赋值 指向函数的指针变量名=函数名; 如:intfunc(inta,intb); int(*p)(inta,intb); p=func;通过指向函数的指针变量调用函数(*指针变量名)(实参表);例7、用指向函数的指针的方法求两个数的最大值。指向函数的指针作函数参数指向函数的指针变量调用函数主要用在多次调用一些同类型的函数的情形。此外指向函数的指针变量可以作函数参数。例8、编写一个函数,每次在调用它时实现不同的功能。输入两个整数,利用前面编写的函数求出它们的之和、之差、之积。6、AI赋能:解锁未来按教材P152步骤完成,并掌握用AI辅助改进程序的方法。教学反思指针教学的核心,并非让学生死记硬背语法规则,而是帮助学生建立内存思维——让学生能从内存地址的角度,理解代码的执行过程。作为C语言的“分水岭”,指针的学习需要一个循序渐进的过程,不能急于求成。后续教学中,需更注重“从学生的视角出发”,站在学生的认知层面设计教学环节,多借助直观的演示、针对性的练习、及时的错误反馈,化解指针的抽象性,让学生不仅“会用指针”,更“理解指针”,为后续学习结构体、链表等进阶内容打下坚实的基础。同时,指针的学习离不开大量的实操,课后需鼓励学生多编写代码、多调试错误,让学生在实践中感受指针的用法、规避指针的陷阱,真正实现“概念理解”与“实操能力”的双重提升。授课单元教案课程单元结构体、共用体和枚举学时6章节第九章专题教学目标设计1、结构体类型与变量2、结构体数组3、指针与结构体4、结构体应用5、共用体类型与变量6、枚举类型与变量7、自定义数据类型8、综合应用教学重点难点及处理1、结构体类型2、共用体类型3、枚举类型教学媒体和资源选择硬件环境:连接到Internet的多媒体网络教室(每人一机),大屏幕投影仪,联网智能手机,耳麦,音响设备,激光投影笔等。软件资源:PPT课件、网络教学软件、VC++软件、学习通手机APP、Zoomit板书演示辅助软件等。作业1、课前:预习本章节学习内容;2、实践及课后:(1)完成课堂测验9与课后作业9(2)AI赋能,解锁未来(3)双向对错演示视频教学设计1、结构体类型与变量(1)结构体类型与结构体变量的定义结构体类型:结构体是一种构造数据类型用途:把不同类型的数据组合成一个整体—自定义数据类型struct[结构体名]{类型标识符成员名1;类型标识符成员名2;…………….};成员列表的格式为:类型成员名;定义结构体变量3种方法:先定义结构,再说明结构体变量。在定义结构体类型的同时说明结构体变量。直接说明结构体变量。(2)结构体变量的引用由结构体变量名引用其成员结构体变量不能整体引用,只能引用变量成员引用方式:结构体变量名.成员名(3)结构体变量的初始化形式一:struct结构体名{类型标识符成员名;类型标识符成员名;…………….};struct结构体名结构体变量={初始数据};形式二:struct结构体名{类型标识符成员名;类型标识符成员名;…………….}结构体变量={初始数据};形式三:struct{类型标识符成员名;类型标识符成员名;…………….}结构体变量={初始数据};例1、在定义结构体变量时进行初始化。2、结构体数组(1)结构体数组的定义结构体数组定义一般形式为:struct结构体类型名数组名[常量表达](2)结构体数组的初始化structsd{intnum;char*name;charsex;floatscore;}boy[5]={{100,"HY",'M',75},{101,"ztp",'M',65},{102,"wyong",'F',95},{103,"wangwei",'F',85},{104,"jzhen",'M',45};}(3)结构体数组元素引用举例例2、建立同学通讯录3、指针与结构体(1)指向结构体变量的指针定义形式:struct结构体名*结构体指针名;例3、结构体变量成员的3种引用方式。(2)指向结构体数组的指针structstudent{intnum;charname[20];charsex;intage;}stu[3]={{10101,"LiLin",'M',18},{10102,"ZhangFun",'M',19}, {10104,"WangMin",'F',20}};main(){structstudent*p;for(p=stu;p<stu+3;p++)printf("%d%s%c%d\n",p->num,p->name,p->sex,p->age);}(3)结构体与函数参数将一个结构体变量的值传递给函数作参数,有以下3种方法。用结构体变量的成员作参数----值传递用指向结构体变量或数组的指针作参数----地址传递用结构体变量作参数----多值传递,效率低例4、用结构体变量作函数参数。4、结构体应用(1)顺序表顺序表的定义和创建定义顺序表list:typedefstruct{intdata[1000];intlast;}LIST;LISTlist;创建顺序表就是输入数据元素,设置表的长度。voidcreate(){inti,n;printf("请输入元素个数:");scanf("%d",&n);printf("请输入各元素的值:");for(i=0;i<n;i++)scanf("%d",&List.data[i]);List.last=n;}顺序表的基本操作顺序表元素的插入要在i的位置上插入一个新数据d,必须先将元素Di,…,Dn-1的位置向后移,然后在第i个位置上放入d的值。同时,顺序表的长度加1。例4、顺序表元素插入函数顺序表元素的删除要在i的位置上删除第i个元素,只要将元素Di+1,…,Dn-1的位置向前移一个位置。同时,顺序表的长度减1。例5、顺序表元素删除函数(2)链表链表概述指有若干个数据项,每个数据项称为一个“节点”,这些节点按一定的原则连接起来。每个数据项都包含若干个数据和一个指向下一个数据项的指针,依靠这些指针将所有的数据项连接起来。链表是一种常见的数据结构。它是实现动态存储分配的一种结构。链表的存储分配C语言提供了管理内存的函数,这些内存管理函数可以按需要动态地分配内存空间,可以将不再使用的内存空间回收待用,为有效地利用内存资源提供了手段。分配内存空间函数malloc()调用形式:(类型说明符*)malloc(size)分配内存空间函数calloc()调用形式:(类型说明符*)calloc(n,size)释放内存空间函数free()调用形式:free(void*ptr);链表的建立及输出链表的建立所谓建立链表是指在程序执行过程中从无到有地建立起一个链表,即一个个地开辟节点和输入各节点数据,并建立起前后相连的关系。通常用两种方法建立链表。①从链头到链尾:新节点插入链尾。②从链尾到链头:新节点插入链头。例6、建立一个N个节点的链表,存放学号和成绩数据。编写一个建立链表的函数creat()。链表的输出将链表中各节点的数据依次输出的操作很简单,首先要知道表头元素的地址,可由head得到,然后顺着链表输出各节点中的数据,直到最后一个节点。链表的基本操作链表的插入例7、编写一个在学生数据链表中按学号顺序插入一个节点的函数。假设被插节点的指针为pi。链表的删除例8、编写一个删除链表中指定节点的函数。链表的应用intmain() { structstudent*head,*pnum; intn,num; printf("inputnumberofnode:"); scanf("%d",&n); head=creat(n); print(head); printf("Inputthedeletednumber:"); scanf("%d",&num); head=delete(head,num); print(head); printf("Inputtheinsertednumberandscore:"); pnum=(structstudent*)malloc(sizeof(structstudent)); scanf("%d%d",&pnum->num,&pnum->score); head=insert(head,pnum); print(head); return0;} 5、共用体类型与变量(1)共用体类型与共用体变量的定义定义一个共用体类型的一般形式为:union共用体名{成员表};与定义结构体类型变量一样,定义共用体类型变量也有3种方式。定义共用体类型后,再定义共用体类型变量。例如:uniondta;定义共用体类型的同时,定义共用体类型变量。例如:uniondt { inti; charch; floatf; }a;如果定义的共用体类型只使用一次,共用体类型名可以省略。例如:union { inti; charch; floatf; }a;(2)共用体变量的引用方式与特点引用共用体类型变量的一般形式如下:共用体变量名.成员名枚举类型与变量定义枚举类型的一般形式是:enum枚举类型名{枚举值表}与其他数据类型一样,定义枚举类型后,能够以下面3种方式定义枚举变量。定义枚举类型后,再定义枚举类型变量。例如:enumweekdayw1,w2,w3;定义枚举类型的同时,定义枚举类型变量。例如:enumweekday{sun,mon,tue,wed,thu,fri,sat}w1,w2,w3;如果定义的枚举类型只使用一次,枚举类型名可以省略。例如:enum{sun,mon,tue,wed,thu,fri,sat}w1,w2,w3;自定义数据类型自定义数据类型的一般形式为:typedef类型名新名称;例如:typedefstructstudent{charname[25];intage;charsex;}STU;8、综合应用例9、用结构体指针变量作函数参数。计算一组学生的平均成绩和不及格人数。例10、设有一个经理与工人通用的表格,经理数据有姓名、年龄、职业、办公室4项。工人数据有姓名、年龄、职业、车间号4项。编程输入10个人员的数据,再以表格输出。9、AI赋能:解锁未来(1)学会用AI辅助,完成选择题同时知道每个答案为什么对,为什么错,巩固知识点,掌握学习方法。(2)见教材P177,按步骤完成,培养创新思维。教学反思本章教学中,重点讲解了结构体、共用体和枚举的定义与使用,通过实例让学生掌握自定义类型的核心用法,但仍存在不足:对三者内存布局差异的讲解偏理论,学生对共用体的内存共享特性理解模糊;枚举的实际应用场景举例较少,学生难以灵活运用。后续教学需增加内存分析实操题,结合编程案例对比三者适用场景,强化学生对语法规则和使用逻辑的结合理解,同时通过课堂小练及时检测掌握情况,针对性补漏。授课单元教案课程单元文件学时4章节第十章专题教学目标设计1、文件概述2、文件的操作3、文件的检测与随机读写4、综合应用教学重点难点及处理重点:1、文件的操作2、文件的检测与随机读写难点:综合应用教学媒体和资源选择硬件环境:连接到Internet的多媒体网络教室(每人一机),大屏幕投影仪,联网智能手机,耳麦,音响设备,激光投影笔等。软件资源:PPT课件、网络教学软件、VC++软件、学习通手机APP、Zoomit板书演示辅助软件等。作业1、课前:预习本章节学习内容;2、实践及课后:(1)完成课堂测验10与课后作业10(2)AI赋能,解锁未来(3)双向对错演示视频教学设计1、文件概述(1)文件类型文件:在本章所讲的文件是由数字和文字组成的数据文件。按文件编码方式分类:ASCII文件(也称文本文件):ASCII文件在磁盘中存放时,每个字符对应一个字节,用于存放对应的ASCII码。如:整型十进制数12345,按ASCII文件存放则需要占用5个字节。可在屏幕上显示,但占用空间较大,读写操作要转换。二进制文件:是对不同的数据类型,按其实际占用内存字节数存放。即内存的存储形式,原样输出到磁盘上存放。如:整型十进制数12345,按二进制文件存放只需要2个字节。屏幕显示为乱码,但占用空间小,读写操作效率高。对文件的处理方式的不同:分为缓冲文件系统(又称标准I/O)和非缓冲文件系统(又称系统I/O)(2)文件指针要调用磁盘上的一个文件时,必须知道与该文件有关的信息。比如文件名、文件的当前读写位置、文件缓冲区大小与位置、文件的操作方式等。这些信息被C语言系统保存在一个称作FILE的结构体中,它在stdio.h头文件中定义内。FILE结构体的内容为(在使用文件操作时,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026四川长虹电源股份有限公司招聘总账主管会计岗位1人备考题库及一套参考答案详解
- 2025天津市西青区面向全国选聘区管国有企业副总经理2人备考题库完整答案详解
- 2026四川九华光子通信技术有限公司招聘财务会计岗1人备考题库及参考答案详解
- 2026安徽皖信人力资源管理有限公司宣州分公司招聘3人备考题库(一)参考答案详解
- 2026云南昆明市石林彝族自治县第一期城镇公益性岗位招聘6人备考题库及一套完整答案详解
- 2026四川省什邡市职业中专学校(什邡市综合高级中学)教师招聘人备考题库及答案详解1套
- 2026四川宜宾市高县姿彩商贸有限责任公司招聘1人备考题库及答案详解1套
- 2026年中共昆明市委党校引进高层次人才招聘备考题库(3人)参考答案详解
- 2026年上半年黑龙江省工业和信息化厅事业单位公开招聘工作人员4人备考题库参考答案详解
- 2026北京协和医院心内科合同制科研助理招聘备考题库完整参考答案详解
- 专题06相似三角形中的基本模型之半角模型(几何模型讲义)数学华东师大版九年级上册(原卷版)
- 2025比亚迪供应商审核自查表
- 水电站项目物资采购管理方案
- 综合行政执法培训
- (正式版)DB3301∕T 0498-2025 《小型水利工程项目划分管理规范》
- 2026届陕西省西安航天中学物理八年级第一学期期末教学质量检测试题含解析
- 电梯安全文档(模板范本)
- 建筑施工现场交通组织方案
- 公司工作室转让合同范本
- 2025年度外资企业股权转让协议范本及尽职调查报告
- 湖库水生态修复 第1部分:水生生物修复技术指南(试行)编制说明
评论
0/150
提交评论