《第二章数据类型及其输入输出精选PPT.ppt》由会员分享,可在线阅读,更多相关《第二章数据类型及其输入输出精选PPT.ppt(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章数据类型及其输入输出第二章数据类型及其输入输出第1页,本讲稿共46页本节重点本节重点n数据类型数据类型n常量与变量常量与变量第2页,本讲稿共46页引入引入数据类型数据类型1 1、数据是程序处理的基本对象。、数据是程序处理的基本对象。2 2、程序中数据分为变量或常量。、程序中数据分为变量或常量。3 3、每个变量或常量都有确定的数据类型。、每个变量或常量都有确定的数据类型。4 4、每种数据类型都有确定的存储长度、取值范围及允许的操作。、每种数据类型都有确定的存储长度、取值范围及允许的操作。5 5、程序中所有数据必须指定其数据类型。、程序中所有数据必须指定其数据类型。第3页,本讲稿共46页常量
2、常量常量:是指常数或其值不能被改变的量。常量:是指常数或其值不能被改变的量。分为直接常量和符号常量分为直接常量和符号常量1、直接常量:、直接常量:如:如:12,123.5,1.23E7,a,8,A,“hello”,“a”第4页,本讲稿共46页常量的类型常量的类型、整型常量、整型常量有三种表示方法:有三种表示方法:十进制整数十进制整数123,-784八进制整数八进制整数 0123=十六进制整数十六进制整数 )83()123(108=)291()123(12301016=x常量分为:整型常量、实型常量、字符常量、字符串常量常量分为:整型常量、实型常量、字符常量、字符串常量第5页,本讲稿共46页、实
3、型常量,也称浮点数。、实型常量,也称浮点数。两种表示方法:两种表示方法:()()十进制小数形式十进制小数形式 由数字和小数点组成(必须有小数点)由数字和小数点组成(必须有小数点)1.123,3.1415;()()指数形式指数形式 123e5,123E5都表示都表示123105 但是但是 1.23E7 为规范化的指数形式。输出指数形式的数据时,按规范化的指为规范化的指数形式。输出指数形式的数据时,按规范化的指数形式输出。数形式输出。第6页,本讲稿共46页3、字符常量(、字符常量(Character constants)由一对由一对单引号单引号括起的单个字符,称为字符常量。括起的单个字符,称为字符
4、常量。如:如:a,9,+在内存中,字符数据并不是把字符本身放到内存单元中,而是将该字符的相应ASCII码放到存储单元中。第7页,本讲稿共46页A6501000001a9701100001ASCII二进制如如:有两个字符型数据有两个字符型数据 A 和和a第8页,本讲稿共46页4、字符串常量(、字符串常量(String Literals)由一对由一对双引号双引号括起的字符序列称为字符串常量括起的字符序列称为字符串常量,例如:例如:“How do you do?”“china”C规定规定以字符以字符0作为字符串结束的标志作为字符串结束的标志。在内存中所占字节数为:在内存中所占字节数为:实际字符个数实
5、际字符个数+1 如字符串常量如字符串常量“china”在内存中存储形式如下:在内存中存储形式如下:chin0a第9页,本讲稿共46页数据类型数据类型基本数据类型基本数据类型构造类型构造类型其它类型其它类型整型整型 int字符型字符型 char实型实型枚举类型枚举类型单精度型单精度型float双精度型双精度型double数数 组组结构体结构体共用体共用体指针类型指针类型空空 类类 型型第10页,本讲稿共46页变量变量1、定义:其值可以改变的量称为变量。、定义:其值可以改变的量称为变量。变量必须先定义后使用变量必须先定义后使用。2、变量的定义、赋值(初始化)、变量的定义、赋值(初始化);(中间记得
6、留空格)(中间记得留空格)int sum;char a,b;float r,s,l;double f,n,c;第11页,本讲稿共46页3、对变量名的要求。、对变量名的要求。变量名要做到变量名要做到“见名知意见名知意”,不要使用简单的字符作变量名,以增加程序,不要使用简单的字符作变量名,以增加程序的可读性。的可读性。变量名一般用变量名一般用小写字母小写字母表示,长度与所用系统有关表示,长度与所用系统有关(8,c 合法标识符合法标识符非法标识符非法标识符第12页,本讲稿共46页变量的类型变量的类型变量分为:整型变量、实型变量、字符型变量变量分为:整型变量、实型变量、字符型变量1、整型变量、整型变量
7、 基本类型:用基本类型:用int 标识,在内存中占标识,在内存中占2个字节。个字节。例如:例如:int a,b;int f;修饰符修饰符 unsigned(无符号数)无符号数)signed(有符号数)有符号数)第13页,本讲稿共46页2、实型变量、实型变量 类型类型 (内存中字节数内存中字节数)有效数字有效数字 float(4字节字节)67位位double (8字节字节)1516位位long double (16字节字节)1819位位定义方法:定义方法:(单精度)(单精度)float 变量名变量名(双精度)(双精度)double 变量名变量名 例如:float area;double t;第1
8、4页,本讲稿共46页3、字符型变量、字符型变量 定义方法:定义方法:char 变量名列表变量名列表 char c1,c2,c3;取值范围取值范围 ASCII码字符集中的字符。码字符集中的字符。char c1,c2;c1=e;c2=3;例如:字符变量的赋值及运算例如:字符变量的赋值及运算 注意:注意:区别:区别:a “a”第15页,本讲稿共46页定义了变量后定义了变量后,变量并没有值,需要给部分变量赋值。变量并没有值,需要给部分变量赋值。赋值的方法:(1)通过赋值号 =例如例如:int i;i9;/*先定义整型变量先定义整型变量i,然后赋初值然后赋初值9*/float r=1.5;/*定义实型变
9、量定义实型变量r的同时,赋其初值的同时,赋其初值1.5*/char answer=y;也可以使被定义的变量的一部分赋初值。也可以使被定义的变量的一部分赋初值。如如 int a,b,c=5;表示定义表示定义a,b,c为整型变量,并且对为整型变量,并且对c进行初始化,使进行初始化,使c值为值为5。注意:注意:如对几个变量同时赋初值为如对几个变量同时赋初值为5,应写成,应写成 int a=5,b=5,c=5;或者或者 int a,b,c;a=b=c=5;不能写成:不能写成:int a=b=c=5;变量赋值变量赋值第16页,本讲稿共46页(2)通过输入函数通过输入函数scanf()格式:格式:scan
10、f(“格式控制字符串格式控制字符串”,输入项列表输入项列表);功能:将输入屏幕上的数一一对应的赋给输入项列表中的变量。功能:将输入屏幕上的数一一对应的赋给输入项列表中的变量。例例1:#include main()int a,b,c,d;float t;char ch;scanf(%d%d,&a,&b);scanf(%d%d,&c,&d);scanf(%f,%c,&t,&ch);用VC演示第17页,本讲稿共46页#includemain()int a,b;char ch1,ch2;float f,r;scanf(“%d%d”,&a,&b);scanf(“%c%c”,&ch1,&ch2);scan
11、f(“%f,%f”,&f,&r);输入时:输入时:125 785 a b 23.456,612.97例例2:第18页,本讲稿共46页数据输出数据输出、printf()函数函数格式:格式:printf(“格式控制字符串格式控制字符串”,输出项列表输出项列表);功能:将输出项按给定的控制格式输出到输出屏幕上。功能:将输出项按给定的控制格式输出到输出屏幕上。第19页,本讲稿共46页#includemain()char ch=a;int a=65;float x=123.456;printf(”%c,%d,%3cn”,ch,ch,ch);printf(”%c%d%3dn”,a,a,a);printf(
12、”%f,%-7.2f,%10.4fn”,x,x,x);输出结果是输出结果是:a,97,_ _ a A 65 _ 65 123.456001,123.46_,_ _ 123.4560例例1:第20页,本讲稿共46页本节重点本节重点n掌握运算符的使用掌握运算符的使用n确定表达式的类型、值确定表达式的类型、值n不同类型的数据的转换不同类型的数据的转换第21页,本讲稿共46页运算符运算符一、运算符:一、运算符:能够完成某种操作(运算)的符号。能够完成某种操作(运算)的符号。二、根据运算符的运算对象(操作数)的多少,运算符可分为:二、根据运算符的运算对象(操作数)的多少,运算符可分为:单目(一元)运算符
13、单目(一元)运算符 i+-n 双目(二元)运算符双目(二元)运算符 a+b d/e 三目(三元)运算符三目(三元)运算符 xy?x+3:y*9(条件运算符)(条件运算符)第22页,本讲稿共46页优先级优先级运算符运算符操作数操作数结合性结合性1()-.左左右右2!-+-&*sizeof1右右左左3 */%2左左右右4+-2左左右右5 2左左右右6 =2左左右右7=!=2左左右右8&2左左右右9 2左左右右10|2左左右右11&2左左右右12|2左左右右13?:3右右左左14=*=/=+=2右右左左15,2左左右右第23页,本讲稿共46页算术运算符算术运算符 1、分类、分类n双目运算符双目运算符
14、 +加加 -减减 *乘乘 /除除%求余求余n单目运算符单目运算符 -负号运算负号运算 +自增自增 -自减自减双目运算符双目运算符:“/”如果是两个整型数相除,取整;如有一个为实数时,其意义就是实数除,结果为如果是两个整型数相除,取整;如有一个为实数时,其意义就是实数除,结果为double型。型。5/2=2 5/2.0=2.5 “%”取余数,只能对整数取余数,不能对浮点数取余数。取余数,只能对整数取余数,不能对浮点数取余数。运算结果的符号运算结果的符号与左操作数相同。与左操作数相同。5%2=1 -35%8=-3 35%-8=3第24页,本讲稿共46页2、自增操作符和自减操作符、自增操作符和自减操
15、作符格式格式:+i,i+-i,i-作用作用:是使自变量:是使自变量i的值加的值加1或减或减1,相当于,相当于i=i+1或或i=i-1。前置前置自增或前置自减操作:表示先修改操作数使之增自增或前置自减操作:表示先修改操作数使之增1或减或减1,然后取修改后,然后取修改后的操作数的值作为表达式的值。的操作数的值作为表达式的值。后置后置自增或后置自减操作:表示在表达式中先取操作数的值,自增或后置自减操作:表示在表达式中先取操作数的值,然后再将然后再将操作数值增操作数值增1或减或减1。例如:例如:int i=3,j;j=i+;j的值为的值为3(首先将(首先将i的原值赋给的原值赋给j,然后,然后i自身再加
16、自身再加1)j=+i;j的值为的值为4(i自身先加自身先加1,然后再将加,然后再将加1后的值赋给后的值赋给j)第25页,本讲稿共46页main()int i,j,k;i=3;j=i+;k=+i;printf(“i=%d,j=%d,k=%dn”,i,j,k);范例:范例:输出结果输出结果:i=5,j=3,k=5第26页,本讲稿共46页3、在表达式中如果有、在表达式中如果有2个以上的个以上的“+”或或“-”连写在一起,则编译器首先识别前面两个连写在一起,则编译器首先识别前面两个+或或-为自增或自减操作符。例如:为自增或自减操作符。例如:在使用自增或自减运算符时注意如下几个问题在使用自增或自减运算符
17、时注意如下几个问题:1、自加或自减运算只能用于变量,不能用于常量或表达式;、自加或自减运算只能用于变量,不能用于常量或表达式;错误:错误:25+(i+j)+2 2、-i+,只能理解为只能理解为-(i+)。因为因为(-i)+为表达式,表达式是不能自加自减的。为表达式,表达式是不能自加自减的。i3;j-i+;printf(“%d”,j);输出结果应为输出结果应为-3,而不是是,而不是是-4。int a=1,b=5,c;c=a+b;c=a+b;c=a+b;正确:正确:c=6错误:错误:+不是双目运算符不是双目运算符正确:正确:a+b第27页,本讲稿共46页赋值运算符和赋值表达式赋值运算符和赋值表达式
18、1、赋值运算符、赋值运算符:=使用方法使用方法:变量名表达式;变量名表达式;赋赋值值运运算算时时先先计计算算右右边边表表达达式式的的值值,然然后后将将右右边边表表达达式式的的值值赋赋给给左左边边变变量量,并并以以此值作为整个赋值表达式的值。此值作为整个赋值表达式的值。(1)赋值运算的优先级为第)赋值运算的优先级为第14级级,次低。次低。如:如:int i,j;j=6;i=3+5%2;/*先计算先计算3+5%2,得到得到4,然后将然后将4 赋给赋给i*/。第28页,本讲稿共46页(2)理解以下两赋值表达式的含义:)理解以下两赋值表达式的含义:y5;n5;xy;nn1;第29页,本讲稿共46页2、
19、复合赋值运算、复合赋值运算 算术复合赋值运算符算术复合赋值运算符:+=、=、*=、/=、%=位复合赋值运算符位复合赋值运算符:&=、|=、=、=、=一般形式一般形式:变量变量=表达式;表达式;等价于等价于:变量变量=变量变量表达式;表达式;代表任一双目算术运算符或位运算符。代表任一双目算术运算符或位运算符。复合赋值运算先进行所带运算复合赋值运算先进行所带运算,再进行赋值运算。再进行赋值运算。复合赋值运算复合赋值运算的优先级同赋值运算。的优先级同赋值运算。第30页,本讲稿共46页例如:例如:(1)int a=3;a+=2;等价于等价于 a=a+2(2)float x=1.2,y=2.1;y*=x
20、+3.4;等价于等价于 y=y*(x+3.4)(3)int a=1,b=2;b/=a+=1;等价于等价于 b=b/(a=a+1)右结合右结合第31页,本讲稿共46页关系运算符和关系表达式关系运算符和关系表达式一、关系运算符有:一、关系运算符有:、=、=、!=、=的优先级相同的优先级相同,=、!=的优先级相同,的优先级相同,前者的优先前者的优先级高于后者。级高于后者。二、关系表达式的运算结果是逻辑量二、关系表达式的运算结果是逻辑量 24+(53)c=78三、三、自左向右自左向右结合。结合。假设假设a5,b3,c2 表达式表达式abc的值为的值为0四、操作数也可以是字符型数据四、操作数也可以是字符
21、型数据 如:如:af第32页,本讲稿共46页 条件运算符和条件表达式条件运算符和条件表达式一、条件运算符的语法形式:一、条件运算符的语法形式:?:解释为:解释为:?:例如:例如:x=a b?a:cd?c:d 相当于相当于ab?a:(cd?c:d)第33页,本讲稿共46页includemain()int x;scanf(%d,&x);x0?printf(%s,正数正数):printf(%s,负数负数);例例:判断整数的正负。判断整数的正负。第34页,本讲稿共46页逗号运算符和逗号表达式逗号运算符和逗号表达式逗号运算的优先级最低逗号运算的优先级最低,结合结合自左向右自左向右。逗号表达式的更一般使用
22、形式为逗号表达式的更一般使用形式为:表达式表达式 1,表达式表达式 2,表达式表达式 3,表达式表达式n;先计算表达式先计算表达式 1,再计算表达式再计算表达式 2,再计算表达式再计算表达式 3,再计算表达再计算表达式式n的值的值,并以此作为整个表达式的值。并以此作为整个表达式的值。如:表达式如:表达式x=a=3,6*x,6*a,a+x的值为的值为 6 。逗号运算又称顺序求值运算。逗号运算又称顺序求值运算。第35页,本讲稿共46页main()int i,j,k;i=1,j=2,k=3;printf(“%d%d%dn”,i,j,k);main()int i,j,k;i=1;j=2;k=3;pri
23、ntf(“%d%d%dn”,i,j,k);并不是任何地方出现的逗号都是逗号运算符,并不是任何地方出现的逗号都是逗号运算符,例如:例如:printf(“%d%d%dn”,i,j,k);(是参数分隔符)是参数分隔符)第36页,本讲稿共46页求字节数运算求字节数运算 运算符运算符:sizeof(数据类型标识符数据类型标识符)或或 sizeof(表达式表达式)求求字字节节数数运运算算是是单单目目运运算算,操操作作数数可可以以是是类类型型名名,也也可可以以是是变变量量、表达式表达式,用以求得相应类型或数据所占的字节数。用以求得相应类型或数据所占的字节数。此运算的优先级与取地址运算优先级相同。此运算的优先
24、级与取地址运算优先级相同。例如:例如:sizeof(float)值为值为4,单精度类型占,单精度类型占4个字节个字节 sizeof(2*3)值为值为2,算术表达式,算术表达式2*3是是int型型第37页,本讲稿共46页数据的类型转换数据的类型转换一、系统自动进行的类型转化一、系统自动进行的类型转化由系统自动完成类型转换由系统自动完成类型转换,转换的规则如下:转换的规则如下:int unsigned long double short,char float纵纵向向箭箭头头方方向向表表示示必必定定要要进进行行的的转转换换,short型型、char型型数数据据必必定定先先转转换换成成int型型,fl
25、oat型数据必定先转换成型数据必定先转换成double型型,再进行运算。再进行运算。横横向向箭箭头头方方向向表表示示运运算算对对象象为为不不同同类类型型时时的的转转换换方方向向。由由低低向向高高转转换换,int型型最最低低,double型最高。型最高。第38页,本讲稿共46页二、赋值时的类型转换二、赋值时的类型转换 (1)将实型数据赋给整型变量时将实型数据赋给整型变量时,舍弃实数的小数部分。舍弃实数的小数部分。如:如:int i;i=1.23;/*结果结果i 的值为的值为1*/(2)将将整整型型数数据据赋赋给给单单、双双精精度度型型变变量量时时,数数值值大大小小不不变变,但但以以浮浮点点形形式
26、存储到变量中。式存储到变量中。第39页,本讲稿共46页三、强制类型转换三、强制类型转换强制类型转换通过类型转换运算进行。强制类型转换通过类型转换运算进行。格式格式:(类型名)(表达式)(类型名)(表达式)功能:功能:将表达式的类型强制转换成类型名指定的类型。将表达式的类型强制转换成类型名指定的类型。如如:float x=5.2,y=6.3;int z;z=(int)(x+y);(int)(x+y)将表达式将表达式x+y的值强制转换成整型的值强制转换成整型 强强制制类类型型转转换换在在将将高高类类型型转转换换为为低低类类型型时时,数数据据精精度度受受损损,是是一一种种不不安安全全的的转换。转换。
27、强制类型转换是暂时性的强制类型转换是暂时性的,一次性的一次性的,并不永久改变所转换表达式的类型。并不永久改变所转换表达式的类型。如如:int a=7;double b;b=(double)a+5;(double)a为双精度为双精度,a依然为整型量。依然为整型量。第40页,本讲稿共46页表达式表达式一、一、C表达式:表达式:由运算符和由运算符和运算对象运算对象构成的式子。构成的式子。运算对象运算对象可以是常量、变量、函数或可以是常量、变量、函数或表达式表达式。二、二、表达式的表达式的书写原则书写原则 (1)C语言的表达式只能采用线性的形式书写。语言的表达式只能采用线性的形式书写。例如例如:应写成
28、应写成1/3+i+j*j*j。应写成(应写成(a+b)/(c+d)*e+f。第41页,本讲稿共46页(2)C语语言言的的表表达达式式只只能能使使用用C语语言言中中合合法法的的运运算算符符和和操操作作数数,对对有有些些操操作作必须调用库函数必须调用库函数完成完成,而且运算符不能省略。例如而且运算符不能省略。例如:r2应写成应写成3.14159*r*r。应写成应写成0.5*a*b*sin(a)。|xy|应写成应写成fabs(xy)。y+2X 应写成应写成y+pow(2,x)。第42页,本讲稿共46页三、表达式的三、表达式的分类分类 C语语言言表表达达式式种种类类很很多多,有有多多种种分分类类方方法
29、法。我我们们一一般般依依据据运运算算的的特特征征将表达式分为将表达式分为:算术表达式算术表达式,如如a+b*2.0-3.0/5.0。关系表达式关系表达式,如如x=y,关系表达式可以认为是逻辑表达式的特殊情况。关系表达式可以认为是逻辑表达式的特殊情况。逻辑表达式逻辑表达式,如(如(x=2)&(xb)?a:b。逗号表达式逗号表达式,如如a=2,b=a*a,c=sqrt(b)。)。第43页,本讲稿共46页四、表达式值的四、表达式值的数据类型数据类型(1)每个表达式都有一个确定的值,因而有确定的数据类型。)每个表达式都有一个确定的值,因而有确定的数据类型。(2)表达式的分类和数据类型取决于最后执行的运算符,)表达式的分类和数据类型取决于最后执行的运算符,如:如:34.5+(76)为算术表达式,类型是为算术表达式,类型是double型,值型,值35.5 34.5+76 为关系表达式,类型是为关系表达式,类型是int型,值型,值1第44页,本讲稿共46页作业作业n课本课本40页习题页习题n补充:课本补充:课本21页转义字符的使用及其含义。页转义字符的使用及其含义。第45页,本讲稿共46页第46页,本讲稿共46页
限制150内