基本数据类型与输入输出_第1页
基本数据类型与输入输出_第2页
基本数据类型与输入输出_第3页
基本数据类型与输入输出_第4页
基本数据类型与输入输出_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第3章章 基本数据类型与输入输出基本数据类型与输入输出 徐遵义徐遵义 , C+程序设计2字符集与保留字字符集与保留字基本数据类型基本数据类型变量定义变量定义常量常量I/OI/O流控制流控制printfprintf与与scanfscanf小结及作业小结及作业C+程序设计3字符集字符集字符是指计算机中使用的字母、数字、单词和符号字符是指计算机中使用的字母、数字、单词和符号用于构造有意义语句的一组字符,这也是任何一种语言用于构造有意义语句的一组字符,这也是任何一种语言的特点的特点C+C+程序的字符集程序的字符集26 个大、小写字母:个大、小写字母:az,A Z10 数字数字:09其他符号:其他符号

2、:+ - * / % & | ( ) “ , . ? : ; 标字符:由字符集元素组成的一串字符,分为系统预定标字符:由字符集元素组成的一串字符,分为系统预定义标识符义标识符( (如预编译指令如预编译指令) )和用户自定义标识符和用户自定义标识符( (如变量如变量名,函数名名,函数名) )C+程序设计4保留字保留字又称关键字又称关键字(Keyword)(Keyword),是预先定义好的标识符,对,是预先定义好的标识符,对C+C+编译程序有特殊含义编译程序有特殊含义在程序中用到的其他名字在程序中用到的其他名字( (标识符标识符) )不能与不能与C+C+的关键字的关键字相同相同关键字也不能

3、重新定义关键字也不能重新定义不同开发环境如不同开发环境如VCVC、BCBC会对保留字有不同扩充会对保留字有不同扩充C/C+C/C+保留字参见教材保留字参见教材P12P12表表2-12-1C+程序设计5中学阶段数学课学习的数据类型及运算中学阶段数学课学习的数据类型及运算实数实数(R)(R)、复数、复数(C)(C)355.5355.5,76.876.8有序实数对:有序实数对:2+3i2+3i整数整数(I)(I)、小数、小数35, -6835, -683.5 , 0.8 3.5 , 0.8 自然数自然数(N)(N),正整数,正整数(Z)(Z)0 0,1 1,2 2,3 3, 有理数、无理数有理数、无

4、理数 正数、负数正数、负数常数:常数:,e e自然数整数小数实数复数数数正数负数数有理数无理数C+程序设计6C+C+语言中的数据类型语言中的数据类型整型整型 intint字符型字符型单字符型单字符型 charchar宽字符型宽字符型 wchar_twchar_t实实 型型单精度型单精度型 floatfloat双精度型双精度型 doubledouble逻辑型逻辑型 boolbool数据类型数据类型基本数据类型基本数据类型非基本数据类型非基本数据类型数组数组 typetype指针指针 type type * *空类型空类型 voidvoid结构结构 structstruct共用体共用体 union

5、union枚举枚举 enumenum类类 classclassC+程序设计7C+C+语言中数据为什么要区分类型?语言中数据为什么要区分类型?不同类型的数据代表不同的不同类型的数据代表不同的数据表示形式数据表示形式合法的取值范围合法的取值范围可参与的运算种类可参与的运算种类占用内存空间大小占用内存空间大小对程序当中所用到的所有数据都必须指定其数据类型对程序当中所用到的所有数据都必须指定其数据类型从基本数据类型到抽象数据类型从基本数据类型到抽象数据类型无数据类型无数据类型基本数据类型基本数据类型 构造数据类型构造数据类型 抽象数据类型抽象数据类型C+程序设计8基本数据类型:系统事先规定了的数据类型

6、(内置类型)基本数据类型:系统事先规定了的数据类型(内置类型)int,整数,在目前整数,在目前绝大多数机器绝大多数机器上占上占4 4个字节个字节float,单精度浮点数,一般是单精度浮点数,一般是4 4个字节长,个字节长,VC VC 内缺省显示为内缺省显示为 6 6 位位有效数字有效数字double,双精度浮点数,一般是双精度浮点数,一般是8 8个字节长,个字节长,VC VC 内缺省显示为内缺省显示为 14 14 位有效数字位有效数字char字符,一般是字符,一般是1 1个字节长个字节长用来表示用来表示 256 256 个个ASCIIASCII字符,或者字符,或者0 0255255的整数的整数

7、注注意意 数据类型标识符为小写字母数据类型标识符为小写字母 int 大小范围与机器有关大小范围与机器有关C+程序设计9基本数据类型修饰符:基本数据类型修饰符:shortshort、longlong、signedsigned、unsignedunsignedshortshort intshort int,短整数,一般,短整数,一般2 2个字节长,通常简写为个字节长,通常简写为shortshortlonglong intlong int,长整数,一般是,长整数,一般是4 4个字节长,通常简写为个字节长,通常简写为longlonglong doublelong double,长双精度(高精度)浮点数

8、,一般是,长双精度(高精度)浮点数,一般是1010个字节长。个字节长。signed用来修饰用来修饰char、int、short和和long,说明他们是,说明他们是有符号有符号的整数(正整数、的整数(正整数、0 0和负整数),一般缺省都是有符号的,所以这个修饰符通常省略和负整数),一般缺省都是有符号的,所以这个修饰符通常省略unsigned用来修饰用来修饰 charchar、intint、short short 和和 longlong,说明他们是无符号的整数(正整数,说明他们是无符号的整数(正整数和和0 0)C+程序设计10一、无符号的整型数据一、无符号的整型数据大于或等于零的正整数大于或等于零

9、的正整数 CH3_1.cpp无符号的短整型无符号的短整型 分类分类无符号的基本整型无符号的基本整型 无符号的长整型无符号的长整型 unsigned short int 标识符标识符 unsigned int unsigned long int 2 对应内存空对应内存空间的大小间的大小4 40216-1 取值范围取值范围同上同上 0232-1注意1、 的含义的含义2、标识符为小写字母、标识符为小写字母3、int 与机器有关与机器有关C+程序设计11二、有符号的整型数据二、有符号的整型数据包括负整数、零、正整数包括负整数、零、正整数有符号的短整型有符号的短整型 分类分类有符号的基本整型有符号的基本

10、整型 有符号的长整型有符号的长整型 signed short int 标识符标识符 signed int signed long int 2 对应内存对应内存空间的大小空间的大小4 4取值范围取值范围-215215-231231同同上上有符号整数在计算机内存中是以补码形式存储有符号整数在计算机内存中是以补码形式存储C+程序设计121. 求整数的补码规则求整数的补码规则例如:例如: (10)补补= (-10)补补=0000101011110110-10取绝对值取绝对值10000010101111010111110110用二进制用二进制表示表示各位取反各位取反末位加末位加12. 由补码推出原码由补

11、码推出原码-10加负号加负号10000010101111010111110110用十进制用十进制表示表示各位取反各位取反末位减末位减1下面以下面以一个字节一个字节存储存储有符号有符号整数整数为例分析其为例分析其取值范围取值范围C+程序设计13补码补码00000001 110000000 -12811111110 -201111111 12700000000 010000001 -127原原 码码11111111 -1取值范围取值范围-128 127-27 27-1C+程序设计14三、实型三、实型实数一律作为有符号的数据使用实数一律作为有符号的数据使用 分类分类 标志符标志符 字节数字节数 缺省

12、有效精度缺省有效精度单精度实数单精度实数 float 4 6位位双精度实数双精度实数 double 8 14位位C+程序设计15三、实型三、实型实数一律作为有符号的数据使用实数一律作为有符号的数据使用 ,可表示为小数形式和指数形式,可表示为小数形式和指数形式,但在计算机内部都用浮点方式来实现存储但在计算机内部都用浮点方式来实现存储定点小数:小数点位置固定,位于符号位和第一个数值位之间,定点小数:小数点位置固定,位于符号位和第一个数值位之间,如如 -0.34,表示的是纯小数;,表示的是纯小数;浮点数:小数点的位置是可以浮动的数,如浮点数:小数点的位置是可以浮动的数,如311234.561.234

13、56 1012345.6 10浮点数通用表示是将实数分为阶码和尾数两部浮点数通用表示是将实数分为阶码和尾数两部分分S 为尾数为尾数(正负均可正负均可),一般规定用纯小数形式,一般规定用纯小数形式,r为基数,对二进制而言,为基数,对二进制而言,r=2, j为阶码为阶码(正负均正负均) ,但必须是整数但必须是整数jNSrC+程序设计16三、实型三、实型浮点数通用表示是将实数分为阶码和尾数两部分浮点数通用表示是将实数分为阶码和尾数两部分S 为尾数为尾数(正负均正负均可可),一般规定用纯小数形式,一般规定用纯小数形式,r为基数,对二进制而言,为基数,对二进制而言,r=2, j为阶为阶码码(正负均正负均

14、) ,但必须是整数,但必须是整数jNSr1010.01110.100111 2理论上浮点数在计算机中的存储格式为阶码阶码j j尾数尾数S S阶码阶码符号符号阶码数值阶码数值尾数尾数符号符号位数数值位数数值C+程序设计17三、实型三、实型浮点数在浮点数在VC6中实际的存储方式为中实际的存储方式为float 型型 31 30 29 23 22 21 1 0符号位阶码尾数阶码:决定数的大小,对应浮点数:阶码:决定数的大小,对应浮点数:2 2-128 -128 2 2127127,尾数:决定数的精度尾数:决定数的精度double double 型型 63 62 61 52 51 50 1 0符号位阶码

15、尾数C+程序设计18 例如,例如,float 71.3125 转换为二进制为:转换为二进制为:1000111.0101,将其规范,将其规范化之后成为:化之后成为:1.000111010126 ,这里的规范化是指移动小数点使这里的规范化是指移动小数点使小数点的左边只有一个小数点的左边只有一个“1”。 内存里实际存储实数的三部分信息内存里实际存储实数的三部分信息:符号(如:符号(如+)、指数(如)、指数(如6)和尾数(即小数点右边的位,如和尾数(即小数点右边的位,如0001 1101 0100),而小数点左边),而小数点左边的的1并不存储。并不存储。 0 10000101 0001 1101 01

16、 0000000000000 (42 8E A0 00)三、实型三、实型 符号位符号位 指数位指数位 小数部分小数部分 指数偏移量指数偏移量 单精度浮点数单精度浮点数 1位位31 8位位30-23 23位位22-00 127 双精度浮点数双精度浮点数 1位位63 11位位62-52 52位位51-00 1023 C+程序设计19尾数部分占的位数愈多,实数的有效数字愈多,尾数部分占的位数愈多,实数的有效数字愈多,即有效精度愈高。指数部分占的位数愈多,则能表即有效精度愈高。指数部分占的位数愈多,则能表示的数值范围愈大。示的数值范围愈大。实数在操作中存在误差实数在操作中存在误差,例如:把例如:把 1

17、11111.111 作为作为 float 型数据,输出的结果是型数据,输出的结果是 111111.109 C+程序设计20四、字符型四、字符型 采用采用 ASCII 码字符集,即用码字符集,即用 1 个字节存放字符的个字节存放字符的 ASCII 码值码值 分类 标志符 内存空间 取值范围有符号字符型 signed char 1 -128127无符号字符型 unsigned char 1 0255C+程序设计21数据类型数据类型数据长度数据长度适用范围适用范围小数点后小数点后有效位数有效位数bool8 bits(1Byte)0或或10char8bit (1Byte)02550int32 bits

18、(4Byte)-231(231-1)0short int 16 bits (2Byte)-32768327670long int32bits (4Byte)-231(231-1)0unsigned short16 (2Byte)0655350unsigned int32 bits (4Byte)0(232-1)0unsigned long32 bits (4Byte)042949672950float32 bits (4Byte)3.41038 3.410387double64 bits (8Byte)1.710-308 1.71030816long double64 bits (8Byte)

19、1.710-308 1.71030816C+程序设计22变量:在程序运行中其值可以改变的量变量:在程序运行中其值可以改变的量变量是存储信息的单元,它对应某个内存空间变量是存储信息的单元,它对应某个内存空间变量名代表其存储空间,程序能在变量中存储值和取出值变量名代表其存储空间,程序能在变量中存储值和取出值变量的定义:变量的定义: 数据类型数据类型 变量名变量名1=初值初值,变量名,变量名2=初值初值,;例:例: float r1=1.5f,r2=0.5f,r3; char ch=A;变量的初始化:变量的初始化:为变量赋初值的过程,用赋值运算符为变量赋初值的过程,用赋值运算符“=”=”进进行行定义

20、的同时进行初始化定义的同时进行初始化单独进行初始化单独进行初始化intint a ,b; a ,b;unsigned long sum ;unsigned long sum ;a = 123a = 123, , sum=0 sum=0 ; ;b = a ;b = a ;C+程序设计23变量名的含义变量名的含义表示分配给变量的存储空间表示分配给变量的存储空间表示内存空间中存储的数据:变量的值表示内存空间中存储的数据:变量的值每个变量都有一个名字、一个数据类型和一个值每个变量都有一个名字、一个数据类型和一个值注意变量名与变量值的区别注意变量名与变量值的区别 3a变量名(一个符号地址,在对程序编译时

21、系统分配给它一个内存地址)变量值(在程序中对变量取值,实际上是通过变量名找到相应内存地址,从其存储单元中读取数据)存储单元C+程序设计24变量名命名规定变量名命名规定由字母、下划线、数字组成,且第一个符号不能是数字由字母、下划线、数字组成,且第一个符号不能是数字不要与关键字、保留字重名;不要与关键字、保留字重名;中间不能有空格中间不能有空格C+C+是大小写敏感,即大写和小写字母是不同的是大小写敏感,即大写和小写字母是不同的变量名中不能包含变量名中不能包含”. ; , “ + -”. ; , “ + -”之类特殊符号之类特殊符号变量名不要与变量名不要与C+C+中的库函数、类名和对象名相同中的库函

22、数、类名和对象名相同不要使用易混淆的字母不要使用易混淆的字母某些功能的变量采用习惯命名,如循环变量习惯用某些功能的变量采用习惯命名,如循环变量习惯用i,j,ki,j,k采用见名思义的原则采用见名思义的原则: sum: sum、namename、sexsex,不要太长,一般以不,不要太长,一般以不超过超过3131个字符为宜个字符为宜最好使用英文单词或其组合最好使用英文单词或其组合切忌使用汉字或汉语拼音切忌使用汉字或汉语拼音C+程序设计25变量名命名风格变量名命名风格下划线和大小写通常用来增强可读性下划线和大小写通常用来增强可读性UnixUnix风格:风格: variable_nameWindow

23、s风格风格(匈牙利命名法匈牙利命名法): chName, strNamex_y,x1,X1,x,yx_y,x1,X1,x,y姓名姓名2x2xvarnamevarname_y1_y1Case,51select, A lot,-vvCase,51select, A lot,-vvSin,cin,cout,stringSin,cin,cout,stringD6XyD6XyC+程序设计26匈牙利命名法匈牙利命名法标识符的名字以一个或者多个小写字母开头,用这些字母来指定数标识符的名字以一个或者多个小写字母开头,用这些字母来指定数据类型据类型在标识符内,前缀以后就是一个或者多个第一个字母大写的单词,在标识

24、符内,前缀以后就是一个或者多个第一个字母大写的单词,这些单词指出程序中该对象的用途这些单词指出程序中该对象的用途常用的数据类型的标准前缀常用的数据类型的标准前缀chch 字符(字符(charchar)n n 整数(整数(integerinteger)b BOOLb BOOLl l 长整数(长整数(longlong)h HANDLEh HANDLE(无符号(无符号intint)m_ m_ 类成员变量类成员变量fn fn 函数(函数(functionfunction)例如,例如,nCountnCount表示一个计数器的变量,数据类型是整型。表示一个计数器的变量,数据类型是整型。C+程序设计27#i

25、ncludeint main( ) int price = 30; int num, total; /定义变量定义变量,在内存中开辟区间在内存中开辟区间 num=10; /变量赋值变量赋值,10为常量为常量 total=num*price; cout“total=“total; /输出结果输出结果 return 0;其中:其中:num=10 total=num*PRICE 是赋值号,不同于数学意义上的等号!是赋值号,不同于数学意义上的等号!numtotal10300price30C+程序设计28在程序运行时保持不变的值,称为常量,主要有整型常量、在程序运行时保持不变的值,称为常量,主要有整型常

26、量、实型常量、字符常量、字符串常量、枚举常量实型常量、字符常量、字符串常量、枚举常量常量名不能放在赋值语句的左边常量名不能放在赋值语句的左边常量是在程序中出现的、代表数据的文字常量是在程序中出现的、代表数据的文字整型常量整型常量十进制:十进制:78,-132八进制:八进制:以数字以数字0开头开头,后跟一串八进制数字后跟一串八进制数字(注意:数字注意:数字0),如,如012 ( ),03256 ( ),0128 ()十六进制:十六进制:以以0 x开头,后跟开头,后跟 09、AF 或或 af (数字(数字0,字母,字母x),),如如0 x123(), 0 xabc (), 01bc ( )10进制

27、数有正负之分,进制数有正负之分,8进制、进制、16进制只能表示无符号整数进制只能表示无符号整数C+程序设计29整型常量整型常量长整型常量长整型常量 123l、123L、123456l、123456L无符号型常量无符号型常量 123u、123U实型常数实型常数小数形式,例如:小数形式,例如:0.123,-5.6,.123,2.0 ,2.指数形式(科学记数法)指数形式(科学记数法) 1.5610 -3 1.56E -3, 1.56108 1.56E8,1.56e+8注意注意实数一律用十进制表示:实数一律用十进制表示:0 x2.5 E的左右必须要有数字:的左右必须要有数字: E2(1E2),),2E

28、(2E+1、2E1)指数部分必须为整数指数部分必须为整数: 2.5E + 2.5 C+程序设计30#include int main() int int10,int8,int16; /定义定义3个整型变量个整型变量 int10=10; /默认为十进制默认为十进制 int8=010; /八进制八进制 int16=0 x10; /十六进制十六进制 coutint10=int10endl; coutint8=int8endl; coutint16=int16endl; return 0;输出输出int10=10int8=8int16=16C+程序设计31实型常数实型常数单精度单精度 float:一般

29、在内存中占一般在内存中占 4 个字节,提供个字节,提供 7 位有效数字位有效数字双精度双精度 double:一般在内存中占:一般在内存中占 8 个字节,提供个字节,提供 15 位有效数字位有效数字长双精度长双精度 long double:一般在内存中占:一般在内存中占 10 个字节,提供个字节,提供 19 位有效位有效数字数字在在C+中,一个实型常数如果没有任何说明,表示中,一个实型常数如果没有任何说明,表示double型;若要型;若要表示表示 float 型数,则必须在实数后加上型数,则必须在实数后加上 f 或或 F;若要表示;若要表示 long double 型数,则必须在实数后加上型数,

30、则必须在实数后加上 l 或或 L34.5f / float 型型34.5 / double型型(系统默认表示系统默认表示)34.5L / long double型型34.5l / long double型型34.5e23f / float 型型34.5e23 / double型型(系统默认表示系统默认表示)34.5e23L / long double型型34.523l / long double型型34.5e400 / long double型型(范围超过范围超过double表示表示)C+程序设计32#includeint main( ) float a, b; double c, d; a=

31、0.01; b=3.45678e-2; c=3.45678e-2; d=9.7654e-5; couta=atb=bendl; coutc=ctd=dendl; return 0;a=0.01 b=0.0345678c=0.0345678 d=9.7654e-005Press any key to continueC+程序设计33字符常量字符常量用一对英文用一对英文单引号单引号括起来的括起来的单个字符单个字符或或转义序列转义序列单个字符:如单个字符:如 a, x, $转义序列转义序列 :以:以 开头后跟一个字符或几个数字开头后跟一个字符或几个数字n 回车键回车键, t tab键键ddd 1-3

32、 位位 8 进制数所代表的字符进制数所代表的字符: 101与与A 、65表示同一个字符,表示同一个字符,不需以不需以 0 开头,表示范围为开头,表示范围为 000 377 377 (0 0255255)xhh 1-2 位位 16 进制数所代表的字符进制数所代表的字符: x41 与与 A 、65表示同一个字符,表示同一个字符, 242、362 、 xF2 表示表示 ,必须用,必须用x 或或 X引导,表示范围为引导,表示范围为x00 xffxff (0 0255255)将一个字符常量赋值给字符变量,实际上并不是把该字符本身放到将一个字符常量赋值给字符变量,实际上并不是把该字符本身放到内存单元中,而

33、是将该字符的相应内存单元中,而是将该字符的相应ASCIIASCII码(整型数)存入,即在内码(整型数)存入,即在内存中字符数据以存中字符数据以ASCIIASCII存储,即以整数表示存储,即以整数表示C+程序设计34字符常量字符常量例:例:char chVar = b,chVar1=n,chVar2=007,chVar3=xff,chVar4=97;C+中字符数据和整型数据之间可以相互赋值,但要注意其表示的中字符数据和整型数据之间可以相互赋值,但要注意其表示的范围合理性范围合理性int a=b; / Ok 给一个整型变量赋一个字符值给一个整型变量赋一个字符值char b=97; / Ok 给一个

34、字符变量赋一个整型值给一个字符变量赋一个整型值coutaendl; 结果为结果为 98 coutbendl; 结果为结果为 a0与与0的区别,的区别,0 与与NULL 常用转义字符:一些特殊字符(无法从键盘输入或者另有它用)用常用转义字符:一些特殊字符(无法从键盘输入或者另有它用)用转义字符表示转义字符表示C+程序设计35#includeint main() char c1,c2,c3,c4; char n1,n2; c1=a;/字符常量字符常量 c2=97; /十进制十进制 c3=x61;/转义字符转义字符 c4=0141;/八进制八进制 coutc1=c1tc2=c2endl; coutc

35、3=c3tc4=c4endl; n1=n; /转义字符:回车转义字符:回车 n2=t; /转义字符:下一个输出区转义字符:下一个输出区(Tab) cout使用转义字符使用转义字符n; coutc1=c1n2c2=c2n1; coutc3=c3n2c4=c4n1; return 0;输出:输出:c1=a c2=a c3=a c4=a使用转义字符使用转义字符c1=a c2=a c3=a c4=aC+程序设计36字符串常量字符串常量用一对用一对 双引号双引号 括起来的一个或多个字符序列,如:括起来的一个或多个字符序列,如:China , C Language , hello!“字符串的存储:在内存中

36、,依次存放组成字符串的每个字符的字符串的存储:在内存中,依次存放组成字符串的每个字符的ASCII码值,并且把码值,并且把 空字符空字符0(ASCII码值为码值为0)加到字符串的尾部,加到字符串的尾部,作作为字符串的结束标志。为字符串的结束标志。字符串的长度字符串的长度: 等于字符的个数等于字符的个数字符串存储时占内存的大小:字符串存储时占内存的大小: 字符串的长度字符串的长度+1不能将字符串常量赋值给字符串变量,如不能将字符串常量赋值给字符串变量,如 char ch = “abcd” ;一个字符占一个内存单元,含有一个字符的字符串占一个字符占一个内存单元,含有一个字符的字符串占2个内存单元,个

37、内存单元,区分区分“A”与与A,0与与”0”HELLO0C+程序设计37常量的使用与定义常量的使用与定义若希望变量的内容自初始化后一直保持不变,此时可以定义一常量若希望变量的内容自初始化后一直保持不变,此时可以定义一常量若程序中多处都要用到一个常数,此时应定义一常量以避免常数值若程序中多处都要用到一个常数,此时应定义一常量以避免常数值的不一致性的不一致性const float pi=3.14159;const float pi=3.14159;常量定义时必须初始化,此后程序中对其只能读不能修改常量定义时必须初始化,此后程序中对其只能读不能修改常量名不能放在赋值语句的左边常量名不能放在赋值语句的

38、左边const float pi;const float pi;pi = 3.14159;pi = 3.14159;常量在编译时求值常量在编译时求值const int nSize=100const int nSize=100* *sizeof(intsizeof(int););const int nMax = fnMax(15,23); /fnMaxconst int nMax = fnMax(15,23); /fnMax用户自定义函数用户自定义函数C+程序设计38常量的使用与定义常量的使用与定义#define#defineC+ C+ 为兼容为兼容 C C 而保留而保留在在C+ C+ 编程中,

39、常量定义应使用编程中,常量定义应使用 const const 不用不用 definedefine#define #define 称为编译预定义指令,其语法格式为称为编译预定义指令,其语法格式为#define #define 常量名常量名 字符串字符串常量名与字符串之间用空格分隔,行末不用分号,在编译预处理阶段常量名与字符串之间用空格分隔,行末不用分号,在编译预处理阶段进行字符串直接替换进行字符串直接替换#define PI 3.1415926#define PI 3.1415926C+程序设计39#includeint main() const int PRICE=30; /常量,在程序中保持

40、不变常量,在程序中保持不变 int num, total; /定义变量定义变量,在内存中开辟区间在内存中开辟区间 num=10; /变量赋值变量赋值,10为常量为常量 total=num*PRICE; cout“total=“total; /输出结果输出结果 return 0;其中:其中:num=10 total=num*PRICE 是赋值号,不同于数学意义上的等号!是赋值号,不同于数学意义上的等号!numtotal10300PRICE30C+程序设计40#include#define PI 3.14156#define S Chinaint main() const float pi=3.1

41、4156; /变量作为常量使用变量作为常量使用 coutPI=PIendl; cout10*PI=10*PIendl; coutSendl;/ PI=PI+3;/ pi=pi+4; coutPI=PIendl; coutpi=piendl; return 0;输出:输出:PI=3.1415610*PI=31.4156ChinaPI=3.14156pi=3.14156C+程序设计41程序在执行期间,程序在执行期间,接收外部信息的操作称为程序的输入接收外部信息的操作称为程序的输入(Inpou);而把;而把程序向外部发送信息的操作称为程序的输出程序向外部发送信息的操作称为程序的输出(Output)。

42、在在C+中没有专门的输入输出语句,所有输入输出是通过中没有专门的输入输出语句,所有输入输出是通过输入输出流输入输出流来实现的。来实现的。要使用要使用C+提供的输入输出时,必须在程序的开头增加一提供的输入输出时,必须在程序的开头增加一行:行: #include 即包含输入输出流的头文件即包含输入输出流的头文件“iostream.h”。有关包含文件。有关包含文件的作用,在编译预处理部分(第的作用,在编译预处理部分(第7章)作详细介绍。章)作详细介绍。C+程序设计42int a,b;cinab; /程序运行至此停下,等待从键盘输入变量值程序运行至此停下,等待从键盘输入变量值键盘输入:键盘输入:3 5

43、 或:或:3 5 均可。均可。输入语句自动过滤空白字符输入语句自动过滤空白字符!a3键盘键盘b5键盘键盘输入语句:输入语句:cincin输入十进制整数和实数输入十进制整数和实数:cin:cin .2 .C+程序设计43float c,d;cincd;char ch1,ch2;cinch1ch2;若输入:若输入:ab 则则ch1为为a, ch2为为b。若输入:若输入:a b 则则ch1为为a,ch2为为b。字符型变量过滤空白字符,字符型变量过滤空白字符,cin格式过滤空白字符格式过滤空白字符输入语句:输入语句:cincin浮点型数据同整型数据一样浮点型数据同整型数据一样字符型数据字符型数据C+程

44、序设计44float a;int i1,i2;char ch1,ch2;cini1ai2ch1ch2;输入:输入:34 5.678 1a b i2: 1在缺省的情况下,在缺省的情况下,cin自动跳过输入的空格自动跳过输入的空格,换言之,换言之,cin不能将输入的不能将输入的空格赋给字符型变量;空格赋给字符型变量;回车键也是作为输入字符之间的分隔符,回车键也是作为输入字符之间的分隔符,也不能将输入的回车键字符也不能将输入的回车键字符赋给字符型变量赋给字符型变量。 a: 5.578i1: 34ch1: ach2: b输入语句:输入语句:cincin不同类型数据混合输入不同类型数据混合输入C+程序设

45、计45若要把从键盘上输入的每一个字符,包括若要把从键盘上输入的每一个字符,包括空格和回车键空格和回车键都作为一个输入字都作为一个输入字符赋给字符型变量时,必须使用函数符赋给字符型变量时,必须使用函数cin.get(),其格式为:,其格式为: cin.get();cin.get()从输入行中取出一个字符,并将它赋给从输入行中取出一个字符,并将它赋给字符型变量,该字符型变量,该语句语句一次一次只能从输入行中提取一个字符。只能从输入行中提取一个字符。char c1;cin.get(c1);char ch1,ch2,ch3;cin.get(ch1);cin.get(ch2);cin.get(ch3);

46、则:则:ch1:Ach2:空格空格 ch3:B输入:输入:A BA B并且在输入缓冲区中保留回车键并且在输入缓冲区中保留回车键!C+程序设计46输入语句:输入语句:cincin输入十六进制或八进制数据:缺省情况下,系统约定输入的整型数输入十六进制或八进制数据:缺省情况下,系统约定输入的整型数是十进制数据;当要求按八进制或十六进制输入数据时,在是十进制数据;当要求按八进制或十六进制输入数据时,在 cincin 中必须指明相应的数据类型:中必须指明相应的数据类型:hex hex 为十六进制,为十六进制,octoct 为八进制,为八进制,decdec 为十进制为十进制。int i,j,k,l;cin

47、hexi;/指明输入为十六进制数指明输入为十六进制数cinoctj;/指明输入为八进制数指明输入为八进制数cink;/输入仍为八进制数输入仍为八进制数cindecl;/指明输入为十进制数指明输入为十进制数当执行到语句当执行到语句cin时,若输入的数据为:时,若输入的数据为:11 11 12 12结果:结果:i: 17j: 9k: 10l: 12C+程序设计47输入语句:输入语句:cincin使用非十进制数输入时,要注意以下几点使用非十进制数输入时,要注意以下几点八进制或十六进制数的输入,只能适用于八进制或十六进制数的输入,只能适用于整型变量整型变量,不适用于字符型,不适用于字符型变量,实型变量

48、变量,实型变量当在当在cincin中指明使用的数制输入后,中指明使用的数制输入后,则所指明的数制一直有效,直到在则所指明的数制一直有效,直到在接着的接着的cincin中指明输入时所使用的另一数制为止中指明输入时所使用的另一数制为止。如上例中,输入。如上例中,输入k k的的值时,仍为八进制。值时,仍为八进制。输入数据的输入数据的格式、个数和类型格式、个数和类型必须与必须与cincin中所列举的变量类型中所列举的变量类型一一对应一一对应。一旦输入出错,不仅使当前的输入数据不正确,而且使得后面的提取一旦输入出错,不仅使当前的输入数据不正确,而且使得后面的提取数据也不正确。数据也不正确。cina b;

49、cinab;int a, b;cinab;C+程序设计48输出语句:输出语句:coutcout与输入与输入cincin对应的输出是对应的输出是coutcout输出流输出流当要输出一个表达式的值时,可使用当要输出一个表达式的值时,可使用coutcout来实现,其一般格式为:来实现,其一般格式为:coutcout .; .;其中运算符其中运算符“”称为插入运算符,它将紧跟其后的表达式的值,输出到显示称为插入运算符,它将紧跟其后的表达式的值,输出到显示器器当前光标当前光标的位置。的位置。C+程序设计49int a=6;float f1=12.4;char s1 =“abcd”;coutatf1ts1

50、endl;t为转义字符为转义字符Tab,endl为回车或为回车或n显示器显示器显示器显示器显示器显示器a6f112.4s10dcba612.4abcdC+程序设计50cout将将双引号中的字符串常量双引号中的字符串常量按其原样输出按其原样输出char ch1=a,ch2=b;cout“c1=“ch1t“c2=“ch2endl;c1=a, c2=b int i1=4,i2=5;float a=3.5;cout“a*i1=“a*i1endl“a*i2=“a*i2endl;a*i1=14a*i2=17.5C+程序设计51使用控制符使用控制符用于对用于对I/OI/O流的格式进流的格式进行控制行控制是在

51、头文件是在头文件 iomanip.hiomanip.h中定义的对象中定义的对象可以直接将控制符插入可以直接将控制符插入流中流中控制符描述deciostream.h置基数为 10hex置基数为 16oct置基数为 8setw(n)iomanip.h设域宽为 n 个字符setprecision(n)设显示小数精度为 n 位setfill(c)设填充字符为 csetiosflags(ios:skipws)忽略前导空白setiosflags(ios:fixed)固定的浮点显示setiosflags(ios:scientific)指数表示setiosflags(ios:left)左对齐setiosfla

52、gs(ios:right)右对齐setiosflags(ios:uppercase)16进制数大写输出setiosflags(ios:lowercase)16进制数小写输出C+程序设计52输出语句:输出语句:coutcout输出八进制或十六进制数:控制符是输出八进制或十六进制数:控制符是 hex,octhex,oct和和decdec,分别对应,分别对应1616进制、进制、8 8进制和进制和1010进制数的显示进制数的显示cout dec iendl;cout hexiendl;cout oct iendl;cout j endl;10013e91751当在当在 coutcout 中指明使用的数

53、制输入后,中指明使用的数制输入后,则所指明的数制一直有效,则所指明的数制一直有效,直到在接着的直到在接着的 coutcout 中指明输出时所使用的另一数制为止中指明输出时所使用的另一数制为止。如上例中,。如上例中,输出输出 j j 的值时,仍为八进制。的值时,仍为八进制。int i=1001,j=127;cout dec iendl;cout hexiendl;cout oct iendl;10013e91751177C+程序设计53输出语句:输出语句:coutcout设置值的输出宽度:在输出的数据项之间进行隔开的另一种办法是设置值的输出宽度:在输出的数据项之间进行隔开的另一种办法是指定输出项

54、的宽度指定输出项的宽度int i=4,j=12,m=7,k=2;cout setw(6) isetw(10)jendl;cout setw(5)msetw(10)j*kendl;_ _ _ _ _ 4_ _ _ _ _ _ _ _ 12_ _ _ _ 7 _ _ _ _ _ _ _ _ 24其中其中setw(6)指明其后的指明其后的输出项占用的字符宽度为输出项占用的字符宽度为6,即括号中的值指,即括号中的值指出紧跟其后的输出项占用的字符位置个数,出紧跟其后的输出项占用的字符位置个数,并向右对齐并向右对齐,setw是是“set width”的缩写。的缩写。C+程序设计54使用使用setw()应注

55、意以下三点:应注意以下三点:1、在程序的开始位置必须包含头文件、在程序的开始位置必须包含头文件iomanip.h,即在程序的开,即在程序的开头增加:头增加:#include 2、括号中必须给出一个表达式(值为正整数),它指明紧跟其、括号中必须给出一个表达式(值为正整数),它指明紧跟其后输出项的宽度。后输出项的宽度。3、该设置仅对其后的一个输出项有效该设置仅对其后的一个输出项有效。一旦按指定的宽度输出。一旦按指定的宽度输出其后的输出项后,又回到原来的缺省输出方式。其后的输出项后,又回到原来的缺省输出方式。C+程序设计55输出语句:输出语句:coutcout控制浮点数值显示控制浮点数值显示setp

56、recision(nsetprecision(n) )控制输出流显示浮点数的数字个数,控制输出流显示浮点数的数字个数,C+C+默认的流输默认的流输出数值有效位是出数值有效位是6 6setprecision(nsetprecision(n) )与与setiosflags(ios:fixedsetiosflags(ios:fixed) )控制小数点右边的数字控制小数点右边的数字个数个数setprecision(nsetprecision(n) )与与setiosflags(ios:scientificsetiosflags(ios:scientific) )控制指数表示法的控制指数表示法的小数位数

57、小数位数double fSum = 22.0/7;cout fSum endl;cout setprecision(0)fSum endl;cout setprecision(2)fSum endl;cout setiosflags(ios:fixed) setprecision(4)fSum endl;cout setiosflags(ios:scientific) setprecision(6)fSum endl;C+程序设计56输出语句:输出语句:coutcout控制浮点数值显示控制浮点数值显示在用浮点表示的输出中,在用浮点表示的输出中,setprecision(nsetprecision(n) )表示有效位数表示有效位数在用定点表示的输出中,在用定点表示的输出中,setprecision(nsetprecision(n) )表示小数位数表示小数位数在用指数形式输出时,在用指数形式输出时,setprecision(nsetprecision(n) )表示小数位数表示小数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论