校园网计算机二级C语言教案综合Word格式文档下载.docx
《校园网计算机二级C语言教案综合Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《校园网计算机二级C语言教案综合Word格式文档下载.docx(52页珍藏版)》请在冰豆网上搜索。
根据用户需要定义的标识符。
用户标识符不能是关键字。
标识符要求学生必须掌握,可以参考P11的习题进行讲解。
三、常量与变量
1、常量
在程序的运行过程中,其值不发生改变的量。
2、常量分类
(1)直接常量
直接常量又包括整型常量(如12、-3、0)、实型常量(如4.6、-1.23、1.2E+3)和字符常量(如'
A'
、'
6'
)。
(2)符号常量
符号常量在使用之前必须先定义,其一般形式为:
#define符号常量标识符常量值
通过以下两个实现功能相同(求圆面积)的程序,给学生解释使用与不使用符号常量两者的区别。
程序1:
程序2:
#defineR5main()
#definePI3.14159{
main()floatarea;
{intr;
floatarea;
r=5;
area=PI*R*R;
area=3.14159*r*r;
%f"
area);
printf("
}}
习惯上符号常量的标识符用大写字母。
符号常量的值在其作用域内不能被改变。
3、变量
在程序的运行过程中,其值可以改变的量。
4、变量的定义
变量定义的一般形式为:
类型说明符变量名;
变量名是合法的标识符,但不可以是关键字;
允许在一个类型说明符后,定义多个相同类型的变量,各变量名之间用逗号间隔,最后一个变量名之后必须以“;
”号结尾;
一般变量的定义放在函数体的开头部分。
可以通过以下例子的讲解,使学生进一步掌握变量的定义与使用。
inta,b,c;
a=15;
b=20;
c=b-a;
printf("
四、数制转换
1、十进制二、八、十六进制
转换方法:
将十进制数除以基数(二进制基数为2、八进制基数为8、十六进制基数为16),并记录余数,若商不为0,则继续用商除以基数,并记录余数,直到商为0,余数倒排列写下来,即为转换后的二进制或八进制或十六进制。
注意:
在转换过程中,余数为0也要记录下来,很多学生在做题时,忽略了余数0。
通过以下3个例子的讲解,使得学生对十进制转换成二、八、十六进制的方法进一步掌握。
(36)10=(100100)2(39)10=(47)8(27)10=(1B)16
236083971627B
21808441611
29100
240
220
211
2、二、八、十六进制十进制
按位展开,对应位乘以权值(权值即为基数的n次幂,n从0开始),最后将所有乘积相加,所得结果即为十进制数。
(10101)2=()10(67)8=()10(1A2)16=()10
(10101)2=1×
24+0×
23+1×
22+0×
21+1×
20=(21)10
2423222120
(67)8=6×
81+7×
80=(55)10
8180
(1A2)16=1×
162+A×
161+2×
160=(418)10
162161160
3、八、十六进制二进制
八进制(或十六进制)数的每一位数字用三位(或四位)二进制数表示,最后将对应的二进制数依次写下来,即为二进制数。
八进制数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
(642)8=(110100010)2(3B5C)16=(0011101101011100)2
1101000100011101101011100
给学生思考时间,如何将二进制转换成八进制、十六进制?
五、整数和实数
1、整型常量分类
(1)八进制整型常量
以数字0开头,其中由数字0~7组成,如023、076等。
(2)十进制整型常量
最常用的常量,由数字0~9组成,如15、345、-38等。
(3)十六进制整型常量
以0x或0X开头,由数字0~9、字母a~f(或大写A~F)组成,如0x7e、0X4AB等。
整型常量没有二进制的。
2、整型变量分类
(1)短整型变量
类型说明符为:
[signed]short[int],占用2个字节,取值范围为-32768~32767。
(2)基本整型变量
[signed]int,占用4个字节,取值范围为-2147483648~2147483647。
(3)长整型变量
[signed]long[int],占用4个字节,取值范围与基本整型变量相同。
(4)无符号短整型变量
unsignedshort[int],占用2个字节,取值范围为0~65535。
(5)无符号基本整型变量
unsigned[int],占用4个字节,取值范围为0~4294967295。
(6)无符号长整型变量
unsignedlong[int],占用4个字节,取值范围同无符号基本整型变量相同。
整型变量的各种类型,在编程中一定要注意,不要让一个整型变量超出该类型的取值范围,以免发生溢出错误。
可引导学生自己推出每种变量的表示范围。
3、实型常量
(1)小数形式
小数点前或后可以没有数字,但不能同时没有数字。
参考教材P18的例子。
(2)指数形式
可以参考口诀:
“E前E后必有数,E后必须为整数”,讲解P18指数形式的例子。
4、实型变量
实型变量分为:
单精度实型(float)和双精度实型(double)。
float占用4个字节,double占用8个字节。
六、整数在内存中的存储形式
对于整型数据,在内存中都是以补码形式存储的。
用补码存储一个有符号整数,最高位(最左边的一位)存放符号,正数最高位为0,负数最高位为1。
计算规则如下:
正整数:
原码=反码=补码。
负整数:
反码=原码除符号位(符号位为1)以外,数值部分按位取反
补码=反码的末位加1
无符号整数表示的都是正数,所以其中最高位不再存放符号。
在二级C考试中,只需要记住无符号整数65535表示成有符号整数-1,无符号整数65534表示成有符号整数-2,其他依次类推。
以下例子是历年考试中出现过的,通过讲解让学生掌握无符号数和有符号数的区别。
main()
{
unsignedinta;
intb=-1;
a=b;
%u"
a);
}
七、算术运算和赋值运算
1、算术运算符(+、-、*、/、%)
(1)/:
5/2=25.0/2=2.55/2.0=2.55.0/2.0=2.5
(2)%:
5%2=1-5%2=-15%-2=1
这五种算术运算符以/和%为主,进行除运算时,注意两边都为整数的情况;
“%”运算符左右两边必须为整数,余数的符号同被除数的符号相同。
2、算术运算符的优先级
(*、/、%)>
(+、-)
3、算术表达式的计算
根据优先级的高低决定计算顺序。
通过讲解以下表达式的计算过程,使学生掌握算术运算符的优先级。
4*5+8*2%4+12/5=22
4、赋值运算符(=、+=、-=、*=、/=)
赋值运算的一般格式为:
变量=表达式
(1)+=a+=6a=a+6
(2)-=a-=6a=a-6
(3)*=a*=6a=a*6
(4)/=a/=6a=a/6
任意一种赋值运算符的左侧必须为变量,不能是表达式和常量;
整个赋值表达式的值是最左边变量的值。
当赋值运算符左右两边类型不一样,系统会自定进行类型转换。
八、强制类型转换
强制类型转换的格式为:
(类型名)表达式
在二级C考试中,经常考强制类型的转换格式,尤其是一对小括号的位置。
九、自加、自减运算符
1、自加、自减运算符(++、--)
自加、自减运算符的运算对象只能是变量,运算符可在变量的前面,也可以在变量的后面,形如i++、++i、i--、--i。
2、自加、自减的运算规则
自加:
i++先用i的值参与运算,再使i的值加1。
++i先使i的值加1,再让i参与运算。
自减:
i--先用i的值参与运算,再使i的值减1。
--i先使i的值减1,再让i参与运算。
自加、自减运算是一个难点,可以参考以下例子进行详细讲解,便于学生掌握。
{intm=011,n=11;
%d,%d\n"
++m,n++);
/*输出结果为:
10,11*/
--m,n--);
9,12*/
3、自加、自减运算的注意事项
(1)只能和变量结合,如(i++)++是不合法的。
(2)运算结合方向是从右到左。
参照教材最后附录三,为学生讲解优先级和结合性,完成对表达式“-x++”的分析。
十、逗号运算符及逗号表达式
1、逗号运算符(,)
在逗号表达式中,逗号运算符具有从左向右的结合性,最后一个表达式的值是整个逗号表达式的值。
2、要和变量多余的情况区别开(参考P24、例2)
为学生讲解,将P24、例2中的最后一条语句改为“printf("
%d\n"
a1,a2);
”的情况,使得学生注意逗号运算与变量多余的区别,这是二级C考试中,经常会出错的。
3、优先级别(重点讲解P24、例3)
在所有运算符中,逗号运算符优先级最低。
十一、C语言中的语句
1、表达式语句
表达式;
2、空语句
;
3、复合语句
{语句1;
语句2;
…语句n;
十二、注释
C语句中有两种注释方法:
(1)//:
只能注释一行
(2)/*…*/:
可注释多行,在“/*”和“*/”之间的都属于注释部分。
注释在程序运行时,不执行,第二种注释需要注意,在二级C考试中出现过,参考教材P26,第4题。
十三、字符数据
1、字符常量分类
(1)一般字符常量
用一对单引号括起来的单个字符,如'
b'
5'
。
(2)转义字符常量
在一对单引号内,以“\”开头,后跟一个字符,或1~3位八进制数。
另外也可以是1~2位的十六进制数,但必须以“\x”开头(在这里,一定注意x不能是大写的X)。
在二级C考试中,转义字符是必考的,可以参考P28,例1。
更要注意“\”后跟的1~3位八进制数不能以数字0开头。
2、字符变量
定义字符变量的格式为:
char变量名;
字符型数据在内存中占1个字节。
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&
ba、b对应的二进制位,同时为1,则结果即为1,否则为0。
(5)|:
a|ba、b对应的二进制位,只要有一个为1,则结果即为1,否则为0。
(6)^:
a^ba、b对应的二进制位,相同为0,不同为1。
在没有舍去数据的时候,<
左移一位表示乘以2;
右移一位表示除以2。
两个相同的数进行按位异或(^),结果为0。
在历年考试中出现过类似的题,参考P31、例2,学生只要记住该规则,就可节省过多的做题时间。
其次要掌握“&
”和“|”,可以参考P31,例1进行讲解。
第二章数据输出与输入
printf函数(难点)
3~4
putchar函数
60%
scanf函数(难点)
getchar函数
一、数据输出函数printf
1、printf函数的一般格式:
printf(格式输出控制,输出列表)
(1)格式输出控制:
需用一对双引号括起来,双引号内包含“格式说明”和“普通字符”两部分。
(2)输出列表:
需要输出的数据,多个数据之间用逗号隔开。
2、格式说明
“格式说明”由“%”和格式字符组成,如%d,%c,更多格式说明请参考P34,表2-1。
它的作用是把输出数据转换为指定格式输出。
在printf函数中,若格式说明的个数少于输出项的个数,多余的输出项则忽略不输出,这是二级C考试中经常出现的题目,可参考P34,例2进行讲解。
3、普通字符
普通字符会原样输出,转义字符需要输出对应的字符。
printf函数输出数据时,学生做题很容易忽略普通字符的输出。
在二级C考试中,这类题目常出现,可以通过以下例子进行讲解。
inta,b;
a=10;
b=15;
a+b=%d"
a+b);
}
4、数据输出实例(已知inta=66;
floatb=123.56;
)
通过以下各输出语句,讲解输出函数的各种格式。
(1)printf("
a);
66
(2)printf("
%3d"
□66
(3)printf("
%-3d"
66□
(4)printf("
b);
123.560000
(5)printf("
%7.2f"
□123.56
(6)printf("
%-7.2f"
123.56□
%c"
B
(7)printf("
%x"
42
5、putchar函数
格式为:
putchar(c)
这里的c只能是字符型变量或字符型常量,即putchar函数只能输出字符型数据。
二、数据输入函数scanf
1、scanf函数的一般格式:
scanf(格式输入控制,输入数据列表)
格式输入控制与printf函数的格式输出控制相同。
输入数据列表必须是一个或者是多个合法的地址。
输入函数是一个难点,学生一般掌握的情况不是很好,建议老师讲解时放慢速度。
2、scanf函数的注意事项
(1)输入数值型数据时,各数值间的分隔符可以是:
空格、Tab、回车。
(2)输入字符型数据时,空格、Tab、回车都会被认为是字符,而不是分隔符。
(3)“格式输入控制”中的普通字符,在输入数据时一定要原样输入。
(4)跳过输入数据,在%和格式字符之间加一个“*”。
以上注意事项,在二级C考试题目中经常出现,可以通过以下数据输入实例,进行讲解。
3、数据输入实例(已知charc1,c2;
intc,d,e;
(1)scanf("
%d%d%d"
&
c,&
d,&
e);
输入:
5<
空格>
6<
7<
回车>
Tab>
6<
7<
//以上三种输入方式,c、d、e的值分别都为5、6、7。
(2)scanf(“%d,%d,%d”,&
5,6,7<
若输入第一个数据后,使用了任意一种分隔符,则只确定输入了c的值为5,d和e为本身的初始值,若没有初始值,则为不定值。
在C语言中,没有指定值的任何类型的变量,在输出时为不定值。
(3)scanf(“%d%*d%d%d”,&
c,&
d,&
2<
3<
4<
//c、d、e的值分别为2、4、5
(4)scanf("
%c%*c%*c%c"
c1,&
c2);
b4<
//c1、c2的值分别为a、4
(5)scanf("
%2d%d%d"
123<
456<
//c、d、e的值分别为12、3、456
(6)scanf("
1<
//c的值为1、d、e为不定值
4、getchar函数
getchar()
该函数称为输入字符型数据的函数,只能用来接收一个字符型数据。
在输入字符型数据时,空格、Tab、回车都属于字符。
在二级C考试中经常出现该类题目,可以参考以下例子,进行讲解。
charc1,c2,c3,c4;
c1=getchar();
c2=getchar();
c3=getchar();
c4=getchar();
%c%c%c%c"
c1,c2,c3,c4);
运行程序时,输入:
b<
第三章选择结构
关系运算符及关系表达式
1~3
逻辑运算符及逻辑表达式
if语句
嵌套的if语句(难点)
3~5
条件表达式、switch语句(难点)
goto语句
一、关系运算与逻辑运算
1、关系运算符
=、<
、<
=、==、!
=。
2、关系运算符的优先级别
(>
=)>
(==、!
=)
3、关系表达式
关系表达式的运算结果有两个:
0和1,0代表“假”,1代表“真”。
4、逻辑运算符
&
、||、!
5、逻辑运算符的优先级别
!
>
&
||
6、逻辑表达式
逻辑表达式的运算结果有两个:
0和1,0代表“假”,非0代表“真”。
“&
”和“||”存在“短路”现象。
运算符左边的表达式的值为“假”,则不再计算&
运算符右边的表达式的值;
||运算符左边的表达式的值为“真”,也不再计算||右边的表达式的值。
可以参考P45,第2题、第6题进行讲解。
在二级C考试中,经常考计算关系和逻辑表达式的值。
在计算的过程中,要注意运算优先级:
算术运算>
关系运算>
||>
赋值运算。
二、if语句
1、简单的if语句
if(表达式)语句
在二级C考试中,经常考查简单的if语句。
当表达式成立时,默认只有一条执行语句,可以通过以下例子进行讲解。
inta=10,b=50,c=30;
if(a>
b)a=b,b=c;
c=a;
%d,%d,%d\n"
a,b,c);
2、if…else语句
if(表达式)
语句1
else
语句2
3、多分支if…else…if
if(表达式1)
elseif(表达式2)
elseif(表达式3)
语句3
…
语句n
if语句中表达式可以是任意合法的表达式(在二级C考试中,经常用赋值语句作为if语句的表达式)。
语句如果是复合语句必须用“{}”将语句括起来,否则会出错,可以参考以下例子进行讲解。
main()
inta=0,b=0,c=0,d=0;
if(a=1)b=1;
c=2;
elsed=3;
%d,%d,%d,%d\n"
a,b,c,d);
4、嵌套if结构中的else和if的配对原则
else总是和离它最近的且不带else的if配对,可以参考以下例子进行讲解。
#include<
stdio.h>
{intx=1,y=2,z=3;
if(x>
y)
if(y<
z)printf("
%d"
++z);
printf("
%d,"
++y);
x++);
三、条件表达式、switch语句、goto语句
1、条件表达式
基本格式为:
表达式1?
表达式2:
表达式3
可以通过以下例子进行讲解,便于学生对条件表达式的分析和理解。
intx,a=2,b=5;
x=(a<
b)?
a:
b;
x);
在嵌套的条件表达式中,运算从右向左计算,可以参考P56、第5题进行讲解。
2、switch语句
switch(表达式)
case常量表达式1:
语句1;
break;
case常量表达式2: