《C语言程序设计》课程教案表
授课题目 第二章 基本数据类型和表达式(1) | 课时安排 | 2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
授课时间 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
教学目的和要求 1.掌握:各种数据类型的关键字、常量及变量的定义 2.熟悉:各种类型常量、变量的定义形式 3.了解:各种数据类型在计算机中所占的存储空间 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
教学内容 1.基本内容:C语言的数据类型、常量、变量 2.重点:变量定义的形式 3.难点:指针变量 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
讲课进程和时间分配 1、导入(3分钟) C语言是用来书写程序的,而通常程序要对数据进行操作处理:处理的对象是数据通过运算符和表达式进行操作。因此本章在C语言程序设计这门课程占有非常重要的地位。 2、C语言数据类型 (12分钟) (1)C语言数据类型分类 (2)各种数据类型的关键字,及在计算机内存中所占大小(以各种不同的编译环境为例)
(3)printf函数输出语句初步(在第三章在详细讲解) 一般格式为:printf(“控制格式”,输出参数1,输出参数2···输出参数n); 作用:在屏幕上输出引号内的信息或按控制格式所规定的格式输出数据。 为将要显示的数据指定需要输出的格式,需要用到以下不同的转换字符。具体含义如下: ·%d 表示数据按十进制整型数输出; ·%f 表示数据按十进制带小数点的形式输出; ·%o 表示数据按十进制八进制整型数输出; ·%x 表示数据按十进制十六进制整型数输出; ·%c 表示数据按字符型数输出; ·%u 表示数据按十进制无符号整型数输出; 引入常量与变量的讲解:C语言中的数据有变量与常量,它们分别属于上述这些类型。 3.常量(25分钟) 常量的类型:整型常量、实型常量、字符常量、字符串常量和符号常量。 (1)整型常量 1)十进制整数:取值范围:0~9。如1236,-234,0。 2)八进制整数:以0开头的数是八进制数,取值范围:0~7如:011表示八进制数的(11)8。 3)十六进制整数:以0x开头的数是十六进制数,取值范围:0~9,A~F或a~f。如:0x1F表示十六进制数的(1F)16 ,(十进制数为31)。 通过下面的例子使学生进一步熟悉整型常量的三种表示方法。 【例2.1】 三种进制表示方法的转换。 main() { int x=1246,y=01246,z=0x1246; printf(″%d,%d,%d\n″,x,y,z); /* %d:以十进制格式符输出*/ printf(″%o,%o,%o\n″,x,y,z); /* %o:以八进制格式符输出*/ printf(″%x,%x,%x\n″,x,y,z); /* %x:以十六进制格式符输出*/ } 运行结果: 1246,678,4678 2336,1246,11106 4de,2a6,1246 (2)实型常量 C语言实型常量只使用十进制数。有以下两种形式: 1)十进制数形式 它是由正负号、整数部分、小数点、小数部分组成,如: 3.14159,-7.2,8.9等都是十进制形式。 2)指数形式 它是由正负号、整数部分、小数点、小数部分和字母E或e后面带正负号的整数组成。如:十进制数180000.0=(1.8×105)用指数法可以表示为1.8e5,其中:1.8称为尾数,5称为指数。0.00123用指数法可以表示为1.23E-3。 需要学生注意的地方举例加以强调: (1)字母e或E之前(即尾数部分)必须有数字。如:e-3,e5是不合法的。 (2)e或E后面的指数部分必须是整数。如:9.8e3.1是不合法的。 (3)实型常量的后缀,用F(或f)表示单精度;用后缀L(或l)表示双精度型。 如:1.2345e-3f,表示单精度数;2.11e5L,表示双精度数。 (3)字符型常量 字符型常量是由一对单引号括起来的单个字符,在内存中占1个字节。转义字符也可以作为一个字符。 例如:′A′,′b′,′2′,′%′,′;′等都是有效的字符型常量。 说明:一个字符型常量的值是该字符集中对应的ASCII编码值。 例如,字符常量′0′~′9′的ASCII编码值是48~57。显然′0′与 数字0是不同的。让学生记住几个特殊的字符的ASCII码值:A ASCII为65,a ASCII 为97,大写字母的ASCII比小写字母的小32,B ASCII为66,b ASCII为98,其他字母字符以此类推。 (4)字符串常量 字符串常量是由一对双引号括起来的字符序列,若字符序列串长为N,则在内存占用N+1个内存单元,字符串常量在内存中存储时,系统自动加上串尾标记“\0” 例如:字符串″CHINA″,它在内存中实际存放的形式如下图
说明:“a”与‘a’是不同的。“a”是字符串常量,在内存占用2个字节长度。字符a本身一个字节,加一个转义符串尾标记‘\0’,又占用一个字节。而‘a’是字符常量,内存中只存储字符a的ASCII值,所以只占用1个字节长度。 通过说明:使学生能清晰地区别字符串常量与字符型常量。 (5)符号常量 用一个特定的符号来代替一个常量或字符串,这个符号称为符号常量。符号常量一般用大写字母表示,以便与其它标识符相区别。 符号常量的一般定义形式:#define 符号常量 常量(或“字符串”) 例2-2:符号常量应用 #define PI 3.14 main() { float area,r; r=10; area=r*r*PI; printf("area=%f\n",area); } 结果:area=314.000000 根据例题总结出符号常量的优点如下:(1)含义清楚、见名知意。(2)修改方便、一改全改。 4.变量(35分钟) (1)变量的概念 变量是指在程序运行过程中可以被改变的某个标识符的值。C语言中的变量可以分为以下几种类型,如图2-3所示。 使用变量时会涉及到变量名、变量类型与值、变量的地址3个方面的内容。 1)变量名(又称标识符名)。C语言中的变量名命名规则与标识符定义规则相同。由字母或下划线开头,其后可以用字母、数字或下画线组成的1~8字符。一般变量名由小写字母表示。例如:a、b、x、y、x1、max1、stu_list 2)变量的类型与值。在程序运行中,变量必须有一个确切的类型和具体值。所以,需要先确定变量的类型与值。定义不同类型的变量,在内存占用不同的字节(参见表2.1)。例如:int型变量占用2个字节,float型占用4个字节。 3)变量的地址。即存放变量的内存地址,又为变量的指针。 (2)变量的定义与初始化 在C语言中,无论使用哪一种类型变量,都要“先定义”,后“使用”。所谓定义,是给程序中用到的变量定义一个类型即取值范围;初始化,就是在定义变量的同时,给变量赋初值。 变量定义格式为: 〈数据类型〉 〈变量名表〉; 例:int a; /*定义变量a为int整型*/ a=3; /*给变量a赋值3 */ 或:int a=3; /*定义变量a的同时,给a赋值3,又称给变量初始化*/ 通过下图说明变量名、变量在内存中占据的存储单元、变量值三者关系。 int a=3; 提醒学生注意:变量名在程序运行的过程中不会改变,而变量的值可以改变。 (1)整型变量 整型变量用来存放整型数据,其定义的关键字如下: 1)基本型:用int表示(2字节) 2)短整型:用short int或short表示(2字节) 3)长整型:用long int或long表示(4字节) 4)无符号整型: ①无符号整型: 用unsigned int或unsigned表示(2字节) ②无符号短整型:用unsigned short int或unsigned short表示(2 字节) ③无符号长整型:用unsigned long int或unsigned long表示(4字节) 一个整型变量在内存中占两个字节(16bit),则int型变量数值的表示范围是-32768~32767,unsigned int变量数值的表示范围为0~65535。(图2-4 有符号与无符号整型数) 【例2.3】输出变量的值。 main() { int i,j; i=30000; j=40000; printf(“%d,%d\n”,i,j); } 运行结果:30000,-25536 可以看出,结果不正确。 通过上述例题分析出错原因并给出正确输出的方法:int变量的最大存储值为32767。因此,赋值语句i=30000没有超出最大取值范围。而赋值语句j=40000超出了最大取值范围,结果产生溢出,系统并不报错,而是给出了一个错误的结果。这时,可将变量j类型改为long类型即可解决溢出问题,即long j,并按%ld格式输出,就可以得到正确的结果。 (2)实型变量 实型变量又称浮点型变量,按能够表示数的小数点后的精度,C语言实型变量分为三种: 1)单精度型:用float表示,在内存占用4个字节,有效数字6~7位。 2)双精度型:用double表示,在内存占用8个字节,有效数字15~16位。 3)长双精度型:用long double表示,在内存占用16个字节,有效数字18~19位。 其定义方式如下: float a,b; /*单精度变量的定义*/ double c,d; /*双精度变量的定义*/ 举例说明浮点型数据是有误差的: 【例2-4】#include <stdio.h> void main() { float a,b; a=123456.789e5; b=a+20; printf("%f\n",b); } 如果将float改为double则结果不同 (3)字符型变量 字符型常量是以单引号括起来的单个字符,字符变量的定义使用的是关键字char。 char a,b; a=’a’; b=97; 整数和字符型可以互相赋值。 说明:一般编译系统默认字符型为signed类型,表示-128—127之间的数字对应的字符,如果想表示128-255之间的数字则字符需定义为unsigned char。 (4)指针变量 指针又称地址,指针变量即存放地址的变量。 变量值与变量地址是两个不同的概念,变量在内存所占的存储单元中存放的数据称为变量的值;变量在内存所占的存储单元的首地址称为变量的地址。变量的地址只可以存储在指针变量中,通过指针变量来引用地址中的数据。 指针变量定义的一般形式:数据类型 *指针变量名; 说明:数据类型为指针变量所存放的变量的类型 例如: int *p; /* 定义p是指向整型变量的指针变量*/ float *x; /* 定义x是指向实型变量的指针变量*/ char *y; /* 定义y是指向字符型变量的指针变量*/ 【例2.5】输出变量与指针变量的值。 main() { int a=10; /* a的值为10,假设变量a的内存地址编号 为65500*/ int *p; /* 定义指向整型变量的指针变量p */ p=&a; /*将a的地址送给指针变量p */ printf(“a=%d,p=%u”,a,p); /*分别打印出变量a, 指针变量p中 的值*/ } 运行结果:a=10,p=65500 通过上述例题进一步加深对指针变量的理解。 从图2-5中可以看到指针变量p中的值是变量a的地址65500。 通过图形更形象直观地让学生理解指针变量。 5.练习(10分钟) 1)以下选项中不正确的实型常量 A)2.607E-1 B)0.8103e C)-77.77 D)456e-2 2)不合法的十六进制 A)oxff B)0xabc C)0x11 D)0x19 6.总结(5分钟) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
讨论、思考题、作业: 实验指导书习题 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
参考资料(含参考书、文献等): 叶斌 陈世强. C语言程序设计. 北京:科学出版社 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
授课类型:理论课 讨论课□ 实验课□ 练习课□ 其他□ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
教学方式:传统授课 双语□ 讨论□ 示教□ 指导□ 其他□ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
教学资源:多媒体 模型□ 实物□ 挂图□ 音像□ 其他□ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论