C++程序设计基础_第1页
C++程序设计基础_第2页
C++程序设计基础_第3页
C++程序设计基础_第4页
C++程序设计基础_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

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

文档简介

1第2讲C++程序设计根底——C++语言概述——数据类型和表达式——C++语句——C++输入输出——typedef语句、枚举类型2

C++语言概述

C++语言的兼容性:C++完全兼容C,很多用C编写的库函数和应用程序都可以为C++所用C++不是纯粹的面向对象的语言,它既支持面向对象程序设计,也支持面向过程设计3#include

<iostream.h>intmax(int

i,

int

j){

//A

if(i>=j)

return

i;

else

returnj;}void

main(void){

//B

cout<<″输入i,j:″;

//显示提示信息

int

i,j;

//说明变量

cin>>i>>j;

//从键盘上输入变量值

cout<<″max:″<<max(i,j)<<′\n′;

//输出提示和结果}【例】

一个简单的C++程序。注释编译预处理指令函数主函数426个小写字母

abcdefghijklmnopqrstuvwxyz26个大写字母

ABCDEFGHIJKLMNOPQRSTUVWXYZ10个阿拉伯数字

0123456789其他符号

+-*/=,._:;?\"'~|!#%&()[]{}^<>空格C++语言根本字符:C++的字符集5关键字又称保存字。是由系统定义的具有特定含义的英文单词。关键字不能另作他用C++区分大小写,关键字全部由小写字母组成。标准C++〔ISO14882〕定义了74个关键字,具体的C++编译器会有所不同6数据类型说明符与修饰符boolcharwchar_tclassconstdouble

enumfloatintlongshortsignedstructunionunsignedvoid

volatile存储类型说明符autoexterninlineregisterstatic访问说明符friendprivateprotectedpublic其它说明符asmexplicitnamespaceoperatortemplatethistypedeftypenameusingvirtualclass语句与标号breakcasecatchcontinuedefaultdoelseforgotoifreturnswitchthrowtry

while运算符及逻辑值deletefalsenewsizeoftrueC++常用关键字及分类

7标识符是程序员定义的“单词”,用来给变量、常量、数据类型、函数等命名合法标识符由字母或下划线开始,由字母、数字、下划线组成,其有效长度为1-31个字符,长度超过31个字符者只识别前31个字符,VC++标识符长度为1-247个字符。8标点符号标点符号:#(){},:;

“”

’?等标点符号的作用:有一定的语法意义。如字符和字符串常量分别用‘

’和“

”引起来对语法符号起分隔作用。如;等9C++中的数据类型单精度型float双精度型doubleC++的数据类型基本数据类型非基本数据类型数组type[]指针type*结构struct联合union枚举enum类class整型int字符型逻辑型bool无值型void实型单字符型char宽字符型wchar_t10类型名称占用字节数取值范围bool布尔型

1true,false(signed)char有符号字符型1-128

127unsigedchar无符号字符型10

255(signed)short(int)有符号短整型2-32768

32767unsignedshort(int)无符号短整型20

65535(signed)int

有符号整型4-231

(231-1)unsigned(int)无符号整型40

(232-1)(signed)long(int)有符号长整型4-231

(231-1)unsignedlong(int)无符号长整型40

(232-1)float实型4-1038

1038double双精度型8-10308

10308longdouble长双精度型8-10308

10308void无值型0无值VC++中根本数据类型11C++为强类型语言,所有数据的使用严格遵从“先说明后使用”的原那么,以便编译器进行编译C++的数据类型:根本数据类型亦称内置数据类型。C++为它们提供了内置的支持(数据表示、数据范围、数据操作),以完成各种允许的运算在C++的标准库中支持根本类抽象的组合,如字符串类,复数类等标准库类类型在内置数据类型和标准库类类型之间是复合类型〔Compoundtype〕,特别是指针和数组类型12

整型

整型:用来存放整数,整数〔有符号的整数〕在内存中存放的是它的补码。整型数据占用的字节数与机型有关,32位机上占用4个字节,短整型数据占用2个字节十进制整数:非0数字开头的整数八进制整数:以0开头,其余位为〔0~7〕十六进制整数:以0X或0x开头,其余位为 〔0~9、A~F或a~f〕整型算术运算:+-*/%13

字符型

可见字符:用单引号引起来。如:

chara=‘5’;

不可见字符:又称控制字符,用转义字符表示

如:charch=’\A’; charch1=‘\101’+1 charch2=‘\x41’

字符型:用来保存字符,存储的是该字符的ASCII码,对于单字节字符来说,占用一个字节。字符型数据从本质上说也是整数14

实型:用来存放实数,实数在内存中以标准化的浮点数存放,包括尾数、数符和阶码。数的精度取决于尾数的位数,32位机上实型为23位〔因标准化数的数码最高位恒为1,不必存储,实际精度为24位〕,双精度为52位

浮点型单精度实型:floatf1=23.1f,f2=8e-6;双精度实型:doublef3=34.5;长双精度实型:longdoublef4=1.9e+04L,f5=3.2;15逻辑型:也称布尔型,其取值为true〔逻辑真〕和false〔逻辑假〕,存储字节数在不同编译系统中可能有所不同,VC++6.0中为1个字节。布尔型在运算中可以和整型相互转化,false对应为0,true对应为1或非0无值型:主要用来说明函数的返回值类型根本数据类型还可以加上一些修饰词,包括:signed〔有符号〕、unsigned〔无符号〕、long〔长〕、short〔短〕其他根本类型16常量和变量

在程序中,常量和变量是用来表示数据的常量又分为文字常量、枚举常量、常变量

变量在程序中是指可以改变值的量变量必须用标识符进行标识,称为变量名变量有类型之分,如整型变量、字符变量等任何变量都必须先说明后使用;一是便于编译程序为变量分配空间,二是便于编译时进行语法检查17变量说明[存储类型]

数据类型

变量1[,变量2,

,变量n];

例:inti,j,k; //说明三个整型变量i,j,kfloatx,y,z; //说明三个单精度实型变量x,y,zstaticcharc1,c2;//说明两个静态字符型变量c1,c2doubledx;

//说明一个双精度型变量dx18变量初始化赋初值:定义变量时即给变量一个值称为变量初始化或给变量赋初值例: inta=3,b=4,c(5); floatx(3.0);charh=‘A’; 变量初始化可以防止引用到随机变量19文字常量文字常量:指程序中直接给出的量常量的值在程序执行过程中保持不变;并且存储在程序区,而非数据区;根据取值和表示方法的不同,可分为整型常量:各进制表示,末尾可加u,l,ul实型常量:一般形式或指数形式表示字符常量:一般字符和转义字符表示字符串常量:双引号表示,与字符常量有区别如:#define

PI

3.1420常变量用常量说明符const给文字常量起的名字〔标识符〕,因为其说明和引用形式很像变量,所以也称常变量例:constfloatPI=3.14159;constintNumber_of_Student=100;21常变量必须也只能在说明时进行初始化;常变量初始化之后,不允许再被赋值;常变量必须先说明后使用;常变量存储在数据区,并且可以按地址访问,编译时系统对常变量进行类型检查。C++建议使用常变量,而不要使用文字常量constfloatPI;PI=3.14; //error22引用变量已经定义的变量的“别名”

叫做引用变量类型&引用变量名=变量名;例:inta;int&r=a;23变量的存储类型auto自动存储,其存储空间可被假设干变量屡次覆盖使用register存放在通用存放器中,一般由程序自动选择存储extern在所有函数和程序段中都可引用static在内存中是以固定地址存放的,在整个程序运行期间都有效24

运算符和表达式运算符:在C++中对常量或变量进行运算或处理

的符号操作数:参与运算的对象优先级:指不同运算符在运算中的优先关系,

可以用序号表示,序号越小,优先级越高结合性:决定优先级相等的运算符组合在一起时

的运算次序,同一优先级的运算符有相

同的结合性表达式:由运算符、操作数及标点符号组成的,

能取得一个值的式子25C++中的运算符及其优先级和结合性优先级运算符功能说明结合性()

改变优先级

::

作用域运算符

[] 数组下标.->

成员选择符

.*->*

成员指针选择符*

间接访问&

取地址newdelete

动态内存分配12从左至右从右至左

sizeof

求所占内存字节数!

逻辑求反

~ 按位求反

++--

增1、减1运算符+-

取正、取负〔〕 强制类型326

*/%

乘法、除法、求余+-

加法、减法34567从左到右从左到右从左到右从左到右从左到右从左到右8910<<>>

左移位、右移位<<=小于、小于等于、

>>=

大于、大于等于==!=

等于、不等于&

按位与^

按位异或|

按位或从左到右从左到右||

逻辑或

?:

条件运算符12131415从左到右从右到左从左到右=+=-=*=/=%=&=^=|=<<=>>=

赋值运算符 ,

逗号运算符11&&

逻辑与从左到右从右到左优先级运算符功能说明结合性27sizeof()

运算符用于计算一个操作数类型或一个变量的字节数一般格式为:sizeof(数据类型)

sizeof(变量名)例如:sizeof(int)//值为4

sizeof(float)//值为4

doublex[10];

sizeof(x)/sizeof(double);//值为10

28一、算术表达式1、表达式中每个变量都有确定的值时才能进行表达式求值;2、C++中算术运算应注意数据溢出问题,即运算结果超出对应数据类型的表示范围。编译程序只会对除法运算时除数为0这种情况提示出错,因此,程序设计者必须在程序中解决检查并处理整数溢出问题由算术运算符连接的表达式+(取正号)

–(取负号)*/%+-

表达式29二、赋值表达式=1、赋值其意义是将赋值号右边的值送到左边变量所对应的单元中。赋值号不是等号,它具有方向性常量只能取用,不能赋值

constintPI=3.14159;inta=9*2/3,b;b=a*(a+9)/PI;302、左值与右值C++将变量名代表的单元称为“左值”,而将变量的值称为“右值”。左值必须是内存中一个可以访问且可以合法修改的对象,因此只能是变量名,而不能是常量或表达式例如,3.1415926=pi; //左值不能是常数x+y=z; //左值不能是表达式constintN=30;N=40; //左值不能是常变量313、赋值表达式和复合赋值表达式由赋值运算符或复合赋值运算符连接的表达式赋值表达式格式为:

变量=表达式例如:x=5+6;a=b=c=d+1;

复合赋值表达式格式为:

变量复合赋值运算符表达式

它等同于

变量=变量运算符表达式

例如:x+=5

等同于:x=x+532三、逻辑表达式及其求值优化

逻辑运算用于判断分析,运算符包括关系〔==>=<=><!=〕和逻辑〔!&&||〕运算符关系运算符完成两个操作数大小的比较,结果为逻辑值true(真)或false〔假〕。每种可比较大小的数据类型,都重载了关系运算符。不同类型,自动转换为同一类型后进行比较在C++中真对应1,假对应0;反过来,0对应假,非0值对应真33C++语言中的逻辑运算符a!=3不等于!=a==3等于==a<=3小于或等于<=a<3小于<a>=3大于或等于>=a>3大于>优先级例子名称逻辑运算符自左至右(x>2)‖(x<9)逻辑或(OR)‖(x>2)&&(x<9)逻辑与(AND)&&自右至左!(x>9)逻辑非(NOT)!结合性367111234例如:a+b>c+d//等同于(a+b)>(c+d),结果为0或1y=a>b //计算a>b的值0或1赋给y,y的值为0或1a>b>c //等同于(a>b)>c,先求a>b的值,//再将结果0或1与c比较大小设有定义floata=3.2;intb=5;那么:3>a>b //结果是?a5b3.23>F

即0>F即035例,21&&0 //逻辑与,21与0,结果为假:021||0 //逻辑或,21或0,结果为真:1!21 //逻辑非,21的非,结果为假:0逻辑表达式计算时,逻辑非优先级最高,关系运算其次,逻辑与和逻辑或最低36:inta=10,b=20,c=30;floatx=1.8,y=2.4;a<b&&x>y||a<b-!c按优先级与结合性,其求值顺序等同于:(a<b)&&(x>y)||(a<(b-(!c)))t1=1t2=0t4=0-&&t3=0t5=b<t6=1||

得整个表达式的值为:①②③⑥④⑤⑦137

逻辑表达式求值的优化:在求逻辑表达式值的过程中,一旦表达式的值能够确定,就不再逐步进行下面的运算。称为“求值优化”:inta=10,b=20,c=30;求:a<b||c++ //结果以及a,b,c的值t1=1①整个表达式的值为1可见:表达式c++已不需要计算所以: c不变仍为3038条件运算符:由问号“?”和冒号“:”组成它是C语言中唯一的一个三目运算符条件表达式:

表达式1?表达式2:表达式3;例,y=(x>5)?2:3.0;四、条件运算符和条件表达式

真(非0)假(0)表达式1

取表达式2的值作为条件表达式的值

取表达式3的值作为条件表达式的值39四、位运算c++语言提供字位运算,它对操作数的各个位进行操作位运算符含义结合性优先级~按位取反(单目)右结合2&按位与(双目)左结合8^按位异或(双目)9|按位或(双目)10>>右移位(双目)5<<左移位(双目)40例

设intx=31,y=-5,分别求~x,x&y,x^y,x|y,

x<<3,x>>3的值。

(31)2=0000000000011111(-5)2=1111111111111011~0=1 ~1=01、按位取反:~x~00000000000111111111111111100000~x=-320&0=0 0&1=0 1&0=0 1&1=12、按位与:x&y0000000000011111&11111111111110110000000000011011x&y=27410^0=0 0^1=1 1^0=1 1^1=03、按位异或:x^y0000000000011111^11111111111110111111111111100100x^y=-284、按位或x|y0|0=0 0|1=1 1|0=1 1|1=10000000000011111|11111111111110111111111111111111x|y=-14200000000000111110000000011111000x<<3=2485、左移x<<3二进制位同时右移指定位数,从右边移出的低位舍弃,空出的高位的处理:对于正数或无符号数补0;对于负数补100000000000111110000000000000011x>>3=36、右移x>>343位复合赋值运算符位复合赋值运算符含义例&=按位与赋值x&=y等价于x=x&y^=按位异或赋值x^=y等价于x=x^y|=按位或赋值x|=y等价于x=x|y>>=右移位赋值x>>=y等价于x=x>>y<<=左移位赋值x<<=y等价于x=x<<y44五、逗号表达式用逗号连接起来的表达式称为逗号表达式,〔C++中,逗号既是分隔符,又是运算符〕格式为:表达式1,表达式2,…,表达式n逗号表达式中的每一个表达式都会被运算,整个逗号表达式的值为最后一个表达式的值例如:a=(x=3,x+=6,5+6);//a=11x=9,45六、自增自减运算前置和后置运算:前置是先增减后引用,即先对变量自加或自减,用新的值参与其他运算;后置那么是先引用后增减,即用变量原来的值参与其他运算,然后再对变量进行自加或自减例如:inti=5,j=5,m,n;m=i++;//后置;相当于m=i;i=i+1;n=++j;//前置;相当于j=j+1;n=j;(X)m=i+++++j;n=i+++++j;n=i+++++j;意义:使变量当前值加1或减1,再赋给该变量要求:操作数只能是变量,不能是常量或表达式++ --46

算术运算问题1、整数的溢出2、浮点数的比较inta=100000,b=100000,intc=1000;cout<<a*b/c<<“\n”<<a*(b/c)<<endl;进行程序设计是应该充分考虑到每种数据类型的范围局限性doublea1=123456789.9*9;doublea2=1111111109.1;cout<<(a1==a2?”same\n”:”notsame\n”);cout<<(abs(d1-d2)<1e-05?”same\n”:”notsame\n”);141006510000000notsamesame47

算术类型转换和赋值类型转换1、混合运算的类型转换规那么2、赋值类型转换运算过程中,当某个二元运算符两边的操作数类型不同但属于类型相容时,系统先将精度低的操作数变换到与另一操作数精度相同,而后再进行运算C++系统可以进行自动类型转换和强制类型转换当赋值号的左值和右值类型不一致但属于类型相容时,由系统自动进行类型转换3、强制类型转换481、混合运算的类型转换规那么charshortintlongunsignedcharunsignedshortunsignedintunsignedlongfloatdoublelongdouble数据类型转换方向49〔1〕字符可以作为整数参与数值运算,整数值为其ASCII码〔2〕操作数为字符或短整型时,系统自动变换成整型〔3〕操作数为实型时,系统自动变换成双精度型〔4〕其余情况,当两操作数类型不同时,将精度低〔或表示范围小〕的操作数的数据类型变换到与另一操作数类型相同再进行运算例:charc1=‘A’,c2=‘a’;inti1=0,i2=1;floatx1=2.1,x2=2.5;x2=c1*i1+c1*x1+c1*c2502.赋值类型转换1、实型数赋给整型变量:取整;注意溢出2、整型数赋给实型变量:先转换为实型数3、字符型数赋给整型变量:ASCII码为依据;分为两种情况:符号位是0或1时不同:假设符号位为1,那么低位字节不变,高位字节全部置1再赋值4、绝对值较大的数赋给表达范围较小的数据类型时,注意溢出515、赋值运算中,当左值与右值类型不一致时,系统将按照左值的类型,自动进行强制转换例如:

设有以下定义

doublex=2.3,y;inti=2,j;(1)j2.3x2.3……22(1)j=x; (2)y=i;由系统按左值j、y类型自动完成强制转换功能(2)y2i2……2.02.0523、强制类型转换强制类型转换运算符格式为:

(type)表达式

type(表达式)作用:将表达式强制转换为type类型, 但表达式的值及其类型不变例:

inta=7,b=5;floatx;x=a/b //值为1

x=float(a)/(float)b //值为1.4x=float(a)/b //值为1.453说明:〔1〕强制类型转换不改变表达式本身的值类型,而是产生一个临时变量,用来暂存转换后的值,该临时变量引用后即自动释放〔2〕强制类型转换符优先级较高,只对紧随其后的表达式起作用,而对其他局部不起作用例 (int)x*y+9.854语句1说明语句:定义语句和声明语句;2表达式语句:表达式;2空语句:;3复合语句:{//假设干语句}过程控制语句:过程控制语句用来控制或改变程序的执行方向;5输入输出语句:I/O流

定义语句

声明变量/常变量/对象/函数的名称

给该名称分配内存空间例,intx(6),m=4;

说明语句

声明语句

只起声明作用,不分配内存空间例,externintx;过程控制语句算法描述的三种根本结构(1)

顺序结构(2)分支结构(3)循环结构if if~else

switch条件运算符(?:)for do~while while流程图符号起止框过程联系库存数据决策磁盘数据显示流程线注释58(1)

顺序结构块1块2块3流程图num1

15;【例】

求两数之和。num2

20;sum

num1+num2;输出sum;59(2)分支结构流程图条件块1块2真假输出maxmax

zmax

ymax

x【例】

输入三个数,输出其中的最大数。x

7;y

12;z

10;x>y?z>max

?真假真假if if~else switch条件运算符(?:)60if(表达式)

语句1;if(表达式)

语句1;

else

语句2;if(表达式1)语句1;

elseif(表达式2)语句2;

elseif

else语句n;61赋值表达式也可作为条件表达式

if(a=9){…}不等式连写的错误

if(a<b<c){…}逻辑短路

if(b+2&&a/b>2)cout<<“ok\n”;逻辑推演设计条件表达式时须注意的问题:62//方法2:采用if中嵌套形式int

main(){

inta,b,c,max; cout<<“输入三个整数:"; cin>>a>>b>>c;

cout<<"a="<<a<<“\tb="<<b<<“\tc="<<c<<endl;

if(a>b)if(a>c)max=a;//a>b且a>c

elsemax=c;//a>b且a<c

else

if(b>c)max=b;//a<=b且b>c

elsemax=c;//a<=b且b<c cout<<"最大数max="<<max;

return0;}【例】63//方法3:采用if-else嵌套形式int

main(){

inta,b,c,max; cout<<"输入三个正数:"; cin>>a>>b>>c;

cout<<"a="<<a<<“\tb="<<b<<“\tc="<<c<<endl;

if(a>b&&a>c)max=a;

else

if(b>a&&b>c)max=b; elsemax=c; cout<<"最大数为:max="<<max;

return0;

}【例】64switch(表达式){

case

常量表达式1:[语句序列1;][break;]……

case

常量表达式n:[语句序列n;][break;][default:语句序列;]}65【例】

一个运输公司对用户收取运费的规定如下所示,用s表示里程数km,d表示优惠率。设每公里的根本运费为p元/公里,货物重为w吨,那么总运费的计算公式为:f=p×w×s×(1-d)。编写计算运费的程序。s<250 0250≤s<500 2%500≤s<1000 5%1000≤s<2000 8%2000≤s<3000 10%3000≤s 15%66输出f250≤s<500

s<250

d=0d=2%

2000≤s<3000d=5%

d=8%

假假假真真真500≤s<1000

1000≤s<2000

d=10%

d=15%

假假真真输入sf=p×w×s×(1-d)选择结构须考虑:1.判断条件2.实现分支结构语句的构成及选择67main() {intc,s; floatp,w,d,f;cout<<"inputtheprice,weightandkilometersofthedistance:\n";

cin>>p>>w>>s; if(s>=3000)c=12;elsec=s/250; switch(c)

/*判断c的值*/ {case0:d=0;break; /*c的值为0时*/ case1:d=2;break; /*c的值为1时*/ case2:case3:

d=5;break; /*c的值为2、3时*/ case4:case

5:case6: case7:d=8;break; /*c的值为4、5、6、7时*/ case8:

case

9:

case

10: case11:

d=10;break;/*c的值为8、9、10、11、12时*/ case12:d=15;break; }

f=p*w*s*(1-d/100.0);

cout<<“freight=%15.4f\n“<<f; }

68【例】

设计一个计算器程序,实现加、减、乘、除运算。分析:读入两个操作数和运算符,根据运算符完成相应运算。#include

<iostream>usingnamespace

std;int

main(){float

num1,num2;char

op;cout<<"输入操作数1,运算符,操作数2:"<<endl;cin>>num1>>op>>num2;switch(op){case'+':cout<<num1<<op<<num2<<"="<<num1+num2<<endl;break;case

'-':cout<<num1<<op<<num2<<"="<<num1-num2<<endl;break;case

'*':cout<<num1<<op<<num2<<"="<<num1*num2<<endl;break;case

'/':cout<<num1<<op<<num2<<"="<<num1/num2<<endl;break;default

:cout<<op<<"是无效运算符!";}return

0;}69(3)循环结构流程图条件块真假for do~while while【例】求4个整数的和。

count

4sum

0sum

sum+xcount

count-1x

输入一个整数输出sumcount>0?真假70while

(表达式){

循环体语句;}do {

循环体语句;}while(表达式

);for(

表达式1;

表达式2;

表达式3)

{循环体语句;}嵌套循环:当循环语句中的循环体中又有循环语句时,就构成了嵌套循环71for语句、while语句、do/while语句比较inti=1,sum=0;

//循环初始条件while(i<=4){sum+=i;i++;//修改循环条件

}inti=1,sum=0;//循环初始条件do{

sum+=i; i++;//修改循环条件

}while(i<=4);inti,sum=0;for(i=1;i<=4;i++){ sum+=i;}/*习惯上:表达式1:循环初始条件;表达式2:循环终止条件;表达式3:修改循环条件*/72【例】

求1+2+3+4+…+100的值。#include

<iostream>usingnamespace

std;constint

n=100;

//用常变量利于修改程序int

main(){

inti=1,sum=0;//循环初始条件

while(i<=n){

sum+=i;

i++;

//修改循环条件

}cout<<"sum="<<sum<<endl;

return

0;}73【例】打印如以下图形。*******************************************************#include<iostream>#include<iomanip>usingnamespacestd;intmain(){int

i,j;for(i=1;i<=5;i++){//外层循环

for(j=1;j<i;j++)cout<<"";//输出空格

for(j=1;j<=11;j++)cout<<"*";//输出*

cout<<endl; //准备输出下一行

}return

0;}74

转向语句〔1〕break语句:只能用在switch语句和循环语句中,用来跳出switch语句或提前终止循环,转去执行switch语句或循环语句之后的语句例: for(;;){ … if(<表达式>)break; … }75〔2〕continue语句:只能用在循环语句中,用来终止本次循环。当程序执行到continue语句时,将跳过其后尚未执行的循环体语句,开始下一次循环continue语句与break语句的区别在于,continue语句结束的只是本次循环,而break结束的是当层循环例:for(I=1;I<=100;I++){if(I%3!=0)continue;cout<<l<<endl;}76〔3〕goto语句:和标号语句一起使用,所谓标号语句是用标识符标识的语句,它控制程序从goto语句所在的地方转移到标号语句处。goto语句会导致程序结构混乱,可读性降低,一般不提倡使用goto语句。但在多层循环嵌套中,要从深层地方跳出所有循环,如果用break语句,不仅要使用屡次,而且可读性较差,这时goto语句可以发挥作用77〔4〕return语句:用于结束函数的执行,返回调用者,如果是主函数,那么返回至操作系统利用一个return语句可以将一个数据返回给调用者。通常,当函数的返回类型为void时,return语句可以省略,如果使用也仅作为函数或程序结束的标志78输入流对象cin:cin用来在程序执行期间给变量输入数据cin>>变量名1[>>变量名2>>…>>变量名n];

输出流对象cout:cout实现将数据输出到显示器的操作cout<<表达式1[<<表达式2<<…<<表达式n];

使用时必须在程序开头包含头文件:#include

<iostream.h>或者写为

#include

<iostream>

usingnamespace

std;C++输入输出简介79数据的输入输出cin与cin.get()的区别:〔1〕cin例: charc1,c2,c3; cin>>c1; //A cin>>c2>>c3; 输入:Abc<CR>那么cin分别将字符A、b、c赋给变量c1、c2、c3cin自动跳过输入的空白字符〔包括空格,制表,backspace和回车等〕1.字符的输入输出80〔2〕cin.get()例: charc1,c2,c3,c4; cin.get(c1); //B cin.get(c2); cin.get(c3);假设输入:Ab<CR>那么执行结果是:字符′A′、空格、字符′b′分别赋给变量c1、c2、c3;输入行中仍保存回车符cin.get()把从键盘上输入的所有字符,包括空白字符,都作为输入字符赋给字符变量81

字符的输出:使用cout假定字符c1、c2、c3的值分别为字符′a′、′b′和′c′,执行以下语句:cout<<c1<<′\t′<<c2<<′\n′;cout<<c3<<endl;cout<<′O′<<′k′<<endl;屏幕上将输出:a bcOk输出时字符之间是无间隔的,如果想让字符间有间隔,必须输出间隔符822.字符串输入输出输入:常用函数getline()cin.getline(char[],int)其中第一个参数是已经定义的字符数组名,第二个参数是读入字符的最多个数n〔包括字符串结束符‘\0’〕。getline()输入以用户按下回车键作为结束输出:常用cout输出字符串。双引号中的字符串常量照原样输出,程序中通常通过输出字符串常量来输出一些提示信息。字符数组将输出串结束符前所有字符83说明:函数getline()保证在执行时总会为字符串的结束符保存一个字节。当键盘的输入字符〔字节〕数多于(n-1)时,后面的字符不会进入字符数组,字符串结束符自动加在字符数组的最后一个字节中。当输入字符数少于该值时,字符串结束符自动加在输入到字符数组中的最后一个字符的后面例:charcity[11];cin.getline(city,11);//输入最多5个中文字cout<<“城市名:“<<city<<endl;84例inti,j;floatx,y;cout<<”Inputi,j,x,y:”<<endl;cin>>i>>j; cin>>x>>y; cout<<”i=”<<i<<′\t′<<”j=”<<j<<endl;cout<<”x+y=”<<x+y<<endl;假设输入:10204.58.6<CR>那么程序输出:i=10 j=20x+y=13.13.十进制数据的输入输出85如果要求按八进制或十六进制输入输出,在cin或cout中必须指明相应的数据形式,oct为八进制,hex为十六进制,dec为十进制

输入输出的格式控制(1)各种进制数据的输入输出86例inti,j,k,l;cout<<”Inputi(oct),j(hex),k(hex),l(dec):”<<endl;cin>>oct>>i; //输入为八进制数cin>>hex>>j; //输入为十六进制数cin>>k; //输入仍为十六进制数cin>>dec>>l; //输入为十进制数cout<<”hex:”<<”i=”<<hex<<i<<endl;cout<<”dec:”<<”j=”<<dec<<j<<′\t′;cout<<”k=”<<k<<endl;cout<<”oct:”<<”l=”<<oct<<l;cout<<dec<<endl; //恢复十进制输出状态87执行时输出:Inputi(oct),j(hex),k(hex),l(dec):此时从键盘输入:0320x3f0xa017<CR>那么输出结果为:hex:i=1adec:j=63 k=160oct:l=21注意:在cin或cout中指明数制后,该数制将一直有效,直到重新指明用其他数制特别注意:输入数据的格式、个数和类型必须与cin中的变量一一对应,否那么不仅使输入数据错误,而且影响后面其他数据的正确输入88为了使数据间隔开,可以用C++提供的函数setw()

指定输出数据项的宽度。例inti=2,j=3;floatx=2.6,y=1.8;cout<<setw(6)<<i<<setw(10)<<j<<endl;cout<<setw(10)<<i*j<<endl;cout<<setw(8)<<x<<setw(8)<<y<<endl;输出结果为:

温馨提示

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

评论

0/150

提交评论