《C语言程序设计》课程教案表
授课题目 第二章 基本数据类型和表达式(1) 课时安排 授课时间 教学目的和要求 1.掌握:各种数据类型的关键字、常量及变量的定义 2.熟悉:各种类型常量、变量的定义形式 3.了解:各种数据类型在计算机中所占的存储空间 教学内容 1.基本内容:C语言的数据类型、常量、变量 2.重点:变量定义的形式 3.难点:指针变量 讲课进程和时间分配 1、导入(3分钟) C语言是用来书写程序的,而通常程序要对数据进行操作处理:处理的对象是数据通过运算符和表达式进行操作。因此本章在C语言程序设计这门课程占有非常重要的地位。 2、C语言数据类型 (12分钟) (1)C语言数据类型分类 无符号整型 整型 长整型 整型、短整型 基本类型 字符型 单精度 实型 双精度 枚举型 数组 数据类型 构造类型 结构体 共用体 指针类型 空类型 (2)各种数据类型的关键字,及在计算机内存中所占大小(以各种不同的编译环境为例) 类型名 整型 短整型 长整形 无符号整型 无符号长整型 无符号短整型 关键字 int short [int] long [int] unsigned int unsigned long unsigned short 所占字节(B) TC 2 2 4 2 4 2 Rarnu_c 2 2 4 2 4 2 VC++ 4 2 4 4 4 2 2 单精度 双精度 字符型 指针类型 float double char * 4 8 1 2 4 8 1 4 4 8 1 4 (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″,它在内存中实际存放的形式如下图 C H I N A \\0 说明:“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=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