C语言程序设计 教学课件 ppt 作者 田祥宏 全书 第2章

上传人:E**** 文档编号:89372383 上传时间:2019-05-24 格式:PPT 页数:150 大小:1.08MB
返回 下载 相关 举报
C语言程序设计 教学课件 ppt 作者 田祥宏 全书 第2章_第1页
第1页 / 共150页
C语言程序设计 教学课件 ppt 作者 田祥宏 全书 第2章_第2页
第2页 / 共150页
C语言程序设计 教学课件 ppt 作者 田祥宏 全书 第2章_第3页
第3页 / 共150页
C语言程序设计 教学课件 ppt 作者 田祥宏 全书 第2章_第4页
第4页 / 共150页
C语言程序设计 教学课件 ppt 作者 田祥宏 全书 第2章_第5页
第5页 / 共150页
点击查看更多>>
资源描述

《C语言程序设计 教学课件 ppt 作者 田祥宏 全书 第2章》由会员分享,可在线阅读,更多相关《C语言程序设计 教学课件 ppt 作者 田祥宏 全书 第2章(150页珍藏版)》请在金锄头文库上搜索。

1、,第2章 数据及数据类型,2.1 C语言的数据类型 2.2 常量 2.3 变量 2.4 不同类型数据间的混合运算 2.5 数据的输入与输出 习题2,本章学习要求: 1. 了解常量、变量的概念及各种类型常量的表示,掌握C语言的各种数据类型、符号常量及宏定义、标识符的命名规则以及不同类型数据之间的运算。 2. 掌握格式输入、输出函数,字符输入、输出函数的使用。,从第1章中我们知道,数据结构和算法是程序设计的两个主要要素。一个程序应包括对数据的描述和对数据处理的描述。对数据的描述即数据结构。在C语言中,系统提供的数据结构,是以数据类型的形式出现的。,2.1 C语言的数据类型,C语言具有丰富的数据类型

2、,它可以在基本类型的基础上按层次产生各种构造类型:数组、结构体、共用体等,并利用它们处理各种复杂的问题。 C语言规定,程序中所用到的任何一个变量和数据都必须指定其数据类型。C语言中的数据类型如图2.1所示。,图2.1 C语言中的数据类型,不同的数据类型具有以下不同的特点: (1) 不同的数据类型有不同的取值范围。如:有符号整数取值范围为3276832767,浮点数为3.4e383.4e38。 (2) 不同的数据类型有不同的操作。如:整型数据可以取余操作,实型数据却不行。 (3) 不同的数据类型即使有相同的操作,有时含义也不同。如:指针数据自增1与整数自增1含义是不同的。,C语言中,在某些数据类

3、型前还可以加上类型修饰符,以适应不同的使用情况。C语言中,共有4种类型修饰符:signed(带符号)、unsigned(无符号)、short(短型)、long(长型)。这4种类型修饰符均可用于int型,而signed、unsigned可修饰char型,long可修饰double型。 C语言中的数据,有常量和变量之分,它们分别属于上述这些数据类型。,2.2.1 普通常量 在程序运行过程中,其值不能被改变的量称为常量。 在C语言中,常量分为数值常量、字符常量和字符串常量。数值常量又分为整型常量和实型常量。这3种常量无须说明就可以使用,一般从字面形式就可以判别它们的类型。下面介绍C语言中的主要常量。

4、,2.2 常 量,1. 整型常量 整型常量是不带小数的数。例如-8、45、6892、0671、0x123、32769l、89L等。 整型常量可以用十进制、八进制和十六进制数来表示。6892表示的是十进制数;067表示的是八进制数(以0开头的整数),该数等于十进制数55;0x1F3表示的是十六进制数(以0x开头的整数),该数等于十进制数499。 整型数据在内存中是以补码形式存放的,各种机器处理上所占的字节数有所不同,一般占2个字节。,整型常量可分为短整型(short int)、整型(int)、长整型(long int)和无符号整型(unsigned int),它们所表示数的范围不同,即在内存中所

5、占的字节数不同。通常,短整型、整型、无符号整型占用2个字节,而长整型需要占用4个字节。 若要表示长整型常量或无符号整型常量,可在常量后面加上后缀L或U(小写字母l或u也可以)。如32769l、89L表示的是long int型常量;123U、489u表示的是unsigned int型常量;78900LU表示无符号long int型常量。,2. 实型常量 实型常量亦称浮点常量,是指带有小数部分的数值。例如0.32、139.0、2.34、2.34E5等。 C语言中的浮点常数为双精度型,因此在Turbo C2.0系统中,如果将浮点常数存储在内存中,它应占用8个字节的存储空间。浮点常数有两种书写方式:十

6、进制小数表示法,例如2.34;科学计数法(即指数形式),例如:2.34E-5表示2.34 105,其中的E也可以用小写e。,一个实数可以有多种指数表示形式。例如:123.457可以表示为123.457e0、12.3457e1、1.23457e2、0.123457e3、0.0123457e4等。其中,1.23457e2称为“规范化的指数形式”,即在字母E(或e)之前的数值中,小数点之前的整数部分必须且只能有1位非零数字,例如:2.3456E2、7.01e4、6.78912e12都属于规范化的指数形式,而23.456E2、0.701e4、6782e8则不属于规范化的指数形式。 通常对于特别大或特别

7、小的数用指数格式比较方便,一般不太大也不太小的数则用小数表示法比较直观。,浮点型数据在内存中的存放分为尾数部分和指数部分,一般占8个字节。 浮点数在表示数据时,常常是近似的。从数学意义上讲,两个不同的数字之间有无穷个实数,而计算机只能区分至少有一个二进制位(bit)不同的两个数字。如果要表示那些无穷无尽各不相同的数字,就要使用无穷多的位。实际上计算机只能用较少的位(通常是32位或64位)来表示一定范围内的浮点数,因此有许多浮点数只能是近似的表示。实型常量的有效位数为16位,例如:12345678901234.5678只能被近似地表示成12345678901234.568400,小数部分后4位为

8、无效数字。,3. 字符常量 字符常量有两种表示方法,分别如下: (1) 对于可显示的字符,直接用单引号括起来的单个字符,即为字符常量,例如 i、j 等。 (2) 对于不可显示字符,主要是控制字符(如换行符、回车符等)和在C语言中有特殊含义和用途的字符(如单引号、双引号、反斜杠等),可以用转义字符形式表示。 控制字符常量在屏幕上是不能显示的,在程序中无法用一个一般形式的字符表示,为了在程序中使用控制字符,则需要采用转义字符的方式。意思就是将反斜杠()后面的字符转换成另外的意义,如 n 中的 n 不代表字母n而作为“换行”符。,转义字符是由反斜杠( )后跟某个字母组成的,如表2.1所示。,表2.1

9、 常用转义字符表,广义地讲,C语言字符集中的任何一个字符均可用转义字符来表示。表中的ddd和xhh正是为此而提出的。ddd和hh分别为八进制和十六进制的ASCII代码。如 101 (八进制)表示字母 A,102 表示字母 B,134 表示 ,x65 (十六进制)表示 e 等。,4. 字符串常量 字符串常量是用双引号括起来的单个字符或多个字符。字符串中字符的个数称为字符串长度。长度为0的字符串(即一个字符都没有的字符串)称为空串,表示为 “ ”(一对紧连的双引号)。 例如:“m“,“abc“,“Hello World!“,“How do you do. “ 等,都是字符串常量。 如果反斜杠和双引

10、号作为字符串中的有效字符,则必须使用转义字符。,例如: C:msdosv6.22 “C:msdosv6.22“ I say:“Goodbye!“ “I say:“Goodbye!“ “ 和其他常量一样,字符串常量存储在常量存储区中。存储时,按字符串中字符从左到右的顺序依次占用连续的存储单元,每个字符占用一个字节,存放其对应的ASCII码。C编译器会自动在每个字符串常量的末尾加上一个空字符NULL(即 0)作为字符串结束标志。因此,如果一个字符串常量含有n个字符,则它要占用的存储空间为n + 1个字节。例如:字符串常量 “Hello“ 中含有5个字符,它在内存中要占用6个字节,即,注意,不要将字

11、符常量与字符串常量相混淆,比如说,字符常量 A 与字符串常量 “A”是不同的: (1) 定界符不同:字符常量使用单引号,而字符串常量使用双引号。 (2) 字符常量只能是单个字符(转义字符也是一个字符),字符串常量则可以含一个或多个字符。 (3) 可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。如“char c; c=“A“; ”就是错误的。,(4) 字符常量占一个字节的内存空间,字符串常量占的内存字节数等于字符串中字符数加1,增加的一个字节存放字符0 (ASCII码值为0),这是字符串的结束标志。,2.2.2 符号常量与宏定义 1. 符号常量 有时为了使程序更加清晰

12、和便于修改,增加程序的可维护性,用一个标识符来代表一个常量,即给某个常量取个有意义的名字,这种常量称为符号常量。符号常量是在一个程序中指定一个符号来代表一个常量。习惯上符号常量名用大写字母表示,普通变量名用小写字母表示。符号常量的定义形式如下: #define 标识符 字符串,#define是一种“编译预处理命令”(预处理命令均以“#”开头),称为宏定义命令。在编译整个程序之前,系统会先对程序中的预编译命令进行处理。#define的功能是把标识符定义为其后的字符串。一经定义,在预编译时将程序中凡是出现标识符的地方均代之以所对应的字符串。,例如: #define PI 3.1415926 PI为

13、符号常量,它的作用是指定用标识符PI来代替“3.1415926”这个字符串,在编译预处理时,将程序中在该命令以后出现的所有的PI都用“3.1415926”代替。这种方法使用户能以一个简单的名字代替一个长的字符串,因此把这个标识符(名字)称为“宏名”,在预编译时将宏名替换成字符串的过程称为“宏展开”。 使用符号常量的好处: 含义清楚,见名知意; 修改方便,一改全改。,2. 宏定义 宏定义又分为不带参数的宏定义和带参数宏定义。 1) 不带参数的宏定义 不带参数的宏定义也即符号常量的宏定义,具体内容在前面已经加以叙述,下面通过程序来进一步说明它的使用情况。 例2.1 利用宏定义计算圆周长、面积及体积

14、。 #define PI 3.1415926 main() float l,s,r,v; printf(“input radius:“); scanf(“%f“,l=2.0*PI*r; s=PI*r*r; v=3.0/4*PI*r*r*r; printf(“l=%10.4fns=%10.4fnv=%10.4fn“,l,s,v); 运行情况如下: input radius:4 l= 25.1327 s= 50.2655 v= 150.7964,说明: (1) 使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量。例如:如果不定义PI代表3.1415926,则在程序中要多处出现3.14

15、15926,不仅麻烦,而且容易写错(或敲错)。而用宏名代替,简单不易出错,因为记住一个宏名(它的名字往往用容易理解的单词表示)要比记住一个无规律的字符串容易,而且在读程序时能立即知道它的含义,当需要改变某一个常量时,可以只改变 #define命令行,一改全改。,(2) 宏定义是用宏名代替一个字符串,也就是进行简单的置换,不做正确性检查。如果写成 #define PI 3.14159 即把数字1写成小写字母l,预处理时也照样代入,不管含义是否正确。也就是说,预编译时不作任何语法检查。只有在编译已被宏展开后的源程序时才会发现错误并报错。,(3) 宏定义不是C语句,不必在行末加分号。如果加了分号则会

16、连分号一起进行置换。如: #define PI 3.l4l59; area=PI*r*r; 经过宏展开后,该语句为 area=3.1415926;*r*r; 显然出现语法错误。,(4) #define命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到本源文件结束。通常,#define命令写在程序文件开头,也可出现在程序的任何位置,但要单独占一行,在整个程序范围内有效。可以通过#undef终止宏名的作用域。,例2.2 宏名的作用域。,运行结果如下: abc 2.718280,(5) 在进行宏定义时,可以引用已定义的宏名,也可以层层置换。 例2.3 宏定义的层层置换。 #define R 3.0 #define PI 3.1415926

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号