1、第 2章 基本数据类型 第第 2章章 基本数据类型基本数据类型 2.1 整型整型 2.2 浮点型浮点型 2.3 字符型字符型 2.4 逻辑类型逻辑类型 2.5 标准函数标准函数 2.6 量的定义方法量的定义方法 第 2章 基本数据类型 2.1 整整 型型 2.1.1 基本整型基本整型 1.类型名称类型名称 int 2.取值范围取值范围 -32768+32767(-215215-1)3.数据表示方法数据表示方法 整型数据的表示方法与数学中的类似,不能有分隔符。C语言允许使用八进制整数与十六进制整数,八进制整数加前导符0(数字),十六进制整数加前导符0 x(数字0和字母x)。第 2章 基本数据类型
2、 4运算操作 (1)算术运算包括:+(加法)、(减法)、*(乘法)、/(除法)、%(求余)。运算规则除除法外,与数学中的相同。整数的除法运算是整除,结果得到商,如5/3结果为1。对于负数,多数机器采用向零取整法,如5/3结果为1。求余运算又称取模运算,结果得到余数,即a%b等于a(a/b)*b,如5%3结果为2,5%3结果为2。求余运算在许多场合都非常有用,如判断整数a是不是b的倍数,可看a%b是否等于零;a%10可得到a的个位数字,(a/10)%10可得到a的十位数字,如此可分离一个整数的每一位数字。一般只有除数大于0时,求余运算才有意义。当a小于0时,a%b等于(a)%b)。第 2章 基本
3、数据类型 (2)关系运算包括:(小于)、(大于)、=(大于等于)等六种,运算规则与数学中相同,运算结果为逻辑类型数据。关系运算成立结果为1,不成立结果为0。第 2章 基本数据类型 5.存储存储 C标准没有具体规定各类数据存储的字节数,各种机器处理有所不同,一般以一个机器字(Word)存放1个int数据,PC机上int数据存储用两个字节。机器中用最高位表示数的符号,正数符号位用0表示,负数符号位用1表示。负数在机器中存放的是其补码。第 2章 基本数据类型 6.应用应用例例2-1 求两个整数的积。/*程序2-1,求两个整数之积*/include stdio.hmain()int a,b;int m
4、;printf(请输入两个整数a,b:);scanf(%d,%d”,&a,&b);m=a*b;printf(积=%dn,m);输入数据:2000,3运行结果:积=6000 第 2章 基本数据类型 2.1.2 拓展整型拓展整型 1.类型修饰符类型修饰符 short:缩短数值所占字节数。long:扩大数值所占字节数。signed:有符号位,缺省方式。unsigned:无符号位。第 2章 基本数据类型 2.短整型短整型 短整型类型名称为short int或short,在TURBO C中,短整型与基本整型相同。3.长整型长整型 长整型类型名称为long int或long,取值范围为2312311(2
5、147 483 6482 147 483 647),长整型数据可加后缀L表示,在TURBO C中,存储占4个字节,运算与基本整型相同。第 2章 基本数据类型 4无符号整型 无符号数相对于有符号数的主要区别是数的最高位不做符号处理,而是常规的数字位,表示的数的绝对范围是有符号数的2倍。相应地,无符号整型有无符号基本整型、无符号短整型和无符号长整型三种。无符号基本整型,类型名称为unsigned int或unsigned,取值范围为02161,即065 535,存储占2个字节。无符号短整型,类型名称为unsigned short int或unsigned short,取值、运算、存储与无符号基本整
6、型相同。第 2章 基本数据类型 无符号长整型,类型名称为unsigned long int或unsigned long,取值范围为02321,即04294967295,存储占4个字节。无符号整型常用于处理大整数及地址数据。八进制数与十六进制数一般只用于unsigned类型数据。第 2章 基本数据类型 例2-2 整数9的机器表示。作为int:0000000000001001。作为short int:0000000000001001。作为long int:00000000000000000000000000001001。以上第一位为符号位,表示正整数。以下第一位为正常的数据位,是非符号位。作为un
7、signed int:0000000000001001。作为unsigned short int:0000000000001001。作为unsigned long int:00000000000000000000000000001001。第 2章 基本数据类型 2.2 浮点型浮点型 2.2.1 单精度型单精度型 1.类型名称类型名称float 2.取值范围取值范围绝对值范围为10381038,7位有效数字。第 2章 基本数据类型 3.数据表示方法数据表示方法 实数有一般形式和指数形式两种表示方法。一般形式又称小数表示法,是一种常规形式,由整数部分、小数点、小数部分三部分组成。C语言中的实数可以
8、没有小数部分或没有整数部分,如20.,.375。指数形式由尾数、指数符号e或E、指数三部分组成,尾数是一般形式的实数。指数形式适于表示较大或较小的实数。如2.34e10、2.34e-10,相应于数学中2.341010、2.3410-10。第 2章 基本数据类型 4.运算操作运算操作 实型数据的运算操作有算术运算和关系运算两大类,运算符同整型,运算规则与数学中实数的运算规则相同,但运算结果可能是一个近似值。实数没有求余运算。5.存储存储 4个字节 第 2章 基本数据类型 6.应用应用例例 2 3 求两个实数的积。/*程序 2-3,求两个实数之积*/include stdio.hmain()flo
9、at a,b;float m;printf(请输入两个整数a,b:);scanf(%f,%f,&a,&b);m=a*b;printf(积=%6.3fn,m);输入数据:1.1,2.21运行结果:积=2.431 第 2章 基本数据类型 2.2.2 双精度型双精度型 双精度型的类型名称为double或long float,较单精度型提高了计算精度,取值的绝对值范围为1030810308,有效数字为16位。双精度型数的表示方法与运算操作同单精度型数,要占用8个字节存储。计算机中太大的数不能表示,太小的数也不能表示,超出数的表示范围称为溢出,相应有上溢与下溢。对于大的数的处理必须通过间接的方法进行。有
10、不少的实数在机器中只能近似表示。第 2章 基本数据类型 2.3 字符型字符型 2.3.1 字符型数据字符型数据 1类型名称 字符的类型名称:char。2取值范围 字符型数据的取值范围:ASCII码字符集中的任何字符。3数据表示方法 用单引号作界定符,将字符引起表示字符数据,如a、+、%、:、1、2。第 2章 基本数据类型 说明:(1)单引号字符本身及双引号、反斜杠字符本身由于有特定的含义,不能如此表示,因而需采用其它表示方法。(2)字符数据本身除了可以直接出现外,还可以通过反斜杠后跟ASCII码来描述。ASCII码可采用三位八进制数或两位十六进制数表示,相应描述形式是ddd与xhh(位数不够,
11、加0补位),这种表示方法称为转义表示或转码表示。如此,字符A可表示为A、101、x41。尤其是一些特殊的字符只能这样表示,如图形字符可表示成376,单引号、双引号、反斜杠可分别表示成047、042、134。第 2章 基本数据类型 (3)对一些常用的特殊字符,C语言还提供特定的字符来转义表示。n:回车换行 :反斜杠字符 :单引号字符 :双引号字符 a:响铃报警 b:退格 f:走纸换行 r:回车 t:横向跳格 u:竖向跳格 0,空操作字符(NULL)(4)数字字符与数字是不同的数据,如9与9不同。第 2章 基本数据类型 4.运算操作运算操作 C语言的字符数据在存储时实际上是存储其ASCII码,存储
12、形式与整数的存储形式相同。基于此,C语言规定字符数据与整型数据在ASCII码取值范围内通用,因而C语言中字符数据可进行整型数据的相关运算及操作。a+b,等于97+98;a+2,等于97+2;ab等于9798。第 2章 基本数据类型 5存储 字符的存储占用1个字节。第 2章 基本数据类型 6应用例2-4 输出ASCII码表。ASCII码用整型数据描述,字符当然用字符类型描述。程序如下:/*程序2-4,输出ASCII码表*/#include stdio.hmain()int i;char ch;printf(ASCII码表n);for(i=0;i=255;i+)ch=i;printf(字符%c,A
13、SCII码%dn,ch,i);运行结果略。第 2章 基本数据类型 2.3.2 字符串数据字符串数据 多个字符构成的序列称为字符串,简称字串,是非数值问题处理的基础。1字串表示 用双引号作界定符,将字符序列引起表示字串数据,如chinaone、computer、$123.45、nabc、%d%f。2字串存储 字串数据的存储除存储构成字符串的字符序列本身外,还必须附加存储字符串的结束标志空操作字符0。存储一个字串的字节数等于字符个数加1,即字串长度再加1。注意字串a与字符a的区别:表示方式不同,存储也不同。第 2章 基本数据类型 2.4 逻辑类型逻辑类型 2.4.1 逻辑类型逻辑类型 C语言没有专
14、门提供逻辑类型,而是借用整型、字符型、实型来描述逻辑数据。C语言规定:0作为逻辑数据代表假,非0的数作为逻辑数据代表真。C语言同时规定:逻辑数据真为1,逻辑数据假为0。在一个式子里面要注意区分作为普通数据的数与作为逻辑数据的数。例如:23为假,表达式的值为0。第 2章 基本数据类型 2.4.2 逻辑运算逻辑运算 C语言中,逻辑类型数据是数,可以进行数的所有运算,如算术运算、关系运算。但逻辑类型数据更主要的是进行逻辑运算。基本的逻辑运算包括逻辑非运算“!”、逻辑与运算“&”和逻辑或运算“”三种。假定有逻辑数据p、q,逻辑运算的运算规则为:!p,得到与p相反的逻辑数据。p为真,!p为假;p为假,!
15、p为真。p&q,只有p、q同时为真时,运算结果为真;只要p、q有一个为假,运算结果为假。pq,只要p、q中有一个为真,运行结果为真;只有p、q同时为假,运算结果为假。第 2章 基本数据类型 例如:!(23)等于1。(23)&(32)等于0。(23)(32)等于1。(6%2=0)&(6%3=0)等于1。第 2章 基本数据类型 2.5 标准函数标准函数 标准函数完成一些比较复杂的运算和比较常用的操作。对标准函数应了解三个方面:函数的名称、函数参数及类型(相当于数学函数中的自变量)、函数值及类型。另外,还应了解函数包含在哪个库文件中以及函数的调用方法。函数调用通过函数名进行,以实际数据(实参)代替函
16、数中的参数(形参)。函数调用格式:函数名(实参)。数学函数包含在头文件math.h中,调用前需用预处理指令#include math.h指明。第 2章 基本数据类型 常用的数学函数如下(参数x为double或float、int型数,函数值为double型):(1)acos(x),求x的反余弦,x必须在11的范围内。(2)asin(x),求x的反正弦,x必须在11的范围内。(3)atan(x),求x的反正切。(4)cos(x),求x的余弦,x的单位必须为弧度。(5)exp(x),求ex的值。(6)fabs(x),求x的绝对值。第 2章 基本数据类型 (7)floor(x),求不大于x的最大整数。
17、(8)log(x),求lnx。(9)log10(x),求lgx。(10)pow(x、y),求xy。(11)sin(x),求x的正弦,x的单位必须为弧度。(12)sqrt(x),求x的平方根,x必须大于等于0。对于其它数学中常用的函数,应尽量利用已有的标准函数来处理。第 2章 基本数据类型 2.6 量的定义方法量的定义方法 常量是在程序运算过程中不变的量。(1)常量在程序中经常直接出现,如123、3.14159、a、computer,此时只要求它们符合相应类型数据的表示方法。相应于各种数据类型,有整型常量、浮点型常量、字符型常量及字符串常量。第 2章 基本数据类型 (2)常量定义指的是定义符号常
18、量,它用一个标识符来代表一个常量,通过宏定义预处理指令来实现。格式:#define 标识符 常量 由用户命名的标识符是符号常量名。符号常量名一般大写。一旦定义,在程序中凡是出现常量的地方均可用符号常量名来代替。对使用了符号常量的程序在编译前会以实际常量替代。第 2章 基本数据类型 例例 2 5 求圆的面积。/*程序2-5,求圆的面积*/define PI 3.14define R 2include stdio.hmain()float s;s=PI*R*R;printf(面积=%6.3f,s);运行结果:面积=12.560 第 2章 基本数据类型 2.6.2 变量定义变量定义 1.变量定义方法
19、变量定义方法格式:类型名 变量表;变量表是用逗号分开的变量名。例如:int i,j;/*定义i,j为整型变量*/float x,y;/*定义x,y为实型变量*/char ch;/*定义ch为字符型变量*/第 2章 基本数据类型 2变量的初始化 定义了变量,变量并没有值。可以在定义变量的同时给出变量初值,对其进行初始化。例如:int i=9,j=38;/*定义整型变量i,初值为9;整型变量j,初值为38*/float r=1.5;/*定义实型变量r,初值为1.5*/char answer=y;/*定义字符型变量answer,初值为字符y*/第 2章 基本数据类型 3数据分析方法 进行程序设计,一
20、方面是对数据进行描述,另一方面是对操作进行描述。对于一个问题,到底需要定义哪些量,定义什么样类型的量,必须经过数据分析。数据分析根据求解的问题选择适当的类型来描述数据,明确求解问题用到的量的名字及类型。对于任何问题,我们都可将数据分成三大类:输入数据、中间数据和输出数据。输入数据反应程序运行的数据源;中间数据是程序运行的中间结果;输出数据是程序运行的结果,反应编程的目的。相应地,程序中用输入量来描述输入数据,用中间量来描述中间数据,用输出量或称结果变量来描述输出数据。第 2章 基本数据类型 对于一个问题,在开始设计程序时输入量、输出量一般是明确的,中间量往往不能一下子全部确定,可在程序的编制过
21、程中根据需要动态追加。数据分析一般采用如下格式:数据分析:输入量:中间量:输出量:第 2章 基本数据类型 例2-6 求三角形的面积与周长问题的数据分析。输入数据是三角形三边,中间数据是半周长,输出数据是面积与周长。本问题的数据分析如下:数据分析:输入量:三边s1、s2、s3,float 中间量:半周长hl,float输出量:面积s、周长l,float 第 2章 基本数据类型 相应的变量定义如下:float s1,s2,s3;/*三角形三边*/float hl;/*半周长*/float l,s;/*周长,面积*/一般将作用相同的变量放在一起定义,以增加程序的可读性。第 2章 基本数据类型 习习
22、题题 二二 1.从类型名称、取值、主要运算三个方面综述基本整型。2.从类型名称、取值、主要运算三个方面综述单精度实型。3.从类型名称、取值、主要运算三个方面综述字符型。4.字符数据与字符串数据有什么区别?5.C语言中逻辑类型数据如何描述?第 2章 基本数据类型 6.下列变量定义中,哪些地方不正确?(1)a,b,c:int;(2)float x;y;z;(3)char c1,c2;int c1;(4)int i,y,long k;(5)n1,n2,n3,long;(6)int char,zhang,li;(7)int i=j=k=1;(8)boolean b1,b2;第 2章 基本数据类型 7.
23、取一个适当的名字描述下列数据,并考虑用哪种数据类型较好。(1)一个人去年的年龄。(2)一个人的体重。(3)考试的分数。(4)今天的温度。(5)地球到月亮的距离。(6)一天的开支。第 2章 基本数据类型 8.给出下列问题的数据分析。(1)求两个整数的和、积与平均值。(2)求两个实数的和、积与平均值。(3)求长方形的面积和周长。(4)求正方形的面积和周长。(5)解方程ax+b=0。(6)求一元二次方程ax2+bx+c=0的两个实根。第 2章 基本数据类型 9.给出上题中相应的变量定义。10.编写程序,求两个整数的和、积与平均值。11.编写程序,求两个实数的和、积与平均值。12.编写程序,求正方形的面积和周长。13.编写程序,求长方形的面积和周长。14.编写程序,解方程ax+b=0。