校园网计算机二级C语言教案(综合)_第1页
校园网计算机二级C语言教案(综合)_第2页
校园网计算机二级C语言教案(综合)_第3页
校园网计算机二级C语言教案(综合)_第4页
校园网计算机二级C语言教案(综合)_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

1、校园网计算机二级C语言培训教案1 / 54第一章 C语言的基础知识教学课时:本章考点:考点考核几率分值C语言的概述20%12标识符、常量和变量100%27算术运算符及算术表达式(难点)80%25赋值运算符及赋值表达式80%25自加自减运算、逗号表达式(难点)100%24位运算(难点)80%12教学内容一、对C语言的初步认识通过讲解以下这个简单的C程序例子,让学生对C程序有个大致了解。 main() int a, b , c ; a=10; b=20; c=a+b; printf("%d" , c); 注:(1)C程序中有且仅有一个main函数,程序从main函数开始执行,并

2、且在main函数中结束。(2)用“ ”括起来的部分称为“函数体”,“”和“”必须成对出现,表示开始和结束。(3)main()函数的格式: main() 函数体 (4)变量先定义,后使用。(5)printf为C语言的屏幕输出函数,注意写法。(6)书写程序时应遵循的规则:语句中的不同单词至少且必须加一个空格以示间隔,若已有明显的间隔符,也可不再加空格来间隔;最好一个语句占一行。二、标识符1、标识符命名规则(1)只能包含字母、数字和下划线(2)第一个字符必须是字母或下划线(3)C语言是大小写敏感的,如grade和Grade是两个不同的标识符。2、标识符分类(1)关键字:已经事先定义好了,程序远不能再

3、将它们另做它用。参看教材附录二,记住常用的关键字(如int、if、do、break、case、char等)。(2)预定义标识符:在C语言系统中已经使用了的标识符(如printf、scanf、define、include等)。预定义标识符可用作用户标识符。(3)用户标识符:根据用户需要定义的标识符。用户标识符不能是关键字。注:标识符要求学生必须掌握,可以参考P11的习题进行讲解。三、常量与变量1、常量在程序的运行过程中,其值不发生改变的量。2、常量分类(1)直接常量直接常量又包括整型常量(如12、-3、0)、实型常量(如4.6、-1.23、1.2E+3)和字符常量(如'A'、&#

4、39;6')。(2)符号常量符号常量在使用之前必须先定义,其一般形式为: #define 符号常量标识符 常量值 通过以下两个实现功能相同(求圆面积)的程序,给学生解释使用与不使用符号常量两者的区别。程序1:程序2: #define R 5main() #define PI 3.14159 main() float area; int r; float area; r=5; area=PI*R*R; area=3.14159*r*r; printf("%f", area); printf("%f", area); 注:习惯上符号常量的标识符用大写

5、字母。符号常量的值在其作用域内不能被改变。3、变量在程序的运行过程中,其值可以改变的量。4、变量的定义变量定义的一般形式为: 类型说明符 变量名;注:变量名是合法的标识符,但不可以是关键字;允许在一个类型说明符后,定义多个相同类型的变量,各变量名之间用逗号间隔,最后一个变量名之后必须以“;”号结尾;一般变量的定义放在函数体的开头部分。可以通过以下例子的讲解,使学生进一步掌握变量的定义与使用。 main() int a, b, c; a=15; b=20; c=b-a; printf("%d" , c); 四、数制转换1、十进制 二、八、十六进制转换方法:将十进制数除以基数(

6、二进制基数为2、八进制基数为8、十六进制基数为16),并记录余数,若商不为0,则继续用商除以基数,并记录余数,直到商为0,余数倒排列写下来,即为转换后的二进制或八进制或十六进制。注意:在转换过程中,余数为0也要记录下来,很多学生在做题时,忽略了余数0。通过以下3个例子的讲解,使得学生对十进制转换成二、八、十六进制的方法进一步掌握。(36)10=( 100100 )2(39)10=( 47 )8(27)10=( 1B )162 36 08 39 716 27 B2 18 08 4 416 1 12 9 1 0 02 4 02 2 02 1 102、二、八、十六进制 十进制转换方法:按位展开,对应

7、位乘以权值(权值即为基数的n次幂,n从0开始),最后将所有乘积相加,所得结果即为十进制数。(10101)2=( )10(67)8=( )10(1A2)16=( )10(1 0 1 0 1)2= 1×24+0×23+1×22+0×21+1×20 =( 21 )10 24 23 22 21 20(67)8=6×81+7×80=( 55 )10 81 80(1 A 2)16=1×162+A×161+2×160=( 418 )10 162 161 1603、八、十六进制 二进制转换方法:八进制(或十六进

8、制)数的每一位数字用三位(或四位)二进制数表示,最后将对应的二进制数依次写下来,即为二进制数。注:八进制数7、6、5、4、3、2、1、0对应的三位二进制数分别为111、110、101、100、011、010、001和000。十六进制数F、E、D、C、B、A、9、8、7、6、5、4、3、2、1、0对应的四位二进制数分别为1111、1110、1101、1100、1011、1010、1001、1000、0111、0110、0101、0100、0011、0010、0001和0000。(642)8=( )2(3B5C)16=( )2(6 4 2)8=(110100010)2(3 B 5 C)16=( 0

9、011101101011100 )2110 100 010 0011 1011 0101 1100给学生思考时间,如何将二进制转换成八进制、十六进制?五、整数和实数1、整型常量分类(1)八进制整型常量以数字0开头,其中由数字07组成,如023、076等。(2)十进制整型常量最常用的常量,由数字09组成,如15、345、-38等。(3)十六进制整型常量以0x或0X开头,由数字09、字母af(或大写AF)组成,如0x7e、0X4AB等。注:整型常量没有二进制的。2、整型变量分类(1)短整型变量类型说明符为:signed short int,占用2个字节,取值范围为-3276832767。(2)基本

10、整型变量类型说明符为:signed int,占用4个字节,取值范围为-21474836482147483647。(3)长整型变量类型说明符为:signed long int,占用4个字节,取值范围与基本整型变量相同。(4)无符号短整型变量类型说明符为:unsigned short int,占用2个字节,取值范围为065535。(5)无符号基本整型变量类型说明符为:unsigned int,占用4个字节,取值范围为04294967295。(6)无符号长整型变量类型说明符为:unsigned long int,占用4个字节,取值范围同无符号基本整型变量相同。注:整型变量的各种类型,在编程中一定要注

11、意,不要让一个整型变量超出该类型的取值范围,以免发生溢出错误。可引导学生自己推出每种变量的表示范围。3、实型常量(1)小数形式小数点前或后可以没有数字,但不能同时没有数字。参考教材P18的例子。(2)指数形式可以参考口诀:“E前E后必有数,E后必须为整数”,讲解P18指数形式的例子。4、实型变量实型变量分为:单精度实型(float)和双精度实型(double)。float占用4个字节,double占用8个字节。六、整数在内存中的存储形式对于整型数据,在内存中都是以补码形式存储的。用补码存储一个有符号整数,最高位(最左边的一位)存放符号,正数最高位为0,负数最高位为1。计算规则如下:正整数:原码

12、=反码=补码。负整数:反码=原码除符号位(符号位为1)以外,数值部分按位取反补码=反码的末位加1注:无符号整数表示的都是正数,所以其中最高位不再存放符号。在二级C考试中,只需要记住无符号整数65535表示成有符号整数-1,无符号整数65534表示成有符号整数-2,其他依次类推。以下例子是历年考试中出现过的,通过讲解让学生掌握无符号数和有符号数的区别。main() unsigned int a; int b=-1; a=b; printf("%u" , a);七、算术运算和赋值运算1、算术运算符(、*、/、%)(1)/:5/2=25.0/2=2.55/2.0=2.55.0/2

13、.0=2.5(2)%:5%2=1-5%2=-15%-2=1注:这五种算术运算符以/和%为主,进行除运算时,注意两边都为整数的情况;“%”运算符左右两边必须为整数,余数的符号同被除数的符号相同。2、算术运算符的优先级(*、/、%)>(、)3、算术表达式的计算根据优先级的高低决定计算顺序。通过讲解以下表达式的计算过程,使学生掌握算术运算符的优先级。4*5+8*2%4+12/5=224、赋值运算符(=、+=、-=、*=、/=)赋值运算的一般格式为:变量=表达式(1)+= a+=6 a=a+6(2)-= a-=6 a=a-6(3)*= a*=6 a=a*6(4)/= a/=6 a=a/6注:任意

14、一种赋值运算符的左侧必须为变量,不能是表达式和常量;整个赋值表达式的值是最左边变量的值。当赋值运算符左右两边类型不一样,系统会自定进行类型转换。八、强制类型转换强制类型转换的格式为:(类型名)表达式注:在二级C考试中,经常考强制类型的转换格式,尤其是一对小括号的位置。九、自加、自减运算符1、自加、自减运算符(+、-)自加、自减运算符的运算对象只能是变量,运算符可在变量的前面,也可以在变量的后面,形如i+、+i、i-、-i。2、自加、自减的运算规则自加:i+ 先用i的值参与运算,再使i的值加1。自加:+i 先使i的值加1,再让i参与运算。自减:i- 先用i的值参与运算,再使i的值减1。自减:-i

15、 先使i的值减1,再让i参与运算。注:自加、自减运算是一个难点,可以参考以下例子进行详细讲解,便于学生掌握。main() int m=011,n=11; printf("%d,%dn",+m,n+);/*输出结果为:10,11*/ printf("%d,%dn",-m,n-);/*输出结果为:9,12*/3、自加、自减运算的注意事项(1)只能和变量结合,如(i+)+是不合法的。(2)运算结合方向是从右到左。注:参照教材最后附录三,为学生讲解优先级和结合性,完成对表达式“-x+”的分析。十、逗号运算符及逗号表达式1、逗号运算符(,)在逗号表达式中,逗号运算

16、符具有从左向右的结合性,最后一个表达式的值是整个逗号表达式的值。2、要和变量多余的情况区别开(参考P24、例2)注:为学生讲解,将P24、例2中的最后一条语句改为“printf("%dn",a1,a2);”的情况,使得学生注意逗号运算与变量多余的区别,这是二级C考试中,经常会出错的。3、优先级别(重点讲解P24、例3)在所有运算符中,逗号运算符优先级最低。十一、C语言中的语句1、表达式语句表达式;2、空语句;3、复合语句语句1; 语句2;语句n;十二、注释C语句中有两种注释方法:(1)/:只能注释一行(2)/*/:可注释多行,在“/*”和“*/”之间的都属于注释部分。注:注

17、释在程序运行时,不执行,第二种注释需要注意,在二级C考试中出现过,参考教材P26,第4题。十三、字符数据1、字符常量分类(1)一般字符常量用一对单引号括起来的单个字符,如'A'、'b'、'5'。(2)转义字符常量在一对单引号内,以“”开头,后跟一个字符,或13位八进制数。另外也可以是12位的十六进制数,但必须以“x”开头(在这里,一定注意x不能是大写的X)。注:在二级C考试中,转义字符是必考的,可以参考P28,例1。更要注意“”后跟的13位八进制数不能以数字0开头。2、字符变量定义字符变量的格式为:char 变量名;注:字符型数据在内存中占1个字

18、节。3、字符型数据参与运算采用其ASCII码进行运算。注:字符型数据可以按“%d”和“%c”输出,注意这两者区别。参考P29,第3题。十四、位运算1、位运算符(、<<、>>、&、|)2、位运算注意事项(1)对象只能是整数或字符型数据。(2)进行位运算前,一定要先将数据转换成二进制数。(3)各个位运算符的优先级注:字符型数据参与位运算时,采用其ASCII码进行运算。3、位运算的规则(1):0变1,1变0。(2)<<:a<< i表示a向左移动i位,右补0。(3)>>:a>> i表示a向右移动i位,左补符号位。(4)&a

19、mp;:a&b a、b对应的二进制位,同时为1,则结果即为1,否则为0。(5)|:a|ba、b对应的二进制位,只要有一个为1,则结果即为1,否则为0。(6):aba、b对应的二进制位,相同为0,不同为1。注:在没有舍去数据的时候,<<左移一位表示乘以2;>>右移一位表示除以2。两个相同的数进行按位异或(),结果为0。在历年考试中出现过类似的题,参考P31、例2,学生只要记住该规则,就可节省过多的做题时间。其次要掌握“&”和“|”,可以参考P31,例1进行讲解。第二章 数据输出与输入教学课时:本章考点:考点考核几率分值printf函数(难点)100%34p

20、utchar函数60%12scanf函数(难点)100%34getchar函数60%12 教学内容一、数据输出函数printf1、printf函数的一般格式: printf(格式输出控制,输出列表)(1)格式输出控制:需用一对双引号括起来,双引号内包含“格式说明”和“普通字符”两部分。(2)输出列表:需要输出的数据,多个数据之间用逗号隔开。2、格式说明“格式说明”由“%”和格式字符组成,如%d,%c,更多格式说明请参考P34,表2-1。它的作用是把输出数据转换为指定格式输出。注:在printf函数中,若格式说明的个数少于输出项的个数,多余的输出项则忽略不输出,这是二级C考试中经常出现的题目,可

21、参考P34,例2进行讲解。3、普通字符普通字符会原样输出,转义字符需要输出对应的字符。注:printf函数输出数据时,学生做题很容易忽略普通字符的输出。在二级C考试中,这类题目常出现,可以通过以下例子进行讲解。 main() int a,b; a=10; b=15; printf("a+b=%d",a+b); 4、数据输出实例(已知int a=66; float b=123.56;)通过以下各输出语句,讲解输出函数的各种格式。(1)printf("%d",a);66(2)printf("%3d",a);66(3)printf(&quo

22、t;%-3d",a);66(4)printf("%f",b);123.560000(5)printf("%7.2f",b);123.56(6)printf("%-7.2f",b);123.56(6)printf("%c",a);B(7)printf("%x",a);425、putchar函数格式为:putchar(c)这里的c只能是字符型变量或字符型常量,即putchar函数只能输出字符型数据。二、数据输入函数scanf1、scanf函数的一般格式:scanf(格式输入控制,输入数据列

23、表)格式输入控制与printf函数的格式输出控制相同。输入数据列表必须是一个或者是多个合法的地址。注:输入函数是一个难点,学生一般掌握的情况不是很好,建议老师讲解时放慢速度。2、scanf函数的注意事项(1)输入数值型数据时,各数值间的分隔符可以是:空格、Tab、回车。(2)输入字符型数据时,空格、Tab、回车都会被认为是字符,而不是分隔符。(3)“格式输入控制”中的普通字符,在输入数据时一定要原样输入。(4)跳过输入数据,在%和格式字符之间加一个“*”。注:以上注意事项,在二级C考试题目中经常出现,可以通过以下数据输入实例,进行讲解。3、数据输入实例(已知char c1, c2; int c

24、, d , e;)(1)scanf("%d%d%d ",&c, &d, &e);输入:5<空格>6<空格>7<回车>输入:5<Tab>6<Tab>7<回车>输入:5<回车> 6<回车> 7<回车>/以上三种输入方式,c、d、e的值分别都为5、6、7。(2)scanf(“%d,%d, %d”,&c, &d, &e);输入:5,6,7<回车>若输入第一个数据后,使用了任意一种分隔符,则只确定输入了c的值为5,d和

25、e为本身的初始值,若没有初始值,则为不定值。注:在C语言中,没有指定值的任何类型的变量,在输出时为不定值。(3)scanf(“%d%*d%d%d”,&c,&d,&e);输入:2<空格>3<空格>4<空格>5<回车>/c、d、e的值分别为2、4、5(4)scanf("%c%*c%*c%c",&c1,&c2);输入:a<空格>b4<回车>/c1、c2的值分别为a、4(5)scanf("%2d%d%d",&c,&d,&e);输

26、入:123<空格>456<回车>/ c、d、e的值分别为12、3、456(6)scanf("%d",&c,&d,&e);输入:1<空格>2<空格>3<回车>/ c的值为1、d、e为不定值4、getchar函数格式为:getchar()该函数称为输入字符型数据的函数,只能用来接收一个字符型数据。注:在输入字符型数据时,空格、Tab、回车都属于字符。在二级C考试中经常出现该类题目,可以参考以下例子,进行讲解。 main() char c1,c2,c3,c4; c1=getchar(); c2=g

27、etchar(); c3=getchar(); c4=getchar(); printf("%c%c%c%c",c1,c2,c3,c4); 运行程序时,输入:a<空格>b<空格>5<回车>第三章 选择结构教学课时:本章考点:考点考核几率分值关系运算符及关系表达式60%13逻辑运算符及逻辑表达式60%13if语句嵌套的if语句(难点)100%35条件表达式、switch语句(难点)100%25goto语句100%12 教学内容一、关系运算与逻辑运算1、关系运算符>、>=、<、<=、=、!=。2、关系运算符的优先级别(

28、>、>=、<、<=)>(=、!=)3、关系表达式关系表达式的运算结果有两个:0和1,0代表“假”,1代表“真”。4、逻辑运算符&&、|、!5、逻辑运算符的优先级别! > && > |6、逻辑表达式逻辑表达式的运算结果有两个:0和1,0代表“假”,非0代表“真”。注:“&&”和“|”存在“短路”现象。&&运算符左边的表达式的值为“假”,则不再计算&&运算符右边的表达式的值;|运算符左边的表达式的值为“真”,也不再计算|右边的表达式的值。可以参考P45,第2题、第6题进行讲解。

29、在二级C考试中,经常考计算关系和逻辑表达式的值。在计算的过程中,要注意运算优先级:!>算术运算>关系运算>&&>|>赋值运算。二、if语句1、简单的if语句格式为: if(表达式) 语句注:在二级C考试中,经常考查简单的if语句。当表达式成立时,默认只有一条执行语句,可以通过以下例子进行讲解。 main() int a=10,b=50,c=30; if(a>b) a=b,b=c; c=a; printf("%d,%d,%dn",a,b,c); 2、ifelse语句格式为: if(表达式) 语句1 else 语句23、多分支

30、ifelseif格式为: if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 else 语句n注:if语句中表达式可以是任意合法的表达式(在二级C考试中,经常用赋值语句作为if语句的表达式)。语句如果是复合语句必须用“ ”将语句括起来,否则会出错,可以参考以下例子进行讲解。 main() int a=0,b=0,c=0,d=0; if(a=1) b=1;c=2; else d=3; printf("%d,%d,%d,%dn",a,b,c,d); 4、嵌套if结构中的else和if的配对原则else总是和离它最近的且不带else的

31、if配对,可以参考以下例子进行讲解。 #include <stdio.h> main() int x=1,y=2,z=3; if(x>y) if(y<z) printf("%d ",+z); else printf("%d, ",+y); printf("%dn",x+); 三、条件表达式、switch语句、goto语句1、条件表达式基本格式为: 表达式1?表达式2:表达式3可以通过以下例子进行讲解,便于学生对条件表达式的分析和理解。 main() int x, a=2, b=5; x=(a<b)?a:b

32、; printf("%dn", x); 注:在嵌套的条件表达式中,运算从右向左计算,可以参考P56、第5题进行讲解。2、switch语句基本格式为: switch(表达式) case 常量表达式1:语句1; break; case 常量表达式2:语句2; break; case 常量表达式n:语句n; break; default:语句n+1; break; switch语句注意事项:(1)switch、case、break、default都是关键字。(2)default语句至多有一个,但位置可以放在任何case之前。(3)表达式的值只能是整型或字符型。注:switch语句

33、中,注意在case的语句块后加break语句和不加break语句的区别,在二级C考试中,经常考查该类题。另外,考查default语句的执行(只有所有case后的常量表达式都不成立时,才执行default后的语句)。可以参考P56、第4题进行重点讲解。3、goto语句无条件转向goto语句,格式为:goto 语句标号;第四章 循环结构教学课时:本章考点:考点考核几率分值while语句100%23dowhile语句100%23for语句(难点)100%57循环结构的嵌套(难点)100%46break语句(难点)70%23continue语句(难点)50%23 教学内容一、while语句while语

34、句的一般形式为: while(表达式) 循环体语句 while循环结构的执行过程:先计算表达式(循环条件)的值,若结果为“真”(非0),执行循环体语句;然后再次计算表达式的值,重复上述过程,直到表达式的值为“假”(0)时,结束循环,流程控制转到循环结构的下一条语句。while循环结构的注意事项:(1)while循环结构的特点是“先判断,后执行”。如果表达式的值一开始就为“假”,则循环体一次也不执行。(2)循环体内中,如果包含两个或两个以上的语句,必须用花括号括起来,以复合语句的形式出现。(3)循环体内一定要有改变循环条件的语句,使循环趋向于结束,以免形成“死循环”。注:可以通过P59、例1进行

35、详细讲解,便于学生掌握while循环结构。二、dowhile语句dowhile语句的形式为: do 循环体语句 while(表达式);dowhile循环结构的执行过程:先执行一次循环体语句,然后计算表达式(循环条件)的值。若结果为“真”(非0),则再次执行循环体,再计算表达式的值,如此重复下去,直到表达式的值为“假”(0)时,循环结束,流程控制转到循环结构的下一条语句。dowhile循环结构的注意事项:(1)循环体包含两个或两个以上的语句时,必须用花括号括起来,以复合语句形式出现。(2)循环体内一定要有改变循环条件的语句,使循环趋向于结束,以免形成“死循环”。三、for语句for语句的形式为:

36、 for(表达式1;表达式2;表达式3) 循环体语句 for循环结构的执行过程:先执行表达式1,赋初值;再执行表达式2,计算表达式2的值,结果为“真”(非0),执行循环体语句;循环体语句执行完毕,返回表达式3,让循环变量发生变化,再判断表达式2的值。如此循环重复下去,直到表达式2的值为“假”(0)时,循环结束,流程控制转到循环结构的下一条语句。for循环结构的注意事项:(1)关键字for的三个表达式允许部分或全部省略,但其中的两个分号(;)不能省略。(2)当省略表达式3时,应该在循环体有修改循环变量的值的语句,以保证循环能够正常结束。(3)当表达式2或三个表达式全部省略时,应该在循环体内设置相

37、应的语句来结束循环,否则程序始终认为判断条件成立,循环将无终止地执行下去,即形成死循环。(4)循环体包含两个或两个以上的语句时,必须用花括号括起来,以复合语句形式出现。注:可以参考P59、例1,为学生讲解以上三种循环结构以及它们之间的关系。四、循环结构的嵌套任意一种循环结构中又套有循环结构,称为循环的嵌套。循环结构的嵌套是一个难点,建议通过以下求阶乘的和(s=1!+2!+3!+n!,n由键盘输入),重点来讲解。另外,可参考P69,第3题进行讲解,便于学生会分析嵌套程序的执行。 main() int i,j,n; long sum,p; /*定义变量sum、p为长整型变量*/ scanf(&qu

38、ot;%d",&n); for(sum=0,i=1;i<=n;i+) p=1; j=1; do p=p*j; /*求i的阶乘*/ while(+j<=i); sum+=p; /*把i的阶乘累加到sum中*/ printf("nsum=%ldn",sum); 五、break语句和continue语句1、break语句break语句的一般形式: break;该语句的功能是:使执行从包含它的最内层循环或switch语句中跳出,转到switch结构或该循环结构外的下一条语句执行。这将导致包含它的最内层循环(while、for、dowhile)或swit

39、ch语句的终止。使用break语句的注意事项:(1)break语句只能用于switch结构或循环结构中。在循环结构中应用时,通常与if语句配合使用。(2)在嵌套的循环结构中使用时,break语句只能跳出(或终止)包含它的最内层循环。而不能同时跳出(或终止)多层循环。以下程序涉及在嵌套结构中,使用了break语句,建议重点讲解。 #include <stdio.h> main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+; b+;

40、break; case 3: a+; b+; printf("a=%d, b=%dn", a, b);/*输出结果为:a=2, b=1*/ 2、continue语句continue语句的一般形式: continue;该语句的功能是:结束本次循环,使得包含它的循环(while、dowhile、for)开始下一次循环。使用continue语句的注意事项:(1)continue语句只能用于循环结构中,通常也要有if语句配合使用。(2)continue语句只能结束本次循环,而不是终止整个循环的执行。(3)在循环结构中,一旦continue语句执行,即使该语句后有其他语句也不再执行,

41、而是跳转到循环条件,再次判断条件是否成立。注:continue语句是个难点,在二级C考试中经常出现。可以参考P69、第1题和第2题进行详细讲解。第五章 函数教学课时:本章考点:考点考核几率分值函数的定义与返回值80%13库函数60%12函数调用及形参与实参之间的数据传递(难点)100%24函数的声明60%01教学内容:一、函数的定义1、函数定义功能单一且独立的程序模块,用于完成特定的任务并根据需要返回一个确定的值。2、函数定义的格式 返回值类型函数名(类型1形参名1 , 类型2 形参名2) 说明部分 语句部分 3、注意事项(1)函数返回值类型名缺省时,返回值类型默认为int,无返回值时类型是v

42、oid。(2)函数名和形参名是用户标识符,后面的括号“( )”不能省。(3)一对花括号中的内容为函数体,包含两部分:说明部分和语句部分。(4)函数不能嵌套定义。二、函数返回值1、return语句基本格式为:return (表达式);2、使用return语句的注意事项(1)表达式可以不加括号。(2)表达式的类型应和函数定义返回值的类型一致。(3)如果有多个return语句,则只有第一个起作用,因为一旦遇到return语句就会结束当前函数的运行。注:此处可参考教材P76的求矩形面积的例子、例1以及下面的例子来讲解各个函数的定义。 int max(int a,int b) int c; if(a&g

43、t;b) c=a; else c=b; return c; 三、库函数1、include命令行一般格式为:#include <头文件名.h> 或 #include "头文件名.h"2、注意事项(1)include命令行必须以“#”符号开头。(2)系统提供了的头文件以.h作为文件的后缀。(3)include命令行是C语言的预处理命令,所以不用在语句的结尾加“;”。例如,在程序中要引用数学函数,则在程序开头要加上:#include "math.h"。3、库函数的调用形式 函数名(实参);库函数的调用可以以两种形式出现: (1)在表达式中调用,如y

44、=cos(x);。(2)作为独立的语句完成某种操作,如:printf("I am a teacher");.此处可引入下面的例子来讲解库函数的应用。例如,若有代数式(其中e仅代表自然对数的底数,不是变量),则表示该代数式的C语言表达式是:sqrt(fabs(pow(n,x)+exp(x)。解析:在C语言中,计算平方根应使用sqrt()函数,计算n的x次方应使用pow()函数(第1个参数是n,第2个参数是x);计算自然数e的x次方应使用exp()函数,计算绝对值使用fabs()函数。本题的代数式首先应计算nx和ex,根据前面介绍应该分别为pow(n,x)和exp(x),然后计

45、算它们的和pow(n,x)+exp(x),接着是这个和的绝对值fabs(pow(n,x)+exp(x),最后对这个绝对值开平方,所以最终结果应是sqrt(fabs(pow(n,x)+exp(x)。注:带领学生完成教材P77的课后习题。四、函数调用1、函数调用的形式函数名 (实参);2、函数调用注意事项(1)不写返回值类型和实参类型。(2)实参可以是常量、变量、表达式、函数调用。(3)参数传递方向:实参形参(单向)。(4)若函数返回值类型是void,则函数调用不能出现在表达式中,不能赋值给变量。注:函数调用以及参数的传递,初学者很难理解,所以多举一些例子详细讲解函数调用和参数传递的过程。在此可以

46、参考教材P78、例1、例2和P79、例3来详细讲解函数的调用。通过下面的程序(即P82、例1)讲解函数参数的传递,注意讲解形参变化而实参不变。 void swap(int x,int y) int t; t=x;x=y;y=t; printf("%d%d",x,y); main() int a=3,b=4; swap(a,b); printf("%d%d",a,b); 五、函数的声明1、函数声明的形式返回值类型函数名(类型1形参名1, 类型2形参名2,);即在函数的首部加上分号。2、函数声明的注意事项(1)可省略形参名,不可省略形参的类型。(2)声明的位

47、置:在函数的内部,该函数属于私有函数;如果在所有函数的外部,则属于公有函数。(3)声明时的参数名可与定义时的形参名相同,也可不同。 3、函数的两种使用方式(1)先定义,后调用。(2)先声明,后调用,最后定义。此处可引用P79的求矩形面积的程序和P80、例4来讲解函数声明的位置和使用形式。注:带领学生完成本章的课后习题。第六章 指针教学课时:本章考点:考点考核几率分值变量的地址和指针(难点)60%24指针变量的定义、赋值和运算等操作(难点)100%48函数之间地址值的传递(难点)70%25教学内容:一、指针的定义1、变量p存放变量a的地址,即变量p指向变量a,p是一种特殊类型的变量,称为指针变量

48、。2、指针变量的定义形式(1)一级指针变量的定义:类型名* 指针变量名1;(2)二级指针变量的定义:类型名* 指针变量名1;二级指针变量即指向指针的指针变量。注:指针的概念是一个难点,讲解时以教材P84中的例子和P85中的图例法来讲解,这样学生比较容易理解。并且带领学生完成P87的课后习题,以使学生进一步掌握和理解指针的概念以及定义方法。二、指针变量赋值1、通过“&”运算符给指针变量赋初值 int a,*p; p=&a;注释:单目运算符“&”只能和变量结合,求变量的地址,不能放在表达式的前面。2、给指针变量赋空值 int *p;p=NULL;注释:不能通过一个空指针访问一个存储单元。3、通过其他指针变量获得地址值 int *p,*q,a; p=&a; q=p;这样p和q则指向同一个变量。三、间接访问运算符(引用存储单元)1、间接访问运算符:*2、含义:*p表示访问p所指向变量的值。(p为指针变量)3、间接访问运算符和定义时指针变量中“*”的区别 int a,*p; a=3;p=&a; priintf("%d",*p);注:要讲解清楚,第一行中的*p和第三行中的*p的区别。此处可参考教材P89、例1。四、指针

温馨提示

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

评论

0/150

提交评论