《基本数据类型与输入输出.ppt》由会员分享,可在线阅读,更多相关《基本数据类型与输入输出.ppt(52页珍藏版)》请在三一办公上搜索。
1、第二章 基本数据类型与输入输出,字符集与保留字 基本数据类型 变量与常量 printf 与 scanf I/O流的控制,一.字符集与保留字,+语言字符集组成包括:字母数字空格:空格符、制表符、回车符标点和特殊字符说明:在字符常量、字符串常量和注释中还可以使用汉字或其它可表示的图形符号。,C+保留字包括:ANSI C保留字(32个)ANSI C+扩展保留字(29个)C+开发环境(VC、BC)扩充定义保留字不能重新定义保留字,也不能把保留字定义为一般的标识符。,二.基本数据类型,程序中的每个变量或常量按所持数值的性质属于一个特定的数据类型。引入数据类型的作用:限制取值的范围规定了在特定值集上的运算
2、类型不同类型的变量对应了不同大小的内存空间,什么是数据类型,数据类型是指(1)一定的数据在计算机内部的表示方式(2)该数据所表示的值的集合(3)在该数据上的一系列操作C/C+数据类型分为:基本数据类型 int char bool float double 自定义数据类型 class enum union struct,C+数据类型分为两大类:基本数据类型:整型、字符型、浮点型非基本数据类型:数组 结构 联合 枚举 指针 类(Class)空类型(Void),数制,十进制数十进制由09十个数字组成,运算规则是逢十进一。二进制数二进制的基数是2,所使用的数字只有:0和1。运算规 则是逢二进一。八进制
3、数八进制的基数是8,所使用的数字为0、1、2、3、4、5、6、7。其运算规则是逢八进一。十六进制数十六进制的基数是16,它使用的数字字符为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。其中AF分别代表十进制数的1015。其运算规则是逢十六进一。,整型(int Types),二进制补码整数在计算机内部用补码表示;由于计算机内部表示数的字节单位都是定长的,因此一个二进制数用计算机表示时,位数不足时,高位部分要补足若干个零。正整数的补码表示:就是直接转为为二进制数一个十进制负整数,表示成二进制补码形式的整数时,该负整数的对应正整数先转换为二进制,然后“取补”,规则是“取反加一”。,
4、整型(int Types)5-2,例如:用8位长度的二进制形式表示15和-15:15=1111=00001111-15=-1111=-00001111=11110001,整型(int Types)5-3,整型又可以分为:基本型:int短整型:short int或short长整型:long int或long无符号:无符号型的整数必须是正数或零。无符号型又可细分为:无符号整型:unsigned int 无符号短整型:unsigned short 无符号长整型:unsigned long,整型(int Types)5-4,整型数表示范围编译器的机器字长总是与整型的位长有关如:32位编译器的整型数一定
5、为32位长整型字面值分八进制,十进制和十六进制不同表示如:0123/8进制 0 x12af3/16进制 12345/10进制 超过表示范围的整型数其值不可预料或者出错如:错,整型(int Types)5-5,整数算术运算整型数的操作:+,-,*,/,%,=,!,=,=,=,&,|,&=,|=,&,|,&=,|=,!=,=,+=,-=,*=,/=,%=,+,-,,,?:+,-,*,/,%这五种操作是整数的算术运算。11/(-5)=-2-11/(-5)=211%(-5)=1-11%(-5)=-1,位运算操作符,2=282=328&2=08|2=1082=10,字符型 2-1,表示范围:有符号:-1
6、28127(signed char)无符号:0255(unsigned char)输出形式与整型数不同:int a=65;char b=65;couta“n”;coutb“n”;结果为:65 A,字符型 2-2,字符型ASCII码有128个字符,其中ASCII值从031和127为不可见字符,即控制字符。字符必须用单引号引起来,如a,A;单引号中字符只能有一个。另外有一种特殊形式的字符,即以”(转义符)打头的格式字符,如n表示换行。字符型是针对处理ASCII字符而设的。字符型在表示方式和操作上与整数吻合,在表示范围上是整数的子集,它由一个字节组成。,枚举型,自定义整数区间,甚至列举单个整数值 e
7、num Week Mon,Tue,Wed,Thu,Fri,Sat,Sun;最大特点是可以给每个值指定一个在程序中直接使用的标记(枚举符)编程中将其当作整数常量用如:int a=7;if(a=Sun)cout“Sundayn”;,布尔型 2-1,表示范围仅含整数和1,也可以表示成true和false,相当于:enum bool false,true;因为条件表达式、逻辑运算的结果都是或,所以,相当大数量的表达式的值与布尔型对应,bool a=3;/a为true,执行完该该语句后a的值是1bool b=1;/b为truebool c=a+b;/c为truebool d=a-b;/d为false,布
8、尔型 2-2,bool型的输出形式可以选择,默认为整数1和0,如果要输出true和false,则可以用输出控制符:coutboolalphadendl;bool类型仅适用于C+,C语言中没有该类型,浮点型 3-1,在十进制数中,通常一个浮点数可以用科学计数法表示,如-306.5写成 其中指数3为阶或阶码,之所以称之为浮点数,因为它也可以表示成 或,小数点可以左右“浮动”。在计算机内部,浮点数是以二进制表示的。浮点数的整数部分转化,采用“除2取余法”,小数部分的转换采用“乘2取整法”。例如 0.8125=0.1102(二进制),浮点型 3-2,有的浮点数在转换中,二进制小数的某些位会周而复始地重
9、复,以至无穷。由于计算机的表示是有限的,所以在计算机内只能截取到某个精度。例如.浮点型分为单精度(32位)和双精度(64位)float f1=19.2f float f2=0.192e+02/将double型转换为float型 double d1=19.2浮点数的比较不能用等于,最好用某个范围来比较,例如if(d=0)应改成 if(d-0.0001&d 0.0001)/为什么?,浮点型 3-3,浮点数的内部表示:国际标准IEEE754浮点表示法,它与编程所用的浮点数字面量以及输出的十进制浮点数之间有一个转换关系浮点数的表示范围:32位浮点数3.41038 64位浮点数1.810308浮点数的操
10、作:常规的加、减、乘、除等操作,三.变量与常量,对于变量而言,存在两个有用的数值:变量所表示的数据值存放数据值的内存地址变量的命名规则:只能由字母、数字和下划线组成第一个字符只能是字母或下划线不能与C+关键字重名 区分大小写,变量的定义例:int month,day,year;unsigned long distance;说明:该例仅指定了几个变量的名字和类型,但并没有给出它们的初始值(即未初始化),但未初始化的变量并不意味着这个变量中没有数值。,typedef,Typedef 可以用来定义各种类型名,但没有创造新的数据类型,且不能用来定义变量名。当不同源文件中用到同一类型数据(如结构、联合体
11、等类型数据)时,常用typedef定义一些数据类型,把它们单独放在一个头文件中。使用typedef有利于程序的通用与移植。,常 量,C+中常量类型:整型常量实型常量字符常量字符串常量枚举常量,整型常量:三种表示法 十进制 如 200,-450 八进制(以0开头)如024 十六进制(以0X或0 x开头)如0X14,0 x46注意:C+中,八进制和十六进制只能表示无符号数。整型变量常以跟在其后的字母L或l来标识一个long型的数值,同理,Unsigned型可用U或u来标识。,实型常量 二种表示方法:定点数形式:如0.454,0.0指数形式(科学计数法):3.1415e4,3.1415e4注意:C+
12、中,要表示float型实数,必须在实数后加上字母F或f。如4.356F,34.78f如果实数后没有任何字母,则默认为double型。,字符常量 两种表示形式:对可被输出的字符常量,用单引号括起。如A、8对不可打印输出的字符、单引号和反斜杠等字符,可用转义字符序列表示法。如换行 n响铃 a反斜杠,反斜杠可以和八进制、十六进制结合起来使用,表示相应于该数值的ASCII码。如06、x07在将一个字符常量赋值给字符变量时,实际上是将该字符的相应ASCII码值存入到内存单元中。C+中,字符数据和整型数据之间可以通用,但注意两者在输出中的表示是不同的。如:int p=b;char q=97;cout pe
13、nd1;coutqend1;,字符串常量 由双引号括起的零个或多个字符构成。如“”、“a”、“string”字符串中非输出字符由它们的转义字符序列表示。如“nCC t options t file n”一个字符串常量可在连续的几行中书写,多行间用反斜杠连接。如“a multi-line string literal”,C+中,将字符串常量作为字符数组来处理,且编译器将自动在尾部添加一个用于标识字符串终结的null字符(0)。不能将单个字符的字符串常量赋给字符变量。如 char c;c=“a”/error,枚举常量 是一种用于表示各个枚举值的符号常量。枚举常量通过建立枚举类型来定义。如 enum
14、 COLORRED,BLUE,GREEN在内存中,枚举常量对应表示为一个整型数,第一个枚举值的默认值是0。但不能将整数赋给枚举型变量。如 COLOR brush;brush=RED brush=0/error,常量定义,引入常量的目的是提高程序的可读性和可维护性。常量的定义方法:const+类型名+常量名例:const int bufSize=512;由于一个const常量一经定义后其值就不可改变,故常量定义时必须初始化。如:const double pi;/error,另一种定义常量的方法 宏定义法#define bufSize 512宏定义只是作简单的置换,不作语法检查,所以宏名不是一个具
15、有类型属性的常量名。注意两种常量定义方法的区别。,四.printf 与 scanf,printf 与 scanf 是C语言的两个标准库函数,用于实现数据的格式化输入和输出。Printf 函数一般形式:printf(格式控制字符串,输出表列)其中格式控制字符串用于指定输出格式。格式控制串含格式说明和普通字符。格式字符串是以%开头的各种格式字符,普通字符原样输出,在显示中起提示作用输出表列中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应。,格式字符,Scanf 函数,一般形式:scanf(“格式控制字符串”,地址表列)格式控制字符串的作用与printf函数相同,但不能显示普通
16、字符。地址表列中给出各变量的地址。地址是由地址运算符“故输入时应为:5,6,7,五.I/O流的控制,I/O流概念除了支持C的输入/输出系统外,C+还建立了自己的输入/输出系统。C+的输入/输出系统是对流的操作,也就是将数据流向流对象,或从流对象流出数据。流是从源到矢的数据流的抽象引用,它是描述数据流的一种方式。在底层,I/O流可看成是输入或输出的一系列字节。,I/O的书写格式,输出当需要向屏幕上输出数据时,可用插入操作符“#include void main()cout“The size of length is:t”;coutsizeof(“length”);cout“n”,插入符可以缩写在
17、一条语句中,如上例可以改写如下:#include#include void main()cout“The size of“ulyess”is:t”sizeof(“ulyess”)“n”;另一个有用的“运算符”是endl(endline),endl 将一个换行符插入到cout输出流中。例:cout“output string n”endl,输 入当程序需要从键盘输入数据时,可使用抽取操作符“”从cin输入流对象中取出字符。例:#include void main()int line,col;cin line;cin col;抽取操作符同样可以连续和分行书写。对于基本数据类型,cin会自动进行类型
18、处理。,使用控制符,在很多情况下,对数据的输入/输出格式需要进行控制。C+中提供了一种被称为控制符的格式控制方式。C+中共提供了13个标准控制符,定义在文件iomanip.h中。,控制浮点数值显示,setprecision(n)的作用 控制显示数字个数在用浮点表示的输出中,它表示有效位数。在用定点表示的输出中,它表示小数位数。在用指数形式的输出中,它表示小数位数。若setprecision(n)与setflags(ios:fixed)合用,可以控制小数点右边的 数字个数。若setprecision(n)与setflags(ios:scientific)合用,可以控制指数表示法的小数位数。,例:
19、#include#include void main()double amount=10.0/6;cout amountendl;cout setprecision(4)amountendl;cout setiosflags(ios:fixed)setprecision(6);cout amountendl;cout setiosflags(ios:scientific)amountendl;output:1.66667 1.667 1.666667 1.666667e+00,输出8进制和16进制,通过使用三个控制符可分别对应不同进制数的显示。dec 10进制oct 8进制hex 16进制通过
20、使用控制符setiosflags(ios:uppercase)可以控制16进制数大写输出。,例:#include#include void main()int count=11011;cout“Decimal:”deccountendl“Hexadecimal:”hex setiosflags(ios:uppercase)countendl;“Octal:”octcountendl;Output:Decimal:11011 Hexadecimal:2B03 Octal:25403,设置值的输出宽度和填充字符,使用控制符setw(n)可以控制数值输出宽度如果一个值所含字符数多于setw(n)确定
21、的字符数,则按实际宽度输出。反之,则在字符前填充空格符。setw(n)仅对下一个数值输出产生影响。使用控制符setfill可以确定填充字符为非空格字符.,例:#include#include void main()coutsetw(10)100200endl;coutsetfill(*)setw(10)100endl;cout setw(20)200endl;Output:100200*100*200,左右对齐输出,使用控制符setiosflags可以控制输出对齐setiosflags(ios:left)左对齐显示内容setiosflags(ios:right)右对齐显示内容例 cout setiosflags(ios:right)setw(10)10 setw(1)20endl;cout setiosflags(ios:left)setw(10)10 setw(1)20endl;Output:102010 20,强制显示小数点和符号,使用ios:showpoint标志可以强制显示小数点使用ios:showpos标志可以强制在正数前显示正号例 coutsetiosflags(ios:showpoint)10.0/5 endl;coutsetiosflags(ios:showpos)setw(5)10 setw(5)-10endl;Output:2.00000+10-10,