欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    C++复习笔记及模拟题.docx

    • 资源ID:6745668       资源大小:88.81KB        全文页数:23页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C++复习笔记及模拟题.docx

    C+期末知识复习总结及模拟题第一章C+简介一、什么是计算机1、计算机是一种能以数十亿倍于人类的速度执行计算和进行逻辑判断的设备。2、冯诺依曼结构20世纪30年代中期,美国科学家冯诺依曼大胆的提出:抛弃十进制,采用二进制作为数字计算机的数制基础。同时,他还提出预先编制计算程序,然后由计算机来按照人们事前制定的计算顺序来执行数值计算工作。二、计算机的组成结构1 .输入单元:计算机的“接收”部分。2 .输出单元:计算机的“运送”部分。3 .内存单元:计算机进行快速存取,但容量不大的“仓库”部分。4 .算术逻辑单元:计算机的“生产”部分。5 .中央处理器:计算机的“管理”部分6 .辅助存储单元:这是计算机的长期性、大容量的“仓库”部分。三、早期的操作系统1、早期操作系统的特点(1)单用户单任务(2)输入慢、效率低下2、新操作系统的特点(1)多用户多任务(2)分时系统、并行处理、效率高四、个人计算、分布式计算和客户/服务器计算1 .个人计算机(1)在计算机的发展史上,曾经有一段时间,计算机依功能与体积大小而被划分为:超级计算机、大型计算机(巨型机)、中型计算机、小型计算机、微型计算机。(2)个人计算机(PC机,PerSonaIComPUter)属于微型计算机。2 .分布式计算(1)把一个需要非常巨大的计算分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。3 .客户/服务器计算(1)工作站:功能最强大的桌面计算机(2)文件服务器:为分布在网络中的客户机提供了一个公共的数据存储。(3)客户机:客户平常使用的计算机五、互联网和万维网1 .互联网全世界最大的网络,是家与家、国与国之间互联的大网络,建立在计算和通信基础之上。随着计算机技术和通信技术的发展,互联网的扩展更加迅速。2 .万维网(WorldWideWeb)万维网是一个庞大的信息网络集合,可利用浏览器访问该网络。利用浏览器,在客户计算机的屏幕上可以显示文本和图片、还可以播放声音和视频。用户可方便地从网站中选取各种内容,也可以利用该网站中的超链接转到其它网站。六、机器语言、汇编语言和高级语言1、编程语言分类:机器语言、汇编语言和高级语言2、(1)机器语言:是一种指令集的体系。这种指令集称为机器码,是电脑的CPU可直接解读和执行的数据。(2)汇编语言:是机器语言的符号化,用汇编语言编写的程序要通过汇编程序翻译成机器语言,计算机才能执行。(3)高级语言:这种语言接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能在所有机器上通用。当然也要通过编译程序翻译成机器语言才能执行。七、开发C+的6个阶段第2阶段:预处理第4阶段:链接第3阶段:运行第I阶段:创建程序第3阶段:编译C+程序第3阶段:载入第二章C+基础知识一、C+标准模板1头文件:#include<>2、主函数:<返回类型>main()3、返回:return(返回值)二、常用的一个C+标准模板#include<iostream>usingnamespacestd;intmain()语句1语句2return0;2、输入输出流和换行1、头文件条件:#include<iostream>oiostream是输入类头文件,里面包含了常用的cin、cout等输入输出流。2、名空间:在使用输入输出流时,要声明名空间,方法是:USingnameSPaCeStd.如果不事先声明std名空间,则使用Cin和COUt时,应写成:std:cin和std:COUto3、cin:输入流。用来把变量从键盘输入屏幕。4、cout:输出流。用来把结果从屏幕中打印出来。5、endl:是换行的意思。也可以用n来表示。四、输入输出的格式控制1、头文件条件:#include<iomanip>oiomanip是格式控制类头文件。里面包含了常用的SetW和setprecision。2、名空间:还是std。3、setw:设置数据输出宽度。使用的时候格式为:SetW(imn),表示左边和右边的语句输出后空出的位置长度。4、SetPreeiSion:设置浮点数输出精度。使用的时候格式为:setprecision(intn),表示后面输出的数据精确的小数点位数。五、标识符1、定义:标识符是指常量、变量、语句标号以及用户自定义函数的名称。2、标识符命名时需要满足的规则:(1)标识符必须由字母、下划线或数字(09)组成。(2)标识符的第一个字符只能是大小写字母或者下划线。(3)C+语言中的关键字不能用作用户自己定义的标识符(4)标识符命名时区分大小写。比如TeSt和test是两个不同的标识符。3、C+容易被当做非关键字的关键字举例(1)auto(2)case(3)delete(4)new(5)goto六、数据类型名称类型占用字节数存储值范围整型int4-23,-(23,-l)实型float4-IO38-IO38双精度型double8-IO308-IO308字符型char10-127无值型void0无值七、C+常用转义符列表转义字符名称功能或用途n换行输出W反斜线用于输出或文件的路径名0空字符字符串结束标志t制表位输出空出一个制表位a响铃(报警)输出八、常量和变量1、常量(I)定义:在程序运行过程中,值不会改变的量称为常量。(2)类型:整型常量、实型常量、字符常量、字符串常量、标识符常量(3)定义常量的一种方法:ConSt数据类型V标识符=常量值。注意COnSt常量必须在初始化时对其进行初始化,初始化后不允许对其再进行赋值。2、变量(1)定义:在程序运行过程中,其值可以改变的量称为变量。(2)类型:同常量。(3)定义变量的方法:数据类型变量名1,变量名2,变量名n;九、类型转化1、自动类型转化(1)在表达式中,般要求运算符的两个操作数类型相同。如果两个数的操作类型不同,则需要进行转换,使其类型一-致。(2)转换原则:由精度低的操作数向精度高的操作数类型自动转换。2、赋值类型转换3、强制类型转换(高类型向低类型转换)注:当函数原型中的类型和调用函数不同时发生类型转换(“二”赋值运算也是如此)向下传递:当调用函数参数类型低于函数原型中参数类型,自动转换;反之,强制转换,有警告错误向上传递:调用表达式类型高于函数原型中返回值类型,自动转换;反之,强制转换(会产生警告错误)。十、C+常用的表达方式1、语句表达方式:语句块,语句则表达成:“语句;”。2、简单的输入和输出表达方式(1)输入:cin>>变量名1»变量名2变量名n;(2)输出:CoUt<<表达式1<<表达式2<<表达式n;注:进制输入和输出要在Cin或COUt中指明想应的数据类型。如十六进制输出为cin>>hex>>i°3、SyStem("PAUSE"):表示程序运行到这里暂停一下(按任意键继续运行)。4、intargc,char*argv:intargc表示记录你输入在命令行上的字符串个数;第二个*argv是个指针数组,存放输入在命令行上的命令(字符串)。Char是字符类型。十一、C+运算符及其优先级优先级运算符功能说明结合性最高O改变优先级从左至右:作用域1数组下标其次+;-自增自减从右至左&取地址*取内容I逻辑求反按位求反+,-取正、负数sizeof取所占内存字节数从上往下优先级依次递减*,/,%乘法,除法,取余从左至右+,加减法<,<=,>,>=比较运算=,!=相等,不等&按位与按位异或I按位或&&逻辑与Il逻辑或?:三目运算符从右至左=,+=,-=>*=,/=,%=赋值预算符9逗号运算符从左至右几种重要但易错的运算符介绍1、算术运算符(1)%:为求模运算符。a%b在数学上表示为a(mod)b0取模运算符两边的操作数必须是整数,其取模结果符号必须与被除数相同。如16%(-5)=1,(-16)%5=-k(2)算术运算符都是双目运算符。使用算术运算符的时候,需要注意有关算数表达式求值溢出的处理问题。整数运算产生溢出时,不认为是一个错误,但这时候运算结果已经不正确了。若双目运算符两边的类型不一致,则系统将按照自动类型转换规则使两边类型一致后再进行运算。(3) /:为除法运算符。注意除法运算符的左右两边操作数是整数的时候,进行整除运算;如果有一边是实数,则进行普通的除法运算。例如5/4=1;50/4=1.25。2、赋值运算符(1)=:在C+中,=号是一个赋值运算符。是把等号右边的值赋给左边。如果要判断两个数是否相等,则应该使用“=或者=!”来进行判断。(2)赋值运算符的左操作数必须是变量,右操作数可以是常量、变量和表达式等。3、关系运算符和逻辑运算符(1) C+语言的逻辑值:。表示逻辑“假”,除了O以外表示逻辑“真”。常用“1”来表示逻辑真。(2) &&:逻辑与。是先左到右进行计算。如果左边计算为假,则不计算右边。如果左边计算为真,就会继续计算右边。(3) |:逻辑或。如果左边计算为真,不再计算右边。左边为假,就会继续计算右边。(4)对于&&应该把最有可能成为false的条件放在左边;对于|应该把把最有可能成为true的条件放在左边。4、其他运算符(1)前+():一般表示成+(一一)变量名。表示先对该变量进行增量运算(+1运算),再引用该变量的值进行表达式的其他运算。(2)后+(一):一般表示成变量名+(一一)。表示先引用该变量的值进行表达式的其他运算,再对该变量进行增量运算。(3)条件运算符“?:”:“?:”是C+中唯一的一个三目运算符,它的运算格式如下:“条件表达式?表达式1:表达式2"。其含义是如果条件表达式的结果为真(非0),就执行表达式1;如果为假,就执行表达式2。(4) SiZeOf运算符:SiZeOf是个带符号的单目运算符,而不是一个函数。它的格式如下:SiZeof(表达式)或SiZeOf(数据类型)。它的运算结果是求出表达式的存储字节数或者系统为该数据类型所设置的存储字节数。注:当SiZeof用于数组名时,返回数组占用的字节数。当SiZeof用于变量名(不是数组名)或常量值时,返回存储该特定类型变量或常量所需的字节数。(5) !运算可以用关系运算符代替。如:if(!grade)等价于if(grade=false),也等价于if(grade!=true)十二、C+基本概念中的一些补充知识1、八进制、十进制、十六进制整数的输入和输出进制类型符号输入输出表达式八进制OCtcin或cout>>oct>>i十进制deccin或cout>>dec>>i十六进制hexcin或coul>>hex>>i2、字符的输入和输出(1)字符的输入使用即可(2)字符的输出,可以使用COUL但如果要把空格和回车都作为一个输入字符赋给字符变量,必须使用函数cin.gel(),格式为:“cinget(字符型变量):”。返回类型为:Char。十三、C+的格式输出1、粘性设置:在没有改变格式命令之前一直沿用当前格式输出2、一些格式输出的举例setw(4)设置域宽为4fixed/定点数setprecision(2)设置显示2个小数位(4舍5入)left左对齐right右对齐,默认右对齐注:是用来解释语句的,C+编译器不会对后的内容进行编译。十四、C+标准库头文件(常用)<iostream>包含C+标准输入输出函数原型<cmath>包含数学库函数<cstdlib>文本转换、内存分配、随机数<iomanip>格式化数据流的流操纵元的函数原型<ctime>包含时间日期函数<cstring>包含C式字符串处理,是下边的增强版<string>C+标准库提供的string类第三章C+语句一、选择语句1、单选条件if语句(1)格式if(表达式)语句(或语句块);(2) if后面的表达式一般是一个逻辑表达式,如果表达式的计算结果为逻辑真(非0),则执行语句;反之则不执行这个语句。2、二选一条件if语句(1)格式if(表达式)语句1(或语句块1);else语句2(或语句块2);(2)这种if语句格式的含义是:如果if后面的表达式求值结果非0,则执行语句1,否则就执行语句2。3、if语句的嵌套如果if语句的内嵌语句也是一个if语句,就形成了if语句的嵌套。注:else总是与其前面最近的,同一块内的,还没有配对的if进行配对。4、switch语句(1)介绍:SWitCh语句也称开关语句或多重选择语句。一般用于“根据一个变量的多种不同取值实现程序的执行流程的多个分支。”用switch语句可以避免ifelse多层嵌套造成的书写错误,方便程序阅读。(2)格式switch(表达式)(case常量表达式1:语句序列1;break:CaSe常量表达式2:语句序列2;break;case常量表达式n:语句序列n;break:)(3)各个CaSe分支出现的次序可以任意。CaSe分支是开关语句的入口,其后面的语句序列可以是一条语句,也可以是多条语句。break语句是可选的,当所执行的case分支没有break,则继续往下执行其他分支的语句序列,直到遇到break语句或者switch语句的关键括号“”为止。CaSe后的常量表达式必须为整型常量,而取值可为整型、字符型或枚举型。二、循环语句1、while循环语句(1)格式while(表达式)语句(语句块);注:当循环体只有一条语句时,大括号尽量不要省略。(2)其中表达式是可以任意合法的表达式,是循环的控制条件,语句是循环执行的循环体,可以是C+语言的一条语句,也可以是C+语言的一条复合语句。(3) While语句的执行过程是:先判断表达式的值,若表达式的值为逻辑真(非0),则进入循环执行循环体,然后自动回到循环控制条件的判断点上,计算表达式的值,并重更以上过程,知道表达式的值为假(或为0)为止。(4) While不要写成WhIieo2、dowhile语句(1)格式do语句(语句块);while(表达式);(2) dowhile循环的执行过程是先执行循环体语句,后判断循环条件表达式的值。表达式的值为真,继续执行循环;表达式的值为假,则结束循环。(3) dowhile循环保证了循环体语句至少执行一次。循环体每次执行后判断控制条件,如果表达式的值为逻辑真(非0),则再次执行循环体并判断控制条件,直到表达式的值为假为止,然后程序流程继续向下执行。3、for语句(1)格式for(表达式1;表达式2;表达式3)语句序列;(2) for语句中表达式1称为循环初值表达式,表达式2称为控制(循环终值)表达式,表达式3称为增量表达式,语句序列为任意合法的C+语句或复合语句。(3) for语句中的3个表达式都可以省略,但是2个分号不能省略。表达式I可以放在for语句之前,表达式3可以放在循环体之中,表达式2也可以省略°当表达式2省略的时候,表示循环条件恒成立(此时要用break跳出循环)。4、控制执行顺序的语句(1) break语句:用来提前结束该语句所在的循环。(2) COnlinUe语句:用来终止本次循环,并开始下一次循环。注:break终止的是其所在层的循环语句,而COntinUe语句终止的是本次循环,继续下一次循环。break多用在SWitCh语句之中,也可以用来一般的循环语句之中。5、无条件跳转语句(了解)goto语句:goto语句是用来跳转到一条指定的语句,然后从那条语句开始往下执行。三、语句中的一些零散知识1、算法:是计算机解决问题的方法。包含两个要素:执行的动作和这些动作执行的顺序。2、伪代码:是一种认为的非正式的语言,用以表述算法,接近程序语言,又接近自然语言,不受C+语法的限制。伪代码转化为C+程序非常方便。3、UML活动图:用结构图形来描述算法。4、控制结构(1)三种基本结构:顺序结构、分支结构、循环结构(2)if、if-else>switchswhile、for、do-while5、计数器控制的循环要素设计步骤(1)命名一个循环变量(或者循环计数器)。(2)设置控制变量的初值。(3)定义一个循环继续条件,用于对循环变量终值的测试。(4)增值(或减值),即在每次循环过程中修改控制变量的值,6、计数器控制的循环要素编程风格(1) .循环变量常常习惯于采用整型变量。(2) .每条控制语句前后各留一空行。(3) .控制语句的体要缩进排列在其头部内,以使程序呈现出一种二维的外观,提高了程序的可读性。(4) .循环体内尽量不嵌套循环,坚决不使用3层嵌套循环。7、结构化编程总结结构化程序的规则(1) .结构化程序是从最简单的活动图开始。(2) .堆叠:任何一个动作状态都可以被两个顺次的动作状态所取代。(3) .嵌套:任何一个动作状态都可以被任何控制语句(©©颔)(§)©)所取代。其中:顺序结构if语句if-else语句SWitCh语句WhiIe语句dowhile语句for语句(4) .规则(2)和规则(3)可以根据自己的需要以任何顺序随意使用。结构化程序的特点:(1) .程序仅有一个入口,且仅有一个出口。(2) .程序仅由上述7种简单动作状态构成。(3) .堆置和嵌套是设计程序仅有的两种手段。非结构化程序:不符合结构化程序任何一个特点的程序。分析方法:一个分析一个复杂程序是不是结构化程序的方法是,逆向应用结构化程序规则,看能不能把复杂活动图简化成最简单活动图。第四章函数一、函数的基本概念1、定义一个函数的方法返回类型函数名(参数列表)(函数体;)注:C+中不能在函数内部再定义函数。若省略了函数返回值的类型名,则C+默认函数的返回类型为整型(int).参数列表中可以是单一参数,也可以是多参数。但要注意函数原型、函数头部以及函数调用(包括实参个数、类型、参数顺序和返回类型)必须完全一致。2、函数头返回类型、函数名、函数参数共同构成了函数的函数头函数名:函数名即一个函数的名字,应符合标识符的要求。函数名应尽可能反映函数的功能。函数参数:是指完成函数功能所需要向函数提供的自变量。函数的参数分为形参和实参。形参是指在函数定义时候,以类似变量的形式出现在函数名后面的括号中的参数。实参则是指在调用函数的时候,给出的实际参数值。实参和形参是一一对应的。如果函数执行的时候,不需要参数,则为无参函数。无参函数的参数列表为空,定义用void来定义。在定义形参的时候,除了需要给出参数的变量名以外,还应该给出形参的数据类型。各参数之间即使类型相同,也应单独给出类型。返回类型:如果一个函数有计算结果需要返回给它的调用者,则把该计算结果称为返回值。在设计该函数的时候,需要事先指定该返回值的类型,则该类型称为函数的返回类型。注:函数签名:函数名和参数个数及参数类型,不包括返回值类型。在同一函数作用域内函数签名必须唯一。函数作用域:是程序的一部分区域,在这个区域内函数时可见且可访问的。3、函数的返回(1)返回方法:return表达式;(2)return的作用是从函数中返回。当程序执行到return语句的时候,执行流程就回到函数的调用处。在同一个函数内可以在多处出现return语句。(3)在main函数中如果出现return语句,则表示从程序中退出,返回操作系统。(4) return后面若跟上一个表达式,则该表达式就是函数的返回值,其类型必须与函数首部所说明的类型一致。若类型不一致,则由系统自动转换为函数返回值类型。(5)当返回值类型为void的时候,函数中return后也可以不含表达式。表示从函数中返回。(6)函数体内也可以没有return语句,程序执行到函数末尾,没有确定的函数返回值。(7)一个函数只能有一个返回值4、函数的调用(1)有返回值的函数的调用其结果是一个返回值。该返回值可以参加相应类型的计算。因此有时候返回值的函数的调用可以作为表达式或表达式的一个部分,也可也作为一条单独的语句。(2)无返回值的函数调用只能作为一条语句。(3)进行函数调用的时候,函数的实参个数必须与形参个数一致。实参可以是变量,也可以是表达式,甚至可以是另一个函数的返回值。5、函数原型声明(1)函数原型:是对函数的声明,包括函数类型、函数名、参数个数和各参数类型。函数定义放在使用函数之后,必须有函数原型,否则可以没有函数原型。但为了使函数排列顺序与使用无关,应一律加上函数原型。(5) 一般情况下,C+中的函数应该先定义再使用的原则。(3)如果函数先使用再定义,则需要在调用前声明函数的原型。声明方法为:存储类别类型函数名(参数表);注:函数的原型声明可以出现在程序的任意一个位置,包括在另一个函数定义的内部。二、数学库函数1、头文件声明:#include<cmath>2、数学库函数中常用的函数类型名称作用ceil(x)返回不小于X的最小整数floor(x)返回不大于X的最大整数sqrt(x)返回X的平方根(X为正)pow(x,y)返回X的y次幕(Xy)abs(x)返回X的绝对值exp(x)返回e的X次基(ex)IOg(X)返回x(底数为e)的对数sin(x)返回x(弧度)的正弦cos(x)返回x(弧度)的余弦三、函数的递归(I)定义:函数递归是指函数自身调用自身。函数的递归调用有直接递归和间接递归两种。(2)类型直接递归调用:是指调用函数在函数体内的调用语句直接调用该函数本身。间接递归调用:是指调用函数不是直接调用自己,而是调用其他函数,经过这级或多级调用,最后由某个函数调用该函数。(3)结构所有递归函数的结构都是类似的。函数要直接或间接的调用自身。且要有递归终止条件的检查,即递归终止条件被满足后,不再调用自身函数。如果不满足递归终止的条件,则返回涉及递归调用的表达式。在调用函数自身时,有关终止条件的参数要发生变化,而且需要向递归终止的方法变化。其中递归调用的过程分为“递推”和“递归”两个阶段:递推:先将原来的问题不断分解为新的问题,逐渐地从未知向已知的方向推进,最后达到已知的条件,即递归结束条件。递推:该阶段从已知条件出发,按“递推”的逆过程,逐一求值回归,最终到达递推的开始处,结束回归阶段,完成递归调用。(4) 一种递归调用的格式举例intf(intX)(If(x=0)H(x=l)return1;Returnx*f(x-l);1(5)递归与迭代迭代和递归的共同点:口.迭代和递归都是基于控制语句的:迭代使用循环结构,递归使用选择结构.迭代和递归都涉及循环:迭代显式的使用循环,递归通过重复的函数调用使用循环3 .迭代和递归都包括终止条件测试:迭代在循环继续测试调解失败终止,递归在达到基本情况是终止。4 .计数器控制的循环的迭代和递归都是逐步达到终止的:迭代修改计数器直到计数器的值使循环条件不满足,递归产生比原来问题简单的版本直到达到基本情况。5 .迭代和递归都可能无限循环:如果循环测试一直不变成假,则迭代会发生无限循环,如果递归步骤不能通过递归调用归结到基本情况,就会导致无线递归。注:任何使用递归解决的问题都可以用迭代解决,但递归的开销是很大的,选择递归的原则:1.递归方法更能自然的反映问题,并能使程序易于理解和调试。.迭代的方法实现起来比较晦涩。3.在要求性能的情况下,避免使用递归。四、函数中的其他零散知识1、生命周期(1)存储类型决定了变量的生命周期,即系统何时为变量分配空间,该变量的空间又何时被系统释放。C+中关于变量存储类型的标识符有4个:auto、register>StatiC和extern.其中用auto和register修饰的称为自动存储类型,用static修饰的称为静态存储类型,用extern修饰的称为外部存储类型。注:作用域与生命周期是两个不同的概念。作用域表示什么范围内可见,而生命周期表示变量的生命周期。(2)自动变量:用auto声明的变量称为自动变量。所有函数中或程序块中定义的变量在默认存储类型声明时都是自动变量,自动变量的生命周期为函数或块的执行期。其存储空间的分配和释放是系统自动进行的,所以称为自动变量。(3)寄存器变量:用register声明的变量称为寄存器变量,是指变量存放在CPU的寄存器中,使用时,不需要访问内存,而直接从寄存器中读写,这样可以提高效率。但寄存器资源是十分稀少的,通常编译系统会将register当做自动(auto)变量来处理。(4)静态变量:用static声明的变量称为静态变量。静态变量存放在全局数据区,在编译的时候分配存储空间,并进行初始化。如果程序未显式给出初始化值,系统自动初始化为全0,且初始化只进行一次。静态变量具有全局生命周期。但其可见性却是局部的,其作用域和自动变量相同。内部静态变量在其作用域内是可见的,也是存在的;但当超出它的作用域之后,虽然不是可见的,但它依然是存在的。程序下一次进入该作用域时,其值为上次的结果值。(5)外部存储器类型:在一个文件中定义的全局变量和函数都默认为是外部的,即其作用域可以延伸到程序的其他文件中。但其他文件如果要使用这个文件中定义的全局变量和函数,必须在使用前用extern作外部声明,外部声明通常放在文件的开头。此外,在同一个文件中,如果一个函数使用到定义在该函数之后的全局变量,也必须对使用到的全局变量进行外部变量声明,以满足先定义后使用的原则。2、标识符连接(1)定义:指定编译后标识符的识别范围即作用域。外部变量是指在所有函数之外定义的变量。即全局变量。(2)关键词extern仅用于对外部变量的声明(而非定义)。外部变量和静态变量只初始化一次,且只在定义的时候初始化,若定义时未赋值,默认值为0。其中变量初始化定义为变量的第一次赋值。3.标识符的四个作用域:(1)定义:标识符作用域是指:标识符能够被使用的范围,标识符在其作用域内才能被访问。函数标识符作用域有:文件作用域、函数作用域、语句块作用域、函数原型作用域(2)文件作用域:定义在所有函数之外的标识符具有文件标识符,文件作用域称为全局作用域,即从该标识符说明处开始,到整个文件的结束符为止。具有文件作用域的变量称为全局变量。函数作用域:函数作用域是指在函数内定义的标识符在该函数内均有效,即无论在函数内的任何一个位置,均可以引用这种标识符。C+中,只有标号具有函数作用域,即不管在函数的哪个位置定义的标号,在整个函数内均可以使用。所以在同一函数内不允许标号同名,但不同的函数内标号可以重名。也正是因为标号具有函数作用域,所以不允许用goto语句从一个函数体转到另一个函数体。语句块作用域:语句块指的是用扩起来的程序段。定义在块中的标识符,作用域仅限于语句块,即只能在语句块中使用该标识符。对于语句块中嵌套其他语句块的情况,如果嵌套语句块中有同名局部变量,服从局部优先原则,即在内层块中屏蔽外层块的同名变量。同一层语句块中标示符不能同名,在下层中,下层的标识符,会隐藏上层中同名标识符。函数原型作用域:在函数原型的参数表中说明的标识符所具有的作用域称为函数原型作用域。它是C+程序中最小的作用域,其有效范围就在函数后边的左右括号之间。所以在函数原型声明的时候,可以省去标识符,只给出参数的类型即可。但是,考虑到程序的可读性,一般还是给函数原型声明的形参一个容易理解、记忆的名称。例如,函数声明"floatarea(floatradius)floatarea(float)的效果是相同的。4、函数调用堆栈和活动记录(1)调用堆栈:操作系统中的用来记录函数调用过程的存储区,对这段区域数据只允许两种操作push和pop。PUSh操作:将一条活动记录存入Str指向的单元,再Str+<>POP操作:str-,再将一条活动记录从Str指向的单元取出。(2)活动记录:包括程序返回地址、所有自动变量5、内联函数(1)定义方法:关键词inline11:inlineintmax(intx,inty);(2)作用:让编译器在需要函数的地方插入函数原代码,减少了函数调用开销。编译器只对小函数会这样做会,大函数则忽略inline关键词。6、引用和引用参数(1)引用:即变量的地址。如inti;&i即是整型变量i的引用(2)按值传递和按引用传递实参1按值传递:是把实参的值传递给形参,即形参是在函数中产生一个实参的副本,在函数中如果形参的值改变了,对实参亳无影响。2按引用传递:是把实参的地址传递给形参。在函数中得到一个实参的别名,这样如果再函数中改变了形参的值时,回到主调函数时实参变量值也改变了。3按引用传递的利弊缺点:破坏的了程序结构、违反了面向对象程序设计、结构化程序设计的思想,降低了程序的安全性。优点:改善了程序的性能,消除了按值传递复制大量数据的开销。引用传递可方便地实现了主调函数和被调函数之间的数据的上下传递。因此参数的引用传递应尽量避免,只有在确保程序无差错的情况下且为了避免大量复制数据才可使用引用传递。4从函数返回引用:当返回的是在被调函数中声明的变量的引用时,这个变量应该是StatiC存储类型,否则该引用指的是在函数执行结束时被销毁的自动变量,这是非常危险的。对一个未定义变量的引用称为虚悬引用。注:引用必须初始化7、默认实参(1)默认实参是在函数第一次出现时指定,通常是函数原型。若省略了函数原型,则在函数头部指定。(2)默认实参必须是最靠右边的参数。8,一元作用域分辨运算符一元作用域分辨运算符:用于指定为全局变量。当出现全局变量和局部变量同名是,“:”运算符专指全局变量。9、函数重载(1)函数重载:函数名相同,但参数不同(是指:参数类型或参数个数或参数类型的顺序不同),这一特性叫函数重载。(2)重载函数有不同的标签,编译器可以实现安全连接。(3)作用:利用函数重载可以实现同一个函数名可以处理不同的问题。(4)重载运算符“”、10、函数模板(1)关键字template定义函数模板(2)Template后面的尖括号内是该函数模板的参数列表,typename或CIaSS定义基本类型或用户类型的占位符,形式类型参数作为实际数据类型的占位符。(3)函数模板maximum相当于定义了一整套重载函数函数。包括:charmaximum(char,char,char);intmaximum(int,int,int);doublemaximum(double,double,douhle);floatmaximum(float,float,float);第五章数组一、数组的概念及一维数组1、定义:数组是一种用一个名字来标识一组有序且类型相同的数据组成的派生数据类型,它占有一段连续的内存空间。数组的特征是具有数组名;数组类型(即数组各元素的类型);维数(即标识数组元素所需的下标个数);数组大小(即可容纳数组元素的个数)。注:使用数组前必须先用声明语句声明数组,即指明数组的上述四个特征。2、一维数组(1)定义:一维数组也称向量,它是由具有一个下标的数组元素组成的数组,它的定义形式为:存储类型数据类型数组名常量表达式。其中右边的方括号为下标运算符,具有最高优先级和从左向右的结合性。注:存储类型是可选的,它可以是register、static、auto或externo常量表达式中可以含有运算符,但是不可以含有变量。(2) 一维数组的初始化与其他的基本数据类型一样,数组也可以在定义的同时对数组各元素初始化,初始化表达式按元素顺序依次写在一对花括号内。花括号中的数组元素之间以逗号分隔。初始化时可以不指定数组的大小,编译器会根据初始化列表来确定数组的大小。但只给出部分元素初始化时,就要指定数组的大小。注:只将数值数组的部分元素初始化后,其他鱼啊怒视的初始值隐含地认为是0.全局数值数组如果不显式初始化,其元素的值隐含地为0.(3)访问数组元素方法:数组名表达式其中表达式是非负的整型表达式,也就是数组的下标。数组的下标是用来指定所要访问的数组中的元素的位置的。注:数组下标是从0开始的。比如定义inta3,则该数组有3个元素,分别是a0、alsa2,C+没有提供数组边界检查的机制,设计应该保证所有的数组引用都在数组边界以内。二、数组其他知识1、字符数组(1)定义:字符数组就是一个字符(char)类型的数组。其中每一个元素是一个字符。字符数组也称字符串。C+规定,字符数组最后一个元素一定是“0"。例如字符串“Hello”存储到字符数组时,实际上会被储存为“Hello'O";也就是系统会自动在其末尾加一个空白字符“0”。即多占用一个字节。字符数组的定义与普通数组相同。(2)字符数组可以整体输入和输入,但是不可以整体赋值。与之相反的是,数值数组不允许整体输入和输出。(3) charsl="first";等价:charsl=if/i,'r','s,/t,0,);2、常用字符串函数(I)StrCat(字符串I,字符串2):此函数是字符串连接函数。它的功能是把两个字符串连接起来。具体方法是把字符串2连接到字符串1的末端,并将结果存放到字符串1中。注意:存放结果字符串的数组的空间要确保足够大。注:两个字符串连接之后,前一个数组最后的字符“0”就消失了。(2) Strcpy(字符串I,字符串2):此函数的功能是把一个字符串中的字符复制到另一个字符串中。具体方法是把字符串2中的字符复制到字符串1中。注意:要确保存放结果的字符串1的空间足够大。(3) Strcmp(字符串1,字符串2):此函数是字符串比较函数。它是用来比较两个字符串的“大小”。比较方法是:若两个字符串相等(匹配),返回O(假);若字符串1在字典顺序上比字符串2大,则返回一个正数;若小,返回一个负数。(4) Strlen(字符串):此函数的功能是用来求字符串的长度。其函数的值为字符串中不计“0”的字符的个数。

    注意事项

    本文(C++复习笔记及模拟题.docx)为本站会员(李司机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开