C++复习知识点1Word文档下载推荐.docx
《C++复习知识点1Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C++复习知识点1Word文档下载推荐.docx(30页珍藏版)》请在冰豆网上搜索。
4byte(PC)–231~(231-1)
长整型long:
long/longint4byte(PC)–231~(231-1)
短整型short:
2byte(PC)-215~(215-1)
(3.1.1)整数运算时要注意数据的表示范围。
如整数用两个字节表示,正整数32767加1的结果为-32768。
这称为整数运算的溢出,系统不检查这样的错误,程序员必须自己保证程序中不出现这样的错误。
(3.1.2)在某些应用中,不可能出现负数,则整型数中有一半的数值范围是被浪费的。
因此在C/C++中可以将所有的数都看成正整数,称为无符号数。
无符号数的定义:
在各种整数类型前加上关键词unsigned,变成unsignedint,unsignedshort,unsignedlong
unsignedint0~232-1
unsignedshort0~65535
unsignedlong0~232-1
(3.2)实型:
以浮点表示,操作类似于整型,浮点数无法精确表示。
(3.2.1)浮点类型的分类:
单精度float:
占用4字节,3字节尾数,1字节指数,精确度7位范围10-38~1038
双精度double:
占用8字节,5字节尾数,3字节指数,精确度15~16位,范围10-307~10308
(3.3)字符型(char):
存放一个字母或符号,占一个字节,存放的是字符的内码。
可执行比较、连接等运算。
具有双重属性:
整数属性和字符属性,整数属性:
字符类型即单字节的整数类,字符属性:
数据值即为相应字符的Ascii码。
字符类型名:
char。
可分为可打印字符:
小写字母、大写字母、数字、标点符号、空格等;
非打印字符:
换行和报警字符或响铃等控制字符
(3.3.1)PC机中都用ASCII码表示,特性:
数字‘0’到‘9’是顺序存放的,字母被分成二段:
大写的和小写的。
大写字母是连续的,小写字母也是连续的
(3.3.2)一些非打印和难以打印的字符需要用转义序列(escapesequeace)表示。
反斜杠符号\称为转义字符(escapecharacter)。
如换行符写为’\n’,表示换行。
虽然它由两个字符\和n来描述,但它表示一个ASCII字符。
警告字符\a可以表示成:
’\007’,’\07’,’\7’。
双引号的单字符表示:
可以写’”’,也可以写’\”’。
\ddd表示1到3位八进制数代表的字符。
\xhh表示1到2位十六进制数代表的字符。
\t表示水平制表。
\\表示反斜杠\
(3.4)布尔型(bool):
只有“真”、“假”两个值。
可执行判断运算。
如boolflag=true;
(3.5)字符串(string):
是类类型,用双引号“”表示,可执行字符串比较,连接
应用时要加#include<
string>
如stringstr=“dfhdsf”;
内部用’\0’表字符串的结束
(3.6)sizeof运算符用来了解某一类型或某一表达式占用的内存量。
sizeof运算符的用法:
sizeof(类型名)或sizeof(表达式)
如:
sizeof(float):
表示float类型的变量占用的内存量。
sizeof(’a’+15):
表示表达式’a’+15的计算结果所占的内存量。
检查字符串的长度用strlen(),如strlen(“asdfld”);
4.常量:
值的直接表示。
如1、3、1.57、‘A’等,又称直接量。
(4.1)整型常量可用十进制、八进制和十六进制表示:
如十进制:
123,-234;
八进制:
0123十六进制:
0x123,0x3a2f
(4.2)浮点数常量有两种表示法:
(1)十进制表示:
1.23,3.14;
(2)科学计数法:
尾数e指数123e2=123002.25e-3=0.00225;
注意:
尾数不能为空,指数必须为整数
(4.3)字符常量:
‘a’,‘S’,‘2’等用一对单引号括起来的数据。
字符串常量用双引号
(4.4)命名常量:
为值指定一个描述性的文字,增加程序的可读性。
在C++语言中,用const修饰,如constdoublePI=3.14;
见PI即知3.14。
注意一般变量名需大写,如PI。
5.算术运算符:
+(加)-(减)*(乘)/(求商)%(求余)
(5.1)“-”可为二元运算符,也可为一元运算符,其余所有的算术运算符都是二元运算符。
(5.2)优先级:
高*/%,低+--
(5.3)整型与整型数运算,结果为整型,如5/2=2;
整型与浮点数运算,结果为浮点数,如5/2.0=2.5;
字符与整型数运算,结果为整型;
字符与浮点数运算,结果为浮点数。
浮点数与浮点数运算,结果为浮点数。
6.关系运算符:
>
>
=,==,<
=,<
!
=
(6.1)优先级:
高于赋值运算符,低于算术运算符。
关系运算符内部:
==和!
=较低
(6.2)关系表达式:
用关系运算符将二个表达式连接起来称为关系表达式。
关系表达式的结果是true或false。
“等于”运算符是由两个等号组成。
常见的错误是在比较相等时用一个等号。
==(相等),=(赋值)
7.逻辑运算符:
&
(and)||(or)!
(not)
(7.1)优先级:
!
高于关系运算符高于&
高于||
(7.2)逻辑表达式:
由逻辑运算符连接起来的表达式,其结果为“真(true)”或“假(false)”
逻辑表达式在执行时,先处理左边。
如左边已能决定此逻辑表达式的结果,则右边不执行。
因此,在&
逻辑表达式中,应把false可能性较大的条件放在左边,在||表达式中,应把true可能性较大的条件放在左边,这样可以减少程序执行的时间
8.赋值运算符:
=的优先级比算术运算符低
(8.1)赋值语句:
把一个值赋给一个变量。
如x=y+z;
x=3.14;
赋值语句的左边是变量,右边是表达式。
(8.2)赋值表达式格式:
<
变量>
=<
表达式>
如x=x+2。
作用:
将右边的表达式的值存入左边的变量,整个表达式的值是右边的表达式的结果。
赋值运算符是右结合的
(8.3)左值(lvalue):
在C++中,能出现在赋值运算符左边的表达式称为左值
右值(rvalue):
赋值运算符右边的表达式的值
(8.4)赋值语句:
赋值表达式后面加上分号。
(8.5)将赋值表达式作为更大的表达式的一部分。
a=(x=6)+(y=7)等价于分别将x和y的值设为6和7,并将6和7相加,结果存于变量a
(8.6)其他运算符与赋值运算符结合的运算符称为复合赋值运算符。
变量op=表达式;
等价于:
变量=变量op表达式;
常用的复合赋值运算符有:
+=,-=,*=,/=,%=如:
balance+=deposit;
balance-=surcharge;
x/=10;
salary*=2;
(8.7)赋值和运算时的自动类型转换,在进行赋值操作时,会发生类型转换,将取范围小的类型转为取值范围大的类型是安全的反之是不安全的,如果大类型的值在小类型能容纳的范围之内,则平安无事
强制类型转换:
①(类型名)(表达式);
或类型名(表达式);
如z=(double)x/y;
②静态转换(static_cast):
用于编译器隐式执行的任何类型转换
转换类型<
类型名>
(表达式)如z=static_cast<
double>
(x)/y;
v单个分号组成的语句成为空语句
v用{}括起来的一组语句称为复合语句。
在逻辑上看成一个语句。
v复合语句可以放在任何单语句出现的地方。
v在复合语句中可以定义变量,但必须定义在最前面。
v逗号表达式语句格式:
表达式1,表达式2,…,表达式n
v逗号运算符的优先级是所有运算符中最低的如a的初值为0,则表达式a+=1,a+=2,a+=3,a+=4,a+=5的结果为15
v前置++i,---i(先执行i+1或i-1,再使用i值)
v后置i++,i---(先使用i值,再执行i+1或i-1)
9.控制语句:
改变程序中语句的执行次序。
(9.1)if语句:
①两个分支:
条件测试为true时所执行的程序块叫做then子句,条件为false时执行的语句叫做else子句。
格式
(1)if(条件测试)语句;
即else语句可省略
格式
(2)if(条件测试)语句1;
else语句2;
eg.if(grade>
=60)cout<
“passed”;
elsecout<
“failed”;
②多分支语句:
条件1为true时所执行的程序块1,条件1为false但满足条件2时执行的语句块2,。
依次类推,条件n-1为false但满足条件n时执行else语句。
常见的有 3分支语句:
if—elseif-else。
=90)cout<
“A”;
elseif(grade>
=80)cout<
“B”;
=70)cout<
“C”;
“D”;
”E”;
(9.2)条件语句使用注意
①条件的结果值应该是true或false,它们是C++中bool类型的值
②条件可为任意表达式,不一定是关系表达式。
0为false,非0为true。
③if语句可以没有else子句。
合理的缩排。
④if语句的then子句和else子句含有if语句,称为if语句的嵌套。
egif(x<
100)
{
if(x<
90)语句1;
elseif(x<
80)语句2;
else语句3;
}
else语句4;
⑤歧义性:
如最后一个else跟哪个if配对.。
egif(y!
=0)
if(x!
=0)result=x/y;
elsecout<
“error:
y==0”<
endl;
配对原则:
每个else子句是和在它之前最近的一个没有else子句的if语句配对。
⑥在每个if-else语句后加一对大括号{}是一种良好习惯,特别是有两个以上的复合语句需要执行时。
(9.2)条件表达式:
更加简练的用来表达条件执行的机制
?
:
运算符:
问号冒号运算符形式:
(条件)?
表达式1:
表达式2
eg:
max=x>
y?
x:
y;
执行过程:
首先计算条件值。
如果条件结果为true,则计算表达式1的值,并将它作为整个表达式的值。
如果条件结果为false,则整个表达式的值为表达式2的值。
(9.3)Switch–case语句:
又称开关语句。
switch(表达式)
{case常量表达式1:
语句1;
break;
case常量表达式2:
语句2;
case常量表达式n:
语句n;
default:
语句n+1;
}
使用注意:
①表达式应该是常量表达式,一般为整型表达式,字符
②case后跟break表示结束switch语句,否则一直执行,直到遇到break或语句结尾。
③case与default无顺序要求,但一般default在最后。
④default表示除case标号以外的其他情况。
10.循环语句:
一个完整的循环结构一般由四部分组成:
循环体、循环控制条件、循环变量的初始化、循环变量的增值
其中,循环体是需要重复执行的操作序列;
循环控制条件是重复执行循环体所需的条件,即当条件成立时执行循环体,否则结束循环;
循环变量是决定循环条件是否成立的变量;
循环变量的增值反映了循环变量的改变规律,它使循环变量的值向着使循环结束的方向改变;
循环变量的初始化是指在进入循环前,给循环变量赋初值,否则首次进入循环时,无法确定循环控制条件是否成立。
(10.1)For语句:
主要用于计数循环
v格式:
for(表达式1;
表达式2;
表达式3)语句;
or{语句快;
可以理解为:
for(循环变量赋初值;
循环条件;
循环变量增值)
符合循环条件时的执行语句
v循环体可以是复合语句或空语句。
v循环里所有语句的一次完全执行称为一个循环周期。
v执行过程:
先执行表达式1,再执行判断表达式2,如果为true,执行一次循环体(即一个循环周期),接着执行表达式3,然后重新执行判断表达式2,若为true,又执行一次循环体,重复直至判断表达式2为false,,最后跳出整个循环。
若开始执行条件表示2为false,循环体一次也不执行。
vFor循环的三个表达式可以是任意表达式。
三个表达式都是可选的。
v如果循环不需要任何初始化工作,则表达式1可以缺省。
如循环前需要做多个初始化工作,可以将多个初始化工作组合成一个逗号表达式,作为表达式1。
如for(i=1,s=0;
i<
=10;
++i)s+=i;
v表达式2也不一定是关系表达式。
它可以是逻辑表达式,甚至可以是算术表达式。
当表达式2是算术表达式时,只要表达式的值为非0,就执行循环体,表达式的值为0时退出循环。
v如果表达式2省略,即不判断循环条件,循环将无终止地进行下去。
无终止的循环称为“死循环”,最简单的死循环是for(;
;
);
v表达式3也可以是任何表达式,一般为赋值表达式或逗号表达式。
表达式3是在每个循环周期结束后对循环变量的修正。
表达式3也可以省略,此时做完循环体后直接执行表达式2。
如从1加到100,可以写为S=0;
for(i=1;
=100;
){s+=i,i++;
}或s=0;
s+=i,i++);
v将一个for循环嵌入到另一个for循环中,内层的for循环在外层循环的每一个周期中都将执行它的所有的周期,每个for循环都要有一个自己的循环变量以避免循环变量间的互相干扰。
其它循环嵌套类似执行。
(10.2)While语句:
与for循环等价,可相互代替。
while(表达式)语句;
or{语句块;
}
先计算出条件表达式的值。
如果是false,循环终止;
如果是true,整个循环体将被执行,而后又回到while语句的第一行,再次对条件进行检查,若为true,接着执行循环体,重复直到条件为false,,跳出整个循环。
v用途:
用于循环次数不定的循环。
循环是否结束取决于某一个变量的值(标记控制重复)
v在for和while语句之后一般没有分号,有分号表示循环体就是分号之前的内容(空循环体)
(10.3)Do-While语句
do语句;
}while(表达式);
首先执行语句,然后判断表达式的值。
如果表达式为0,继续向下执行,否则,再次执行语句,再次判断表达式的值
用于至少执行一次的循环。
注意后面有分号;
11跳转语句:
vbreak语句:
跳出整个循环或switch语句。
若有多重循环,跳出含break最近的循环体。
vcontinue语句:
跳出当前本次循环,接着判断是否执行下次循环周期。
12几种典型的循环。
注意格式及应用
v输入验证循环:
以下两种等价,右边一个常用
cout<
"
请输入半径:
//提示输入do{cout<
cin>
>
radius;
cin>
radius;
while(radius<
0)//当radius<
0,重复输入,直到>
0}while(radius<
0)//当
{cout<
radius<
0重复输入,直到>
,area=PI*radius*radius;
area=PI*radius*radius;
v哨兵循环以下四个等价,后面两个常用
"
输入n个整数:
//提示用户输入do{
num;
cout<
输入一个正数"
while(num!
=-1)//当输入值不等于哨兵值时,继续输入cin>
{sum+=num;
//处理数据sum+=num;
输入下一个整数:
//提示用户继续输入}while(num!
=0);
//当输入值
cin>
不等于哨兵值时,继续输入
while(true)//或while
(1)for(;
;
)
{{
输入一个正整数:
//提示用户并读入数据cout<
if(num==-1)break;
//if(num==标志)跳出;
sum+=num;
}}
v查询循环★累加循环p=0;
charans;
//用于用户响应for(inti=1;
i<
=N;
i++)
do{cout<
//提示输入p=p+i;
radius;
★累乘循环:
p=1
area="
<
area<
for(inti=1;
i++)
doyouagain?
//询问提示p=p*i;
ans;
//询问输入
}while(ans=='
Y'
||ans=='
y'
//询问循环
v编译(compiler):
将高级语言的程序翻译成机器语言,分为解释执行,编译执行
v连接(link):
将目标程序与已有的其它目标程序连接起来,产生一个可执行的程序
v输出流是传给显示器的数据流,将变量或表达式的内容显示在显示器上
格式
Ø
输出一个变量的值:
a;
输出多个变量的值:
a<
b<
c;
输出表达式的结果:
“Helloworld\n”<
endl
上述情况的组合:
‘+’<
‘=’<
a+b<
endl;
v键盘流入的数据流,将键盘输入的数据存入变量
变量1>
变量2>
…>
变量n;
如cin>
a;
当程序执行到cin时会停下来等待用户的输入,后面一定是变量名,不可加引号
用户可以输入数据,用回车(↙)结束。
当有多个输入数据时,一般用空白字符(空格、制表符和回车)分隔。
a为整型,d为double,则对应于cin>
a>
d,用户的输入可以为
1213.2↙or12(tab键)13.2↙or12↙13.2↙
12.。
函数
v过程单元是程序的基本单位。
在过程化的语言中,过程单元就是程序中某个模块的表示。
在面向对象的语言中,过程单元说明对象对各种事件是如何响应的。
v过程单元分为:
过程(procedure),函数(function)
v执行过程单元称为调用(calling),过程单元执行完后返回到调用者
v主要技术:
自顶向下、逐步求精,采用单入口、单出口的控制结构。
v函数是一系列独立的程序步骤,这些程序步骤集合在一起,并赋予一个名字
v每个程序都必须有一个名为main的函数,它是程序的入口。
主程序由一个或多个函数组成
v程序主体(主函数main()):
主要包含如下模块:
(definition–input-proocess-ouput)
(1)变量定义:
为程序中的数据准备存储空间(declarationordefinition)
(2)输入阶段:
接受所需输入的信息。
它由两部分组成:
显示提示信息和接收输入(input)
(3)计算阶段:
完成所需的计算(process)
(4)输出阶段:
输出计算的结果(output)
v函数的主要构成:
函数声明,函数定义,函数调用
v可以把函数想象成数学中的函数。
如f(x)=2x参数表是一组自变量x,返回类型是函数值的类型;
函数声明就是设函数为f(x),函数定义(函数头+函数体)就是函数表达式如2x,函数调用就是带值计算如f
(2)=2×
2。
v函数声明:
类似于