资源预览内容
第1页 / 共63页
第2页 / 共63页
第3页 / 共63页
第4页 / 共63页
第5页 / 共63页
第6页 / 共63页
第7页 / 共63页
第8页 / 共63页
第9页 / 共63页
第10页 / 共63页
亲,该文档总共63页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第2章章 基本数据运算与输入输出基本数据运算与输入输出(A)主要内容主要内容如何用计算机计算圆面积如何用计算机计算圆面积(2.1-2.4)(2.1-2.4)标识符标识符(2.5)(2.5)基本数据类型基本数据类型(2.9)(2.9)变量定义变量定义(2.6)(2.6)常量常量(2.8(2.8,2.9.1)2.9.1)I/OI/O流控制流控制(3.12)(3.12)小结及作业小结及作业2C+程序设计2.1 2.1 如何用计算机计算圆面积如何用计算机计算圆面积问题描述问题描述计算机从键盘读入圆的半径,输出其面积计算机从键盘读入圆的半径,输出其面积程序将使用变量保存半径和面积,并用一个表达式计算面程序将使用变量保存半径和面积,并用一个表达式计算面积积解决思路解决思路读入半径读入半径利用圆面积公式计算面积利用圆面积公式计算面积输出面积输出面积3C+程序设计2.1 2.1 如何用计算机计算圆面积如何用计算机计算圆面积程序主函数框架程序主函数框架程序清单程序清单int main() / Step 1: Read in radius / Step 2: Compute area / Step 3: Display the area#include using namespace std;int main() / Step 1: Read in radius double radius; cout radius; / Step 2: Compute area double area = radius * radius * 3.14159; / Step 3: Display the area cout The area is area endl; return 0;console in/outconsole in/out4C+程序设计2.2 2.2 标识符标识符字符集字符集字符是指计算机中使用的字母、数字、单词和符号字符是指计算机中使用的字母、数字、单词和符号用于构造有意义语句的一组字符,这也是任何一种语言的用于构造有意义语句的一组字符,这也是任何一种语言的特点特点C+C+程序的字符集程序的字符集26 26 个大、小写字母:个大、小写字母:a az,A z,A Z Z10 10 数字数字:0:09 9其他符号:其他符号:+ - * / % & | ( ) + - * / % & | ( ) , . ? : ; , . ? : ; 5C+程序设计2.2 2.2 标识符标识符标识符标识符由字符集元素组成的一串字符由字符集元素组成的一串字符, ,为变量、常量及函数等程序为变量、常量及函数等程序实体命名实体命名分为系统预定义标识符分为系统预定义标识符( (如预编译指令如预编译指令) )和用户自定义标识和用户自定义标识符符( (如变量名,函数名如变量名,函数名) )标志符命名规则标志符命名规则由字母、下划线、数字组成,且第一个符号不能是数字由字母、下划线、数字组成,且第一个符号不能是数字中间不能有空格中间不能有空格C+C+是大小写敏感,即大写和小写字母是不同的是大小写敏感,即大写和小写字母是不同的最好使用英文单词或其组合,切忌使用汉字或汉语拼音最好使用英文单词或其组合,切忌使用汉字或汉语拼音不能使用保留字作为标志符不能使用保留字作为标志符( (参见附录参见附录A)A)采用见名思义的原则采用见名思义的原则: sum: sum、namename、sexsex,不要太长,一般,不要太长,一般以不超过以不超过3131个字符为宜个字符为宜6C+程序设计2.2 2.2 标识符标识符保留字保留字又称关键字又称关键字(Keyword)(Keyword),是预先定义好的标识符,是预先定义好的标识符,对对C+C+编译程序有特殊含义编译程序有特殊含义在程序中用到的其他名字在程序中用到的其他名字( (标识符标识符) )不能与不能与C+C+的关的关键字相同键字相同关键字也不能重新定义关键字也不能重新定义不同开发环境如不同开发环境如VCVC、BCBC会对保留字有不同扩充会对保留字有不同扩充C/C+C/C+保留字参见教材附录保留字参见教材附录A C+A C+关键字关键字P492P492)7C+程序设计2.3 2.3 基本数据类型基本数据类型中学阶段数学课学习的数据类型及运算中学阶段数学课学习的数据类型及运算实数实数(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, 有理数、无理数有理数、无理数 正数、负数正数、负数常数:常数:,e e自然数整数小数实数复数数数正数负数数有理数无理数8C+程序设计2.3 2.3 基本数据类型基本数据类型C+C+语言中的数据类型语言中的数据类型整型整型 int int字符型字符型单字符型单字符型 char char宽字符型宽字符型 wchar_t wchar_t实实 型型单精度型单精度型 float float双精度型双精度型 double double逻辑型逻辑型 bool bool数据类型数据类型基本数据类型基本数据类型非基本数据类型非基本数据类型数组数组 type type指针指针 type * type *空类型空类型 void void构造构造 struct struct共用体共用体 union union枚举枚举 enum enum类类 class class9C+程序设计2.3 2.3 基本数据类型基本数据类型C+C+语言中数据为什么要区分类型?语言中数据为什么要区分类型?不同类型的数据代表不同的不同类型的数据代表不同的数据表示形式数据表示形式合法的取值范围合法的取值范围可参与的运算种类可参与的运算种类占用内存空间大小占用内存空间大小对程序当中所用到的所有数据都必须指定其数据类型对程序当中所用到的所有数据都必须指定其数据类型从基本数据类型到抽象数据类型从基本数据类型到抽象数据类型无数据类型无数据类型 void void基本数据类型基本数据类型 构造数据类型构造数据类型 抽象数据类型抽象数据类型10C+程序设计2.3 2.3 基本数据类型基本数据类型基本数据类型:系统事先规定了的数据类型内置类型)基本数据类型:系统事先规定了的数据类型内置类型)int,整数,在目前绝大多数机器上占,整数,在目前绝大多数机器上占4个字节个字节float,单精度浮点数,一般是,单精度浮点数,一般是4个字节长,个字节长,VC 内缺省显示为内缺省显示为 6 位有效数字位有效数字double,双精度浮点数,一般是,双精度浮点数,一般是8个字节长,个字节长,VC 内缺省显示内缺省显示为为 14 位有效数字位有效数字char字符,一般是字符,一般是1个字节长个字节长用来表示用来表示 256 个个ASCII字符,或者字符,或者0255的整数的整数注注意意数据类型标识符为小写字母int大小范围与机器有关11C+程序设计2.3 2.3 基本数据类型基本数据类型基本数据类型修饰符:基本数据类型修饰符:short、long、signed、unsigned short short int,短整数,一般,短整数,一般2个字节长,通常简写为个字节长,通常简写为short long long int,长整数,长整数,VC中一般是中一般是4个字节长,通常简写为个字节长,通常简写为long long double,长双精度高精度浮点数,一般是,长双精度高精度浮点数,一般是10个字节个字节长。长。 signed用来修饰用来修饰char、int、short和和long,说明他们是有符号的整数,说明他们是有符号的整数正整数、正整数、0和负整数),一般缺省都是有符号的,所以这个和负整数),一般缺省都是有符号的,所以这个修饰符通常省略修饰符通常省略 unsigned用来修饰用来修饰 char、int、short 和和 long,说明他们是无符号的整,说明他们是无符号的整数正整数和数正整数和0)12C+程序设计一、无符号的整型数据一、无符号的整型数据大于或等于零的正整数大于或等于零的正整数无符号的短整型无符号的短整型 分类无符号的基本整型无符号的基本整型 无符号的长整型无符号的长整型unsignedshortint 标识符标识符 unsigned int unsigned long int2对应内存空对应内存空间的大小间的大小4 40216-1取值范围同上同上 0232-1注意1、 的含义的含义2、标识符为小写字母、标识符为小写字母3、int 与机器有关与机器有关2.3 2.3 基本数据类型基本数据类型13C+程序设计二、有符号的整型数据二、有符号的整型数据包括负整数、零、正整数包括负整数、零、正整数有符号的短整型有符号的短整型 分类有符号的基本整型有符号的基本整型 有符号的长整型有符号的长整型signed short int 标识符标识符 signed int signed long int2对应内存对应内存空间的大小空间的大小4 4取值范围取值范围-2152152.3 2.3 基本数据类型基本数据类型-231231同上同上有符号整数在计算机内存中是以补码形式存储有符号整数在计算机内存中是以补码形式存储14C+程序设计1. 求整数的补码规则求整数的补码规则例如:例如: (10补补= (-10补补=0000101011110110-10取绝对值取绝对值10000010101111010111110110用二进制用二进制表示表示各位取反各位取反末位加末位加12. 由补码推出原码由补码推出原码-10加负号加负号10000010101111010111110110用十进制用十进制表示表示各位取反各位取反末位减末位减12.3 2.3 基本数据类型基本数据类型下面以一个字节存储有符号整数为例分析其取值范围下面以一个字节存储有符号整数为例分析其取值范围15C+程序设计补码补码00000001110000000-12811111111-10111111112700000000010000001-127原原 码码11111110-2取值范围取值范围-128 127-27 27-12.3 2.3 基本数据类型基本数据类型正数正数负数负数16C+程序设计三、实型:一律作为有符号的数据使用三、实型:一律作为有符号的数据使用 2.3 2.3 基本数据类型基本数据类型分类分类 标志符标志符 字节数字节数 缺省有效精度缺省有效精度单精度实数单精度实数 float 4 6位位双精度实数双精度实数 double 8 14位位实数作为有符号的数据使用实数作为有符号的数据使用 ,可表示为小数形式和指数形式,但在计算,可表示为小数形式和指数形式,但在计算机内部都用浮点方式来实现存储机内部都用浮点方式来实现存储定点小数:小数点位置固定,位于符号位和第一个数值位之间,如定点小数:小数点位置固定,位于符号位和第一个数值位之间,如 -0.34 -0.34,表示的是纯小数;,表示的是纯小数;浮点数:小数点的位置是可以浮动的数,如浮点数:小数点的位置是可以浮动的数,如浮点数通用表示是将实数分为阶码和尾数两部分:浮点数通用表示是将实数分为阶码和尾数两部分: S 为尾数为尾数(正正负均可负均可),一般规定用纯小数形式,一般规定用纯小数形式,r为基数,对二进制而言,为基数,对二进制而言,r=2, j为阶码为阶码(正正负均可负均可) ,但必须是整数,但必须是整数17C+程序设计2.3 2.3 基本数据类型基本数据类型理论上浮点数在计算机中的存储格式为理论上浮点数在计算机中的存储格式为阶码j j尾数尾数S S阶码符号符号阶码数数值尾数尾数符号符号位数数位数数值18C+程序设计浮点数在浮点数在VC6中实际的存储方式为中实际的存储方式为float 型型2.3 2.3 基本数据类型基本数据类型31302923222110符号位阶码尾数double double 型型63626152515010符号位阶码尾数阶码:决定数的大小,对应浮点数:阶码:决定数的大小,对应浮点数:2-128 2-128 21272127,尾数:决定数的精度,尾数:决定数的精度19C+程序设计 例例:float 71.3125 转转换换为为二二进进制制为为:1000111.0101,将将其其规规范范化化之之后后成成为为:1.000111010126 ,这里的规范化是指移动小数点使小数点的左边只有一个,这里的规范化是指移动小数点使小数点的左边只有一个“1”。 内内存存里里实实际际存存储储实实数数的的三三部部分分信信息息:符符号号如如+)、指指数数如如6和和尾尾数数即即小数点右边的位,如小数点右边的位,如0001 1101 0100),而小数点左边的),而小数点左边的1并不存储。并不存储。 0 10000101 0001 1101 01 0000000000000 (42 8E A0 00)2.3 2.3 基本数据类型基本数据类型符号位指数位小数部分指数偏移量单精度浮点数1位318位30-2323位22-00127双精度浮点数1位6311位62-5252位51-001023尾尾数数部部分分占占的的位位数数愈愈多多,实实数数的的有有效效数数字字愈愈多多,即即有有效效精精度度愈愈高高。指指数数部部分分占占的位数愈多,则能表示的数值范围愈大。的位数愈多,则能表示的数值范围愈大。实实数数在在操操作作中中存存在在误误差差,例例如如:把把 111111.111 作作为为 float 型型数数据据,输输出出的的结结果果是是 111111.109 20C+程序设计四、字符型四、字符型 采采用用 ASCII 码码字字符符集集,即即用用 1 个个字字节节存存放放字字符符的的 ASCII 码值码值 2.3 2.3 基本数据类型基本数据类型分类标志符内存空间取值范围有符号字符型signedchar1-128127无符号字符型unsignedchar1025521C+程序设计2.3 2.3 基本数据类型基本数据类型数据数据类型型数据数据长度度适用范适用范围小数点后小数点后有效位数有效位数bool8 bits(1Byte)0或或10char8bit (1Byte)02550int32 bits(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)1.710-308 1.7103081622C+程序设计2.4 2.4 变量变量变量:在程序运行中其值可以改变的量变量:在程序运行中其值可以改变的量变量是存储信息的单元,它对应某个内存空间变量是存储信息的单元,它对应某个内存空间变量名代表其存储空间,程序能在变量中存储值和取出值变量名代表其存储空间,程序能在变量中存储值和取出值变量的定义:变量的定义: 数据类型数据类型 变量名变量名1=初值初值,变量名,变量名2=初值初值,;例:例: float r1=1.5f, r2=0.5f, r3; char ch=A;变量的初始化:为变量赋初值的过程,用赋值运算符变量的初始化:为变量赋初值的过程,用赋值运算符“=”进进展展定义的同时进行初始化定义的同时进行初始化单独进行初始化单独进行初始化int a ,b;unsigned long sum ;a = 123, sum=0 ;b = a ;23C+程序设计2.4 2.4 变量变量变量名的含义变量名的含义表示分配给变量的存储空间表示分配给变量的存储空间表示内存空间中存储的数据:变量的值表示内存空间中存储的数据:变量的值每个变量都有一个名字、一个数据类型和一个值每个变量都有一个名字、一个数据类型和一个值注意变量名与变量值的区别注意变量名与变量值的区别 3a变量名一个符号地址,在对程序编译时系统分配给它一个内存地址)变量值在程序中对变量取值,实际上是通过变量名找到相应内存地址,从其存储单元中读取数据)存储单元24C+程序设计2.4 2.4 变量变量变量名命名规定变量名命名规定由字母、下划线、数字组成,且第一个符号不能是数字由字母、下划线、数字组成,且第一个符号不能是数字不要与关键字、保留字重名;不要与关键字、保留字重名;中间不能有空格中间不能有空格C+C+是大小写敏感,即大写和小写字母是不同的是大小写敏感,即大写和小写字母是不同的变量名中不能包含变量名中不能包含”. ; , “ + -”. ; , “ + -”之类特殊符号之类特殊符号变量名不要与变量名不要与C+C+中的库函数、类名和对象名相同中的库函数、类名和对象名相同不要使用易混淆的字母不要使用易混淆的字母某些功能的变量采用习惯命名,如循环变量习惯用某些功能的变量采用习惯命名,如循环变量习惯用i,j,ki,j,k采用见名思义的原则采用见名思义的原则: sum: sum、namename、sexsex,不要太长,一,不要太长,一般以不超过般以不超过3131个字符为宜个字符为宜最好使用英文单词或其组合最好使用英文单词或其组合, ,切忌使用汉字或汉语拼音切忌使用汉字或汉语拼音25C+程序设计2.4 2.4 变量变量变量名命名风格变量名命名风格下划线和大小写通常用来增强可读性下划线和大小写通常用来增强可读性Unix风格:风格: variable_nameWindows风格风格(匈牙利命名法匈牙利命名法): chName, strName指出下列命名的正确性,指出下列命名的正确性,错误的指出原因错误的指出原因x_y,x1,X1,x,y姓名姓名2xvarname指出下列命名的正确性,指出下列命名的正确性,错误的指出原因错误的指出原因_y1Case,51select, A lot,-vvSin,cin,cout,stringD6Xy26C+程序设计2.4 2.4 变量变量匈牙利命名法匈牙利命名法标识符的名字以一个或者多个小写字母开头,用这些字母来指定数据标识符的名字以一个或者多个小写字母开头,用这些字母来指定数据类型类型在标识符内,前缀以后就是一个或者多个第一个字母大写的单词,这在标识符内,前缀以后就是一个或者多个第一个字母大写的单词,这些单词指出程序中该对象的用途些单词指出程序中该对象的用途常用的数据类型的标准前缀常用的数据类型的标准前缀ch 字符字符char)n 整数整数integer)b BOOLl 长整数长整数long)h HANDLE无符号无符号int)m_ 类成员变量类成员变量fn 函数函数function)例如,例如,nCount表示一个计数器的变量,数据类型是整型。表示一个计数器的变量,数据类型是整型。27C+程序设计#includeusing namespace std;int main( ) int price = 30; int num, total; /定义变量定义变量,在内存中开辟区间在内存中开辟区间 num=10; /变量赋值变量赋值,10为常量为常量 total=num*price; couttotal=total; /输出结果输出结果 return 0;其中:其中:num=10 total=num*PRICE 是赋值号,不同于数学意义上的等号!是赋值号,不同于数学意义上的等号!numtotal10300price302.4 2.4 变量变量28C+程序设计2.5 2.5 常量常量在程序运行时保持不变的值,称为常量在程序运行时保持不变的值,称为常量根据常量的数据类型,常量可分为整型常量、实型常量、字根据常量的数据类型,常量可分为整型常量、实型常量、字符常量、字符串常量、枚举常量符常量、字符串常量、枚举常量根据常量的声明,常量可分为文字常量和自定义常量根据常量的声明,常量可分为文字常量和自定义常量文字常量:在程序中出现的、代表数据的文字文字常量:在程序中出现的、代表数据的文字整型文字常量整型文字常量十进制:十进制:78,-132八进制:以数字八进制:以数字0开头开头,后跟一串八进制数字后跟一串八进制数字(注意:数字注意:数字0),如,如012 ( ),03256 ( ),0128 ()十六进制:以十六进制:以0x开头,后跟开头,后跟 09、AF 或或 af (数字(数字0,字,字母母x),如),如0x123(), 0xabc (), 01bc ( )10 进制数有正负之分,进制数有正负之分,8 进制、进制、16 进制只能表示无符号整进制只能表示无符号整数数29C+程序设计2.5 2.5 常量常量整型文字常量整型文字常量长整型常量长整型常量 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注意注意实数一律用十进制表示:实数一律用十进制表示:0x2.5 E的左右必须要有数字:的左右必须要有数字: E21E2),),2E2E+1、2E1)指数部分必须为整数指数部分必须为整数: 2.5E + 2.5 30C+程序设计#includeusing namespace std; int main() int int10,int8,int16; /定义定义3个整型变量个整型变量 int10 = 10; /默认为十进制默认为十进制 int8 = 010; /八进制八进制 int16 = 0x10; /十六进制十六进制 coutint10=int10endl; coutint8=int8endl; coutint16=int16endl; return 0;输出输出int10=10int8=8int16=162.5 2.5 常量常量31C+程序设计2.5 2.5 常量常量实型文字常量实型文字常量单精度单精度 float: float:一般在内存中占一般在内存中占 4 4 个字节,提供个字节,提供 7 7 位有效位有效数字数字双精度双精度 double double:一般在内存中占:一般在内存中占 8 8 个字节,提供个字节,提供 15 15 位有位有效数字效数字长双精度长双精度 long double long double:一般在内存中占:一般在内存中占 10 10 个字节,提供个字节,提供 19 19 位有效数字位有效数字在在C+C+中,一个实型常数如果没有任何说明,表示中,一个实型常数如果没有任何说明,表示doubledouble型;型;若要表示若要表示 float float 型数,则必须在实数后加上型数,则必须在实数后加上 f f 或或 F F;若要;若要表示表示 long double long double 型数,则必须在实数后加上型数,则必须在实数后加上 l l 或或 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表示表示)32C+程序设计#includeusing namespace std;int main( ) float a, b; double c, d; a=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 continue2.5 2.5 常量常量33C+程序设计2.5 2.5 常量常量字符文字常量字符文字常量用一对英文单引号括起来的单个字符或转义序列用一对英文单引号括起来的单个字符或转义序列单个字符:如单个字符:如 a, x, $转义序列转义序列 :以:以 开头后跟一个字符或几个数字开头后跟一个字符或几个数字n 回车键回车键, t tab键键ddd 1-3 位位 8 进制数所代表的字符进制数所代表的字符: 101与与A 、65表示同表示同一个字符,不需以一个字符,不需以 0 开头,表示范围为开头,表示范围为 000 377 (0255)xhh 1-2 位位 16 进制数所代表的字符进制数所代表的字符: x41 与与 A 、65 表表示同一个字符,示同一个字符, 242、362 、 xF2 表示表示 ,必须用,必须用x 或或 X引导,表示范围为引导,表示范围为x00 xff (0255)将一个字符常量赋值给字符变量,实际上并不是把该字符本将一个字符常量赋值给字符变量,实际上并不是把该字符本身放到内存单元中,而是将该字符的相应身放到内存单元中,而是将该字符的相应ASCII码整型数码整型数存入,即在内存中字符数据以存入,即在内存中字符数据以ASCII存储,即以整数表示存储,即以整数表示34C+程序设计2.5 2.5 常量常量字符文字常量字符文字常量例:例:char chVar = b,chVar1=n char chVar2=007; / 1-3 位位 8 进制数进制数 char chVar3=xff; / 1-2 位位 16 进制数进制数 char chVar4=97;C+中字符数据和整型数据之间可以相互赋值,但要注意其中字符数据和整型数据之间可以相互赋值,但要注意其表示的范围合理性表示的范围合理性 int a=b; / Ok 给一个整型变量赋一个字符值给一个整型变量赋一个字符值 char b=97; / Ok 给一个字符变量赋一个整型值给一个字符变量赋一个整型值 coutaendl; 结果为结果为 98 coutbendl; 结果为结果为 a0 与与 0 的区别的区别常用转义字符:一些特殊字符无法从键盘输入或者另有它常用转义字符:一些特殊字符无法从键盘输入或者另有它用用转义字符表示用用转义字符表示35C+程序设计#include using namespace std;int main() char c1,c2,c3,c4; char n1,n2; c1=a; /字符常量字符常量 c2=97; /十进制十进制 c3=x61; /转义字符转义字符 c4=0141; /八进制八进制 coutc1=c1tc2=c2endl; coutc3=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=a2.5 2.5 常量常量36C+程序设计2.5 2.5 常量常量字符串文字常量字符串文字常量用一对用一对 双引号双引号 括起来的一个或多个字符序列,如:括起来的一个或多个字符序列,如:China China , C Language , hello!, C Language , hello!字符串的存储:在内存中,依次存放组成字符串的每个字符字符串的存储:在内存中,依次存放组成字符串的每个字符的的ASCIIASCII码值,并且把码值,并且把 空字符空字符00(ASCIIASCII码值为码值为0 0加到字加到字符串的尾部,作为字符串的结束标志。符串的尾部,作为字符串的结束标志。字符串的长度字符串的长度: : 等于字符的个数等于字符的个数字符串存储时占内存的大小:字符串存储时占内存的大小: 字符串的长度字符串的长度+1+1不能将字符串常量赋值给字符变量,如不能将字符串常量赋值给字符变量,如 char ch = abcd ; char ch = abcd ;一个字符占一个内存单元,含有一个字符的字符串占一个字符占一个内存单元,含有一个字符的字符串占2 2个内存个内存单元,区分单元,区分AA与与A,0 A,0 、 0 0与与0 0HELLO037C+程序设计2.5 2.5 常量常量用户自定义常量用户自定义常量若希望变量的内容自初始化后一直保持不变,此时可以定若希望变量的内容自初始化后一直保持不变,此时可以定义一常量义一常量若程序中多处都要用到一个常数,此时应定义一常量以避若程序中多处都要用到一个常数,此时应定义一常量以避免常数值的不一致性免常数值的不一致性const float pi=3.14159;常量定义时必须初始化,此后程序中对其只能读不能修改常量定义时必须初始化,此后程序中对其只能读不能修改常量名不能放在赋值语句的左边常量名不能放在赋值语句的左边const float pi;pi = 3.14159;常量在编译时求值常量在编译时求值const int nSize=100*sizeof(int);const int nMax = fnMax(15,23); /fnMax用户自定义函数用户自定义函数38C+程序设计2.5 2.5 常量常量用户自定义常量用户自定义常量#defineC+ 为兼容为兼容 C 而保留而保留#define 称为编译预定义指令,其语法格式为称为编译预定义指令,其语法格式为#define 常量名常量名 字符串字符串#define PI 3.1415926常量名与字符串之间用空格分隔,行末不用分号,在编译常量名与字符串之间用空格分隔,行末不用分号,在编译预处理阶段进行字符串直接替换预处理阶段进行字符串直接替换在在C+ 编程中,常量定义应使用编程中,常量定义应使用 const 不用不用 define39C+程序设计#include using namespace std;#define PI 3.1415926 /自定义常量自定义常量int main() const int PRICE=30; /自定义常量,在程序中保持不变自定义常量,在程序中保持不变 int num, total; /定义变量定义变量,在内存中开辟区间在内存中开辟区间 num=10; /变量赋值变量赋值, 10 为文字常量为文字常量 total=num*PRICE; couttotal=total; /输出结果输出结果 float fR, fArea; /定义变量定义变量,在内存中开辟区间在内存中开辟区间 fR = 3.5f; /变量赋值变量赋值, 3.5f 为文字常量为文字常量 fArea = fR*fR*PI; coutArea=fArea; /输出结果输出结果 return 0;numtotal10300PRICE302.5 2.5 常量常量40C+程序设计#include using namespace std;#define PI 3.14156#define S Chinaint main() const float pi=3.14156;/变量作为常量使用变量作为常量使用 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.141562.5 2.5 常量常量41C+程序设计2.5 2.5 常量常量/用计算机计算圆的面积:用计算机计算圆的面积:#include using namespace std;int main() const double PI = 3.1415926; / Step 1: Read in radius double radius; cout radius; / Step 2: Compute area double area = radius * radius * PI; / Step 3: Display the area cout The area is area endl; return 0;42C+程序设计2.6 I/O2.6 I/O流控制流控制程序在执行期间,接收外部信息的操作称为程序的输入程序在执行期间,接收外部信息的操作称为程序的输入(Inpout);而把程序向外部发送信息的操作称为程序的输;而把程序向外部发送信息的操作称为程序的输出出(Output)。在在C+中没有专门的输入输出语句,所有输入输出是通过中没有专门的输入输出语句,所有输入输出是通过输入输出流来实现的。输入输出流来实现的。要使用要使用C+提供的输入输出时,必须在程序的开头增加两提供的输入输出时,必须在程序的开头增加两行:行: #include using namespace std;包含输入输出流的头文件为包含输入输出流的头文件为 iostream.h,有关包含文件的作,有关包含文件的作用,在编译预处理部分第用,在编译预处理部分第5章作详细介绍。章作详细介绍。43C+程序设计int a,b;cinab; /程序运行至此停下,等待从键盘输入变量值程序运行至此停下,等待从键盘输入变量值键盘输入:键盘输入:3 5 或:或:3 5 均可。均可。输入语句自动过滤空白字符输入语句自动过滤空白字符!a3键盘键盘b5键盘键盘输入语句:输入语句:cin输入十进制整数和实数输入十进制整数和实数: cin .2.6 I/O2.6 I/O流控制流控制44C+程序设计float c,d;cincd;char ch1,ch2;cinch1ch2;若输入:若输入:ab 则则ch1为为a, ch2为为b。若输入:若输入:a b 则则ch1为为a, ch2为为b。字符型变量过滤空白字符,字符型变量过滤空白字符,cin格式过滤空白字符!格式过滤空白字符!输入语句:输入语句:cincin浮点型数据同整型数据一样浮点型数据同整型数据一样字符型数据字符型数据2.6 I/O2.6 I/O流控制流控制45C+程序设计float a;int i1,i2;char ch1,ch2;cini1ai2ch1ch2;输入:输入:34 5.678 1a b i2: 1在缺省的情况下,在缺省的情况下,cin自动跳过输入的空格,换言之,自动跳过输入的空格,换言之,cin不能将输入不能将输入的空格赋给字符型变量;的空格赋给字符型变量;回车键也是作为输入字符之间的分隔符,也不能将输入的回车键字符回车键也是作为输入字符之间的分隔符,也不能将输入的回车键字符赋给字符型变量。赋给字符型变量。 a: 5.578i1: 34ch1: ach2: b2.6 I/O2.6 I/O流控制流控制输入语句:输入语句:cincin不同类型数据混合输入不同类型数据混合输入46C+程序设计若若要要把把从从键键盘盘上上输输入入的的每每一一个个字字符符,包包括括空空格格和和回回车车键键都都作作为为一一个个输输入字符赋给字符型变量时,必须使用函数入字符赋给字符型变量时,必须使用函数cin.get(),其格式为:,其格式为:cin.get();cin.get() 从从输输入入行行中中取取出出一一个个字字符符,并并将将它它赋赋给给字字符符型型变变量量,该该语语句句一一次只能从输入行中提取一个字符。次只能从输入行中提取一个字符。char c1;cin.get(c1);char ch1,ch2,ch3;cin.get(ch1);cin.get(ch2);cin.get(ch3);那么:那么:ch1:Ach2:空格空格ch3:B输入:输入:A B并且在输入缓冲区中保留回车键!并且在输入缓冲区中保留回车键!2.6 I/O2.6 I/O流控制流控制47C+程序设计输入语句:输入语句:cin输入十六进制或八进制数据:缺省情况下,系统约定输入的输入十六进制或八进制数据:缺省情况下,系统约定输入的整型数是十进制数据;当要求按八进制或十六进制输入数据整型数是十进制数据;当要求按八进制或十六进制输入数据时,在时,在 cin 中必须指明相应的数据类型:中必须指明相应的数据类型:hex 为十六进制,为十六进制,oct 为八进制,为八进制,dec 为十进制。为十进制。int i,j,k,l;cinhexi;/指明输入为十六进制数指明输入为十六进制数cinoctj;/指明输入为八进制数指明输入为八进制数cink;/输入仍为八进制数输入仍为八进制数cindecl;/指明输入为十进制数指明输入为十进制数当执行到语句当执行到语句cin时,若输入的数据为:时,若输入的数据为:11 11 12 12结果:结果:i: 17j: 9k: 10l: 122.6 I/O2.6 I/O流控制流控制48C+程序设计2.6 I/O2.6 I/O流控制流控制输入语句:输入语句:cin使用非十进制数输入时,要注意以下几点使用非十进制数输入时,要注意以下几点八进制或十六进制数的输入,只能适用于整型变量,不适八进制或十六进制数的输入,只能适用于整型变量,不适用于字符型变量,实型变量用于字符型变量,实型变量当在当在cin中指明使用的数制输入后,则所指明的数制一直有中指明使用的数制输入后,则所指明的数制一直有效,直到在接着的效,直到在接着的cin中指明输入时所使用的另一数制为止。中指明输入时所使用的另一数制为止。如上例中,输入如上例中,输入k的值时,仍为八进制。的值时,仍为八进制。输入数据的格式、个数和类型必须与输入数据的格式、个数和类型必须与cin中所列举的变量类中所列举的变量类型一一对应。一旦输入出错,不仅使当前的输入数据不正型一一对应。一旦输入出错,不仅使当前的输入数据不正确,而且使得后面的提取数据也不正确。确,而且使得后面的提取数据也不正确。cina b;cinab;int a, b;cinab;49C+程序设计输出语句:输出语句:cout与输入与输入 cin 对应的输出是对应的输出是cout 输出流输出流当要输出一个表达式的值时,可使用当要输出一个表达式的值时,可使用 cout 来实现,其一般格来实现,其一般格式为:式为:cout .;其中运算符其中运算符 “” 称为插入运算符,它将紧跟其后的表达式称为插入运算符,它将紧跟其后的表达式的值,输出到显示器当前光标的位置。的值,输出到显示器当前光标的位置。2.6 I/O2.6 I/O流控制流控制50C+程序设计int a=6;float f1=12.4;char s1 =abcd;coutatf1ts1endl;t为转义字符为转义字符Tab, endl为回车或为回车或n显示器显示器显示器显示器显示器显示器a6f112.4s100dcba612.4abcd2.6 I/O2.6 I/O流控制流控制51C+程序设计cout 将双引号中的字符串常量将双引号中的字符串常量 按其原样输出按其原样输出char ch1=a,ch2=b;coutc1=ch1tc2=ch2endl;c1=a, c2=b int i1=4,i2=5;float a=3.5;couta*i1=a*i1endla*i2=a*i2endl;a*i1=14a*i2=17.52.6 I/O2.6 I/O流控制流控制52C+程序设计2.6 I/O2.6 I/O流控制流控制 使用控制符使用控制符用于对用于对I/O流的格式流的格式进行控制进行控制在头文件在头文件 iomanip.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)左对齐左对齐setiosflags(ios:right)右对齐右对齐setiosflags(ios:uppercase)16进制数大写输出进制数大写输出setiosflags(ios:lowercase)16进制数小写输出进制数小写输出53C+程序设计2.6 I/O2.6 I/O流控制流控制输出语句:输出语句:cout输出八进制或十六进制数:控制符是输出八进制或十六进制数:控制符是 hex, oct和和dec,分别对,分别对应应16进制、进制、8进制和进制和10进制数的显示进制数的显示当在当在 cout 中指明使用的数制输出后,则所指明的数制一直中指明使用的数制输出后,则所指明的数制一直有效,直到在接着的有效,直到在接着的 cout 中指明输出时所使用的另一数制中指明输出时所使用的另一数制为止,如下例中,输出为止,如下例中,输出 j 的值时,仍为八进制。的值时,仍为八进制。cout dec iendl;cout hexiendl;cout oct iendl;cout j endl;10013e91751int i=1001,j=127;cout dec iendl;cout hexiendl;cout oct iendl;10013e9175117754C+程序设计2.6 I/O2.6 I/O流控制流控制输出语句:输出语句:coutcout设置值的输出宽度:在输出的数据项之间进行隔开的另一设置值的输出宽度:在输出的数据项之间进行隔开的另一种办法是指定输出项的宽度种办法是指定输出项的宽度setw(6)setw(6)指明其后的输出项占用的字符宽度为指明其后的输出项占用的字符宽度为6 6,即括号中,即括号中的值指出紧跟其后的输出项占用的字符位置个数,并向右的值指出紧跟其后的输出项占用的字符位置个数,并向右对齐,对齐,setw setw 是是“set width“set width的缩写的缩写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 _ _ _ _ _ _ _ _ 2455C+程序设计使用使用setw() 应注意以下三点:应注意以下三点:1、在在程程序序的的开开始始位位置置必必须须包包含含头头文文件件iomanip.h,即即在在程程序的开头增加:序的开头增加:#include 2、括括号号中中必必须须给给出出一一个个表表达达式式值值为为正正整整数数),它它指指明明紧跟其后输出项的宽度。紧跟其后输出项的宽度。3、该该设设置置仅仅对对其其后后的的一一个个输输出出项项有有效效。一一旦旦按按指指定定的的宽宽度输出其后的输出项后,又回到原来的缺省输出方式度输出其后的输出项后,又回到原来的缺省输出方式2.6 I/O2.6 I/O流控制流控制56C+程序设计2.6 I/O2.6 I/O流控制流控制输出语句:输出语句:cout控制浮点数值显示控制浮点数值显示setprecision(n) 控制输出流显示浮点数的数字个数,控制输出流显示浮点数的数字个数,C+默默认的流输出数值有效位是认的流输出数值有效位是6setprecision(n) 与与setiosflags(ios:fixed) 联合控制小数点右边联合控制小数点右边的数字个数的数字个数setprecision(n) 与与 setiosflags(ios:scientific) 联合控制指数联合控制指数表示法的小数位数表示法的小数位数VC6中中setiosflags(ios:scientific) 与与setiosflags(ios:fixed)不能不能连续使用,否则后者失效连续使用,否则后者失效 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;57C+程序设计2.6 I/O2.6 I/O流控制流控制输出语句:输出语句:cout设置填充字符:缺省时流使用空格符来保证字符间的正确设置填充字符:缺省时流使用空格符来保证字符间的正确间隔,间隔,setfill 用于设置非空字符来填充用于设置非空字符来填充int i=4,j=12,m=7,k=2;coutsetfill(*);cout setw(6) isetw(10)jendl;cout setw(5)msetw(10)j*kendl;cout setfill( );58C+程序设计2.6 I/O2.6 I/O流控制流控制输出语句:输出语句:cout强制显示小数点和符号:强制显示小数点和符号:要强制显示小数点,用要强制显示小数点,用 setiosflags(ios:showpoint) 标志标志要强制显示正数前的正号,用要强制显示正数前的正号,用 setiosflags(ios:showpos) 标标志志float fSum = 10.0/5;cout fSumendl;cout setiosflags(ios:showpoint) fSumendl;cout setiosflags(ios:showpos) fSumendl;pos: positive59C+程序设计2.6 I/O2.6 I/O流控制流控制输出语句:输出语句:cout ios:right, ios:left ios:uppercase, ios:lowercase ios: skipws 忽略前导空白忽略前导空白printf 与与 scanfC 语言中的标准输入输出函数语言中的标准输入输出函数包含在头文件包含在头文件 stdio.h 中中C+ 语言中已被语言中已被 I/O 流完全替代流完全替代60C+程序设计2.6 I/O2.6 I/O流控制流控制printf 与与 scanfprintf 的简单使用的简单使用%d或或%i :输出用十进制表示的:输出用十进制表示的int型数据型数据%u:输出用十进制表示的:输出用十进制表示的 unsigned 型数据型数据%o:输出用八进制表示的:输出用八进制表示的 unsigned 型数据型数据%x:输出用十六进制表示的:输出用十六进制表示的 unsigned 型数据型数据%f :以小数形式输出实数,并且自动按四舍五入形式保留:以小数形式输出实数,并且自动按四舍五入形式保留6位小数位小数; 如果输出的实数本身不足如果输出的实数本身不足6 位小数,则在小数后面位小数,则在小数后面自动补数字自动补数字0,以凑足,以凑足6 位。位。%e或或%E :以指数形式输出实数以指数形式输出实数%g:以小数或指数形式最合适的方式输出浮点数以小数或指数形式最合适的方式输出浮点数%c :输出一个字符:输出一个字符%s: 输出字符串输出字符串输出的八进制输出的八进制或十六进制不或十六进制不显示前缀符显示前缀符61C+程序设计2.6 I/O2.6 I/O流控制流控制#include int main() int a=10,b= -1; unsigned x=65535; printf(a=%dt a=%it , a, a); printf(a=%ot a=%xt a=%Xn,a,a,a); printf(b=%dt b=%in,b,b); printf(x=%ut x=%ot x=%xt x=%Xn,x,x,x,x); printf(b=%ot b=%xt b=%Xt x=%dn, b,b,b,x); return 0; 62C+程序设计小结与作业小结与作业这一节我们主要学习了。这一节我们主要学习了。C+C+语言中的保留字语言中的保留字基本数据类型基本数据类型变量变量常量常量I/OI/O流流作业作业教材教材P46P46:习题:习题 2.1 2.12.4,2.12,2.172.4,2.12,2.172.19,2.242.19,2.24教材教材P72P72:习题:习题 3.24,3.26 3.24,3.26预习实验指导书实验二预习实验指导书实验二预习教材第预习教材第2 2章:章:2.92.92.152.1563C+程序设计
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号