版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021计算机二级C++考点及试题汇编计算机二级C++函数考点1函数定义在标准C++中,函数的定义形式为:〈返回类型〉〈函数名〉(〈形参列表》)(V函数体〉}V函数名〉一般是标识符,ー个程序只有一个main函数,其他函数名可随意取(当然,必须避免使用C++的关键字),好的程序设计风格要求函数名最好是取有助于记忆的名字,如getchar函数,通过函数的名字可以知道函数的功能,这无疑会增加程序的可读性。V形参列表〉是由逗号分隔的,分别说明函数的各个参数。形参将在函数被调用时从调用函数那里获得数据。在C++中,函数形参列表可以为空,即ー个函数可以没有参数。但即使函数形参列表为空,括起函数参数的ー对圆括号也不允许省略。〈返回类型〉又称函数类型,表示一个函数所计算(或运行)的结果值的类型。如果一个函数没有结果值,如函数仅用来更新(或设置)变量值、显示信息等,则该函数返回类型为void类型。ー个没有返回值的函数类似于ー些程序语言(如pasca!语言)中
的过程(procedure)〇由一对花括号括起来的〈函数体,是语句的序列,它定义了函数应执行的具体操作。需要注意的是,C++不允许函数定义嵌套,即在一个函数体内不能包含有其他函数的定义。2函数调用C++中函数调用的一般形式为:V函数名〉(〈实参表〉)当调用ー个函数时,其实参的个数、类型及排列次序必须与函数定义时的形参相一致,也就是说实参与形参应该ー对一地匹配。当函数定义时没有形参,则函数调用时,〈实参表〉亦为空。依据对函数返回值的使用方式,函数的调用方法可分为以下几种:(1)语句调用,这通常用于不带返回值的函数。这种情况下,被调用函数作为ー个独立的语句出现在程序中。(2)表达式调用。将被调用函数作为表达式的一部分来进行调用。它适用于被调用函数带有返回值的情况。(3)参数调用。被调用函数作为另ー个函数的ー个参数进行调用。3函数原型在C++中,函数在使用之前要预先声明。这种声明在标准C++中称为函数原型(functionprototype),函数原型给出了函数名、
返回类型以及在调用函数时必须提供的参数的个数和类型。函数原型的语法为:V返回类型〉〈函数名〉(V形参列表》);(注意在函数原型后要有分号)实际上函数原型说明有两种形式:(1)直接使用函数定义的头部,并在后面加上一个分号。(2)在函数原型说明中省略参数列表中的形参变量名,仅给出函数名、函数类型、参数个数及次序。注意:在C++中,在调用任何函数之前,必须确保它已有原型说明。函数原型说明通常放在程序文件的头部,以使得该文件中所有函数都能调用它们。实际上,标准函数的原型说明放在了相应的头文件中,这也是为什么在调用标准函数时必须要包含相应的头文件的原因之一。在了解了函数定义、函数调用和函数原型之后,就可以写出ー个完整的C++程序,并可将其编译和运行。4函数返回类型根据函数是否带有参数以及函数是否有返回值,可以将函数分为如下四类。1带参数的有返回值函数定义形式为:〈返回类型〉〈函数名〉(〈参数列表〉)
〈语句序列〉}2不带参数的有返回值函数定义形式为:V返回类型,〈函数名〉()(〈语句序列〉}3带参数的无返回值函数定义形式为:voidV函数名〉(〈参数列表〉)(〈语句序列〉}4不带参数的无返回值函数定义形式为:voidV函数名〉()(〈语句序列〉)5函数参数C++中,函数之间传递参数有传值和传地址两种传递方式。
此外,C++还提供了默认参数机制,可以简化复杂函数的调用。1参数的传递方式(1)传值传值是将实参值的、副本传递(拷贝)给被调用函数的形参。它是C++的默认参数传递方式,在此之前的多数函数参数传递都是传值。由于传值方式是将实参的值复制到形参中,因此实参和形参是两个不同的变量,有各自的存储空间,可以把函数形参看作是函数的局部变量。传值的最大好处是函数调用不会改变调用函数实参变量的内容,可避免不必要的副作用。(2)传地址有时我们确实需要通过函数调用来改变实参变量的值,或通过函数调用返回多个值(return语句只能返回一个值),这时仅靠传值方式是不能达到目的。2默认参数在C++中,可以为参数指定默认值,在函数调用时没有指定与形参相对应的实参时就自动使用默认值。默认参数可以简化复杂函数的调用。默认参数通常在函数名第一次出现在程序中的时候,如在函数原型中,指定默认参数值。指定默认参数的方式从语法上看与变量初始化相似。6函数重载
如果能用同一个函数名字在不同类型上做相类似的操作就会方便很多,这种情况即为函数重载。其实这ー技术早已用于C++的基本运算符。例如加法操作只有一个运算符+,但它却可以用来做整型数、浮点数和指针的加法运算。将这一思想推广到函数,即为函数重载。7内联函数C++引入内联(inline)函数的原因是用它来取代C中的预处理宏函数。内联函数和宏函数的区别在于,宏函数是由预处理器对宏进行替换,而内联函数是通过编译器来实现的,因此内联函数是真正的函数,只是在调用的时候,内联函数像宏函数一样的展开,所以它没有一般函数的参数压栈和退栈操作,减少了调用开销,因此,内联函数比普通函数有更高的执行效率。在C++中使用inline关键字来定义内联函数。inline关键字放在函数定义中函数类型之前。不过,编译器会将在类的说明部分定义的任何函数都认定为内联函数,即使它们没有用inline说明。8递归函数如果一个函数在其函数体内直接或间接地调用了自己,该函数就称为递归函数。递归是解决某些复杂问题的十分有效的方法。递归适用以下的一般场合。(1)数据的定义形式按递归定义。(2)数据之间的关系(即数据结构)按递归定义,如树的遍历,
图的搜索等。(3)问题解法按递归算法实现,例如回溯法等。使用递归需要注意以下几点:(1)用递归编写代码往往较为简洁,但要牺牲一定的效率。因为系统处理递归函数时都是通过压栈/退栈的方式实现的。(2)无论哪种递归调用,都必须有递归出口,即结束递归调用的条件。(3)编写递归函数时需要进行递归分析,既要保证正确使用了递归语句,还要保证完成了相应的操作。9变量作用域与生存周期1C++中变量的存储类型分为如下几种类型:auto 函数内部的局部变量(auto可省略不写)〇static 静态存储分配,又分为内部和外部静态。extern——全局变量(用于外部变量说明)。register 变量存储在硬件寄存器中。(1)自动变量①在函数内部定义的局部变量即为自动变量,用于说明自动变量的关键字auto可以省略。②在函数头部定义的自动变量作用域为定义它的函数;而在块语句中定义的自动变量作用域为所在块。与C不同,C++还允许在变量使用之前オ定义变量。③编译程序不给自动变量赋予隐含的初值,故其初值不确
定。因此,每次使用自动变量前,必须明确地赋初值。④形参可以看成是函数的自动变量,作用域仅限于相应函数内。⑤自动变量所使用的存储空间由程序自动地创建和释放。当函数调用时为自动变量创建存储空间,函数调用结束时将自动释放为其创建的存储空间。因此,自动变量随函数的调用而存在并随函数调用结束而消失,由一次调用到下一次调用之间不保存值。(2)外部变量①在函数外部定义的变量即为外部变量。②外部变量的作用域是整个程序(全局变量)。③在C++中,程序可以分别放在几个源文件上,每个文件可作为ー个编译单位分别编译。外部变量只需在某个文件上定义ー次,其他文件若要引用此变量时,应用extern加以说明。(外部变量定义时不必加extern关键字)。④在同一文件中,若前面的函数要引用在其后面定义的外部(在函数之外)变量时,也应用extern加以说明。⑤外部变量是由编译程序在编译时给其分配空间,属于静杰分配变量,对于数值型(整型、浮点型和字符型)外部变量来说,其有隐含初值。。引进外部变量的原因:其ー是只要程序运行外部变量的值是始终存在的;其二是外部变量可以在所有函数间共享。
在C++中,可以使用外部变量,但是,必须要清楚使用外部变量的副作用。使用外部变量的函数独立性差,通常不能被移植到其他程序中,而且,如果多个函数都使用到某个外部变量,一旦出现问题,就很难发现问题是由哪个函数引起的。在C++中,尽量不用或少用外部变量,可使用参数在函数间进行数据的传递。基本控制结构1C++语句C++语句按照不同功能大体分为6种类型,它们是:(1)声明语句:用于对程序中的各种实体进行声明、定义及初始化。(2)表达式语句:用于对程序中的数据进行具体操作和处理。(3)选择语句:用于实现程序的选择结构。(4)循环语句:用于实现程序的循环结构。(5)跳转语句:用于实现程序执行流程的转移。(6)复合语句:用于表示程序中的语句块概念。应当指出的是,C++中并不存在赋值语句和函数调用语句,赋值和函数调用都属于表达式而不是语句。2顺序结构1声明语句声明语句又称为说明语句,它可以用来对程序中出现的各种
名称进行声明。这些名称通常是表示变量、常量、函数、结构、类、对象等实体的标识符。在C++程序中,一个名称在使用之前必须先被声明。声明的目的是告诉编译器某个名称所指代的实体类型。使用声明语句能够在程序中进行如下操作:(1)变量声明(2)常量声明(3)函数声明(4)类型声明声明语句可以完成的工作不仅局限于为名称指定类型,同时也是定义语句。另外,使用声明语句还可以在定义变量时对其进行初始化。2表达式语句C++中所有对数据的操作和处理工作都是通过表达式语句来完成的。表达式语句的语法格式为:V表达式》;(1)赋值操作。(2)复合赋值操作。(3)增量、减量操作。(4)函数调用操作。(5)输入输出操作。3基本输入输出ー个程序通常会向用户输出ー些信息,一般也会要求用户输
入ー些信息。C++程序的输入输出操作是通过标准库中的输入/输出流对象来完成的。在头文件iostream中定义了代表屏幕的标准输出流对象cout和代表键盘的标准输入流对象cinocin和cout具有强大的输入输出功能和极为灵活的用法。在程序中使用cin和cout之前,应首先加入预处理命令:#include<iostream>,以包含标准头文件iostreamo使用cout进行数据输出操作的一般格式为:cout<<Expr;这是一条表达式语句。其中,Expr代表一个表达式;“VV”称为插入运算符。整条语句的含义是:将表达式Expr的值输出(显示)到屏幕上当前光标所在位置。4复合语句和空语句复合语句又称为块语句,它是用ー对花括号“{}”将若干条语句包围起来而组成的一条语句,其语法格式为:(〈语句1>V语句2>•••V语句n>}其中,V语句i>(i=l,2—,n)可以是声明语句、表达
式语句、选择语句、循环语句或跳转语句等任何合法的C++语句,当然,也可以是ー个复合语句。分隔符“{”和“}”的作用是把若干条语句组成的序列包围起来,使它们在逻辑上成为一条语句。复合语句可以出现在程序中任何需要语句的.地方,但在通常情况下复合语句可以作为以下成分出现在程序中。(1)函数的函数体;(2)循环语句的循环体;if语句的分支;switch语句的执行部分。实际上,空语句是ー种特殊的表达式语句。其语法格式为:;即空语句只由一个分号组成。3选择结构1语句if语句又称为条件语句,它是程序设计语言中最常见的ー种选择语句。(1)基本if语句基本if语句的功能是根据给定条件是否成立来决定要不要执行一条语句或语句块,它的语法格式如下:if(V条件〉)V语句〉其中,if为关键字;〈条件〉通常是ー个表达式且必须用圆括号包围起来;〈语句〉称为if子句,它可以是任何类型的语句(包括复合语句和空语句)。
基本if语句的执行过程是:首先计算V条件〉的值,如果此值不为〇("真"),则执行〈语句〉;如果此值为〇(“假”),则忽略〈语句〉(即不执行)而继续执行if语句之后的下一条语句。说明:①C++中规定:如果〈条件〉是ー个表达式,则当此表达式的值不为〇时,条件结果为“真”;只有当此表达式的值为〇时,条件结果才为“假”。②〈条件〉也可以是一条声明语句,其中必须定义一个变量并对它进行初始化。这时,若此变量的值不为0,则条件结果为“真”;若此变量的值为0,则条件结果为“假”。if,•,else语句if-else语句是基本if语句的扩展,其功能是根据给定条件是否成立来决定执行两部分语句中的哪一部分,其语法格式如下:if(〈条件〉)〈语句1〉else〈语句2〉其中,if和else为关键字;〈语句1〉称为if子句,〈语句2>称为else子句,它们可以是单条语句或复合语句。if-else语句的执行过程是:首先计算〈条件〉的值,如
果此值不为〇("真"),则执行〈语句1>,然后忽略〈语句2>而去执行if语句之后的下一条语句;如果此值为0(“假”),则忽略〈语句1>,执行〈语句2>,然后继续执行if语句之后的下一条语句。if语句的嵌套if子句和else子句可以是任何类型的C++语句,当然也可以是if-else语句本身。通常将这种情况称为if语句的嵌套。2switchswitch语句又称为开关语句,它也是ー种选择语句。switch语句的功能是根据给定表达式的不同取值来决定从多个语句序列中的哪ー个开始执行,其语法格式如下:switch(V表达式〉){caseV常量表达式1〉:〈语句序列1>caseV常量表达式2〉:〈语句序列2>•••caseV常量表达式n>:V语句序列n>default:V语句序列n+l>
其中,switch,case和default为关键字;V表达式〉的值必须属于整型、字符型或枚举型。〈常量表达式i>(i=l,2-n)是取值互不相同的整型常量、字符常量或枚举常量,其具体类型应与V表达式〉的值相一致。V语句序列i>(i=l,2-n,n+l)可以是任意多条语句。switch语句的执行过程是:(1)首先计算出V表达式〉的值,设此值为E;(2)然后计算每个V常量表达式i〉的值,设它们分别为C1,C2,…,Cn;(3)将E依次与Cl,C2,…,Cn进行比较。如果E与某个值相等,则从该值所在的case标号语句开始执行各个语句序列,在不出现跳转语句的情况下,将一直执行到switch语句结束。(4)如果E与所有值都不相等且存在default标号,则从default标号语句起开始向下执行,直到switch语句结束(同样,在不出现跳转语句的情况下)。(5)如果E与所有值都不相等且不存在default标号,则switch语句不会执行任何操作。说明:(1)多个case标号可以共用ー组语句序列,以实现对于几个常量值都执行同一操作。(2)default标号语句是可选的。当default不出现时,如
果〈表达式〉的值与所有〈常量表达式i>(i=l,2…n)的值都不相等,则程序执行流程会跳过switch语句。(3)switch语句是可以嵌套的。case和default标号只与包含它们的最内层的switch组合在ー起。(4)当需要针对表达式的不同取值范围进行不同处理时,使用if…else…if阶梯结构比较方便。因为switch语句只能对相等关系进行测试,而if语句却可以用关系表达式对ー个较大范围内的值进行测试。4循环结构lfor语句for语句是C++中最常用且功能最强的循环语句,其语法格式如下:for(〈表达式1>;V表达式2>;V表达式3>)V语句>其中,for为关键字;〈表达式1>是for循环的初始化部分,它一般用来设置循环控制变量的初始值;〈表达式2>是for循环的条件部分,它是用来判定循环是否继续进行的条件;〈表达式3>是for循环的增量部分,它一般用于修改循环控制变量的值;〈语句〉称为for循环的循环体,它是要被重复执行的代码行,for循环体可以是单条语句,也可以是由花括号包围起来的复合语句。for语句的执行过程是:
(1)计算〈表达式1>的值;(2)计算V表达式2>的值,如果此值不等于0(即循环条件为“真''),则转向步骤(3);如果此值等于〇(即循环条件为“假”),则转向步骤(5);(3)执行一遍循环体〈语句〉:(4)计算V表达式3>的值,然后转向步骤(2);(5)结束for循环。C++中for语句的书写格式非常灵活,这主要表现为:(1)〈表达式1>可以是变量声明语句,即循环控制变量可在其中定义。(2)V表达式1>可以省略。这时,应在for语句之前给循环控制变量赋初始值。注意:省略〈表达式1>时,其后的分号不能省略。(3)〈表达式2>可以省略。这时,for语句将不再判断循环条件,循环会无限次地执行下去。这种情况通常称为“死循环”。(4)V表达式3>可以省略。这时,应在循环中对循环控制变量进行递增或递减操作,以确保循环能够正常结束。(5)三个表达式可同时省略。这时,for语句显然也是ー个“死循环”。(6)〈表达式1>、<表达式2〉和〈表达式3〉都可以是任何类型的C++表达式。2while语句
while语句是ー种形式较为简单的循环语句,其语法格式如下:while(〈表达式〉)〈语句〉其中,while为关键字:〈表达式〉是while循环的条件,它用于控制循环是否继续进行;V语句〉称为while循环的循环体,它是要被重复执行的代码行;while循环体可以是单条语句,也可以是由花括号括起来的复合语句。实际上,while语句是for语句省略掉表达式1和表达式3的特殊情况。while语句的执行过程是:(1)计算V表达式〉的值,如果此值不等于〇(即循环条件为“真”),则转向步骤(2);如果此值等于〇(即循环条件为“假”),则转向步骤(4);(2)执行一遍循环体〈语句〉;(3)转向步骤(1);(4)结束while循环。从中可以看出,while语句将在V表达式〉成立的情况下重复执行〈语句〉;如果在第一次进入while循环时〈表达式〉就不成立,则〈语句〉一次也不会执行。注意:(1)由于while语句中缺少对循环控制变量进行初始化的结构,因此在使用while循环之前对循环控制变量进行初始化显得很重要。
(2)在while循环体中不要忘记对循环控制变量的值进行修改,以使循环趋向结束。3d〇…while语句;d〇…while语句也是ー种循环语句,它的功能类似于while语句,只是将循环的判定条件移到了循环体之后,其语法格式如下:doV语句》while(V表达式〉);其中,do和while为关键字;V语句〉称为dO…while循环的循环体,它是要被重复执行的代码行,do……while循环体可以是单条语句,也可以是由花括号包围起来的复合语句;〈表达式〉是do……while循环的条件,它用于控制循环是否继续进行。注意:在d〇…while语句中最后的分号不能丢掉,它用来表示do while语句的结束。do while语句的执行过程是:(1)执行一遍循环体〈语句〉;(2)计算〈表达式〉的值,如果此值不等于〇(即循环条件为“真''),则转向步骤(D;如果此值等于0(即循环条件为“假”),则转向步骤(3);(3)结束d〇…while循环。注意:(1)在使用d〇…while循环之前同样需要对循环控制变量进行初始化;在d〇…while循环中仍然不要忘记对循环控制变量进
行修改,以使循环趋向结束,避免死循环的发生。⑵d〇…while循环与while循环的不同之处在于:do-**while循环的循环体在前,循环条件在后,因此d〇…while循环体在任何条件下(即使不满足循环条件)都至少被执行ー次。而while循环条件在前,循环体在后,当条件不满足时,循环体有可能一次也不会执行。这一点正是在构造循环结构时决定使用while语句还是d〇…while语句的重要依据。循环的嵌套在ー个循环结构中又完整地包含着另ー个循环结构称为循环的嵌套。C++中三种类型的循环语句都可以相互嵌套,并且嵌套的层数没有限制。程序设计中有许多问题需要使用循环结构的嵌套来解决。5跳转语句C++中有4种跳转语句,它们是:break语句、continue语句、return语句和goto语句。Ibreak语句break语句又称为跳出语句,其语法格式如下:break;即由关键字break加上一个分号构成。break语句只能用在switch语句和循环语句中。在switch语句中,break用来使执行流程跳出switch语句,而继续执行switch后面的语句。在循环语句中,break用来使执行流程无条
件地跳出本层循环体。另外,break语句还经常用于使执行流程跳出死循环。2continue语句continue语句又称为继续语句,其语法格式如下:continue;即由关键字continue加上一个分号构成。continue语句仅用在循环语句中,它的功能是:结束本次循环,即跳过循环中尚未执行的语句,接着进行下一次是否执行循环的条件判定。在while和d〇…while循环中,continue语句将使执行流程直接跳转到循环条件的判定部分,然后决定循环是否继续进行。在for循环中,当遇到continue时,执行流程将跳过循环中余下的语句,而转去执行for语句中的〈表达式3〉,然后根据〈表达式2>进行循环条件的判定以决定是否继续执行for循环体。3return语句return语句又称为返回语句,它具有两种语法格式:(1)return;returnV表达式》;其中,return为关键字,第2种格式中的〈表达式〉可以是任何类型的C++表达式。return语句只能用在函数体中。在返回类型为void的函数
体中,若想跳出函数体,将执行流程转移到调用该函数的位置,应使用return语句的第1种格式。在返回类型不是void的函数体中,应使用return语句的第2种格式,使执行流程转移到调用该函数的位置,并将V表达式〉的值作为函数的返回值。对于非void返回类型的函数来说,其函数体中必须至少具有一条return语句。4goto语句goto语句又称为转向语句,其语法格式如下:gotoV标号〉;其中,goto为关键字;〈标号〉是一个由用户命名的标识符。在goto语句所处的函数体中必须同时存在一条由V标号〉标记的语句,其格式为:V标号〉:V语句〉即在〈标号〉和〈语句〉之间使用ー个冒号分隔,这种语法结构称为标号语句。标号语句中的〈标号〉应与goto语句中的〈标号〉相同,〈语句〉可以是任何类型的C++语句。注意:某个goto语句和相应的标号语句必须位于同一函数体内。goto语句的功能是使执行流程跳转到〈标号〉所标记的V语句〉处(即对应的标号语句处)。C++语言概述1C++语言的发展C++起源于C语言。1980年贝尔实验室的BjarneStroustrup
和他的同事们开始对C语言进行改进和扩充,把Simula67(―种早期的面向对象语言)中类的概念引入到C语言,并将改进后的C语言称为“带类的C"(Cwithclass)。1983年夏,“带类的C”被正式命名为“C++”,并于同年7月首次对外发表。C++语言的特点1C++是ー种面向对象的程序设计语言(1)抽象数据类型。(2)封装和信息隐藏。(3)以继承和派生方式实现程序的重用。(4)以运算符重载和虚函数来实现多态性。(5)以模板来实现类型的参数化。2C++是程序员和软件开发者在实践中创造的C++往往从编写实际程序的角度出发,为程序员提供了各种实用、灵活、高效的语言特性。3C++是C语言的超集能够很好地兼容C语言正是C++取得成功的原因之一,这是因为:(DC++继承了c语言简明、高效、灵活等众多优点。(2)以前使用C语言编写的大批软件可以不加任何修改,直接在C++开发环境下维护。(3)C语言程序员只需要学习C++扩充的新特性,就可以很快地使用C++编写程序。
面向对象程序设计C++是ー种面向对象的程序设计语言,它充分支持面向对象思想中的三个主要特征是:1封装性封装性是指将数据和算法捆绑成一个整体,这个整体就是对象,描述对象的数据被封装在其内部。如果需要存取数据,可以通过对象提供的算法来进行操作,而无需知道对象内部的数据是如何表示和存储的。这种思想被称为信息隐藏。2继承性继承性是指一种事物保留了另ー种事物的全部特征,并且具有自身的独有特征。C++语言采用继承来支持重用,程序可以在现有类型的基础上扩展功能来定义新类型。新类型是从现有类型中派生出来的,因此被称为派生类。3多态性多态性是指当多种事物继承自ー种事物时,同一种操作在它们之间表现出不同的行为。C++语言中使用函数重载、模板、虚函数等概念来支持多态性。C++语言主要包括面向过程和面向对象两部分内容。学习C++语言时,应该先学习其面向过程部分,再学习面向对象部分。L4C++语言的基本符号
C++语言中的基本符号可以分为3类:1字母。包括大写英文字母和小写英文字母共52个符号。2数字3特殊符号。包括:+—*/ラ=;?=〃='〜I!#%&()ロ{}へ<>和“空格”共30个符号。这三类符号共计92个,它们组成了C++语言的基本符号集合。L5C++语言的词汇1关键字关键字也称为保留字,它是由C++语言本身预先定义好的一类单词。表1ANSIC标准规定的关键字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile表2ANSIC++标准补充的关键字
boolcatchclassconst_castdynamic_castexplicitfalsefriendinlinemutablenamespacenewoperatorprivateprotectedpublicreinterpret_casestatic_casttemplatethisthrowtruetrytypeidtypenameusingvirtualwchar_t2标识符标识符是用户为程序中各种需要命名的“元素”所起的名字。标识符的组成要符合一定的规则:(1)标识符是ー个以字母或下划线幵头的,由字母、数字、下划线组成的字符串。(2)标识符不能与任意ー个关键字同名。(3)标识符中的字母区分大小写。(4)标识符不宜过长。C++语言一般设定一个标识符的有效长度为32个字符。3字面常量常量是指在程序中固定不变的值。常量一般有两种表示形式,即符号常量和字面常量。C++语言中符号常量的名字就是ー个标识符,而字面常量却是ー类特殊的单词。字面常量分为整型、浮点型、字符型和字符串型四类。
运算符是对程序中的数据进行操作的ー类单词。C++语言中运算符的种类非常丰富,其中有:(1)单字符组成的运算符。(2)双字符组成的运算符。(3)三个字符组成的运算符。(4)关键字运算符。5标点符号标点符号是在程序中起分割内容和界定范围作用的ー类单词。表3C++语言的标点符号标点符号描述(空格)语句中各成分之间的分割符;(分号)语句的结束符'(单引号)字符常量的起止标记符〃(双引号)字符串常量的起止标记符#(井字号)预处理命令的开始标记符{(左花括号)复合语句的开始标记符}(右花括号)复合语句的结束标记符//(双斜杠)行注释的开始标记符/*(斜杠和星号)块注释的开始标记符*/(星号和斜杠)块注释的结束标记符1.6C++程序的基本框架
由于C++语言既支持结构化程序设计,又支持面向对象程序设计,所以它同时具有结构化程序设计和面向对象程序设计两种基本框架。1结构化程序设计框架在C++的结构化程序设计框架中,函数是程序的基本组成单元。程序的主体通常由若干函数定义构成。函数是程序中完成一定功能的模块。各个函数之间通过参数、返回值和全局变量来进行数据通信。当编写ー个较大的程序时,可以把它按照功能逐级划分成许多相对独立的小模块。每个小模块的功能由一个函数实现,再通过适当的方法将这些函数组织在ー起协同工作,就能够完成整个程序所规定的任务。这种方法体现出了结构化程序设计中“功能分解,逐步求精”的思想。使用结构化程序设计方法编写出的C++程序包括一个主函数和若干用户定义函数。主函数由操作系统调用,它是整个程序的入口。在主函数中调用其他函数,其他函数之间也可以相互调用,并且同一个函数可以被ー个或多个函数调用任意多次。在C++中一个函数被调用之前必须先被声明。函数声明和函数体放在ー起组成函数定义;函数体是用花括号括起来的若干语句,它们完成了一个函数的具体功能。一般地,ー个C++程序的.结构化程序设计框架可以表示为:函数1的声明》
函数2的声明〉〈函数n的声明》主函数main()>函数1的定义〉函数2的定义〉•••〈函数n的定义〉2面向对象程序设计框架在C++的面向对象程序设计框架中,类成为程序的基本组成单元。程序的主体通常由若干类的定义构成。类可以把数据和函数封装在ー起,用以描述事物的属性和对事物的操作。类与类之间一方面通过封装而具有明确的独立性;另一方面又通过成员、友元、参数、继承和派生等关系,达到相互通信和联络的目的,从而形成一个有机的整体。在结构化程序设计中,除了主函数之外,所有函数之间一律“平等”,没有层次关系可言,当程序规模稍大时,就会使整体结构变得相当混乱。相反,在面向对象程序设计中,类与类之间能够按照逻辑关系组成有条理的层次结构,从而使一个复杂程序变得有“纲”可循。这正体现出面向对象思想的优越性。一般地,ー个C++程序的面向对象程序设计框架可以表示为:
V类1的定义〉〈类2的定义〉•••〈类n的定义〉V主函数main。〉〈类1的成员函数定义〉〈类2的成员函数定义〉•••〈类n的成员函数定义〉1.7C++程序的开发过程开发ー个C++程序的过程通常包括编辑、编译、链接、运行和调试等步骤。1编辑在VC6集成开发环境中,用户可以使用编辑窗口来进行C++程序的编辑工作。VC6的编辑窗口是专门为编辑C++程序而设计的,它提供了包括语法亮色、调用提示、自动缩进、查找和替换等在内的一系列功能,使用起来十分方便。当用户完成了C++程序的编辑时,应将输入的程序文本保存为以cpp为扩展名的文件(保存C++头文时应以h为扩展名)。2编译在VC6集成开发环境中,用户可以使用编译(Compile)命令将一个以cpp为扩展名的C++源程序文件转换成一个以obj为扩
展名的目标文件。如果ー个C++程序由多个源程序文件组成,应将它们分别进行编译形成多个目标文件。3链接在VC6集成开发环境中,用户可以使用生成(Build)命令来进行目标文件的链接工作。另外,在源程序文件没有被编译的情况下直接使用此命令,可以使编译和链接工作一起完成。4运行和调试在编译和链接工作成功地完成之后可以运行得到的可执行程序,观察程序是否符合我们所期望的运行结果。在VC6集成开发环境中,用户可以使用执行(Execute)命令来运行程序。如果程序的运行结果不是我们所期望的,说明源程序文件中存在着语义错误。这时,需要使用调试器对可执行程序进行跟踪调试来查找错误发生的原因。在VC6集成开发环境中,用户可以很方便地进入调试状态,对程序进行设置断点、单步执行、观察变量等操作。计算机二级考试C++试题及答案试题1.字长为6位的无符号二进制整数最大能表示的十进制整数是()。A)64B)63032
D)31答案:B.根据国标GB2312-80的规定,总计有各类符号和一、二级汉字编码()〇A)7145个B)7445个〇3008个D)3755个答案:B.二进制数!001001转换成十进制数是()〇72B)71075D)73答案:D4.十进制数90转换成无符号二进制数是()〇A)1011010110101001011110D)1011100答案:A.已知三个字符为:a、Z和8,按它们的ASCH码值升序排
序,结果是()。A)8、a、ZB)a、8、ZC)a、Z、8D)8、Z、a答案:D.计算机技术中,下列度量存储器容量的单位中,最大的单位是()。A)KBB)MBC)ByteD)GB答案:D.下列编码中,正确的汉字机内码是()。A)6EF6HB)FB6FHOA3A3HD)C97CH答案:C.无符号二进制整数1000110转换成十进制数是()〇6870
072D)74答案:B9.根据汉字国标GB2312-80的规定,1KB的存储容量能存储的汉字内码的个数是()〇A)128B)2560512D)1024答案:C.十进制数111转换成无符号二进制整数是()。A)01100101B)01101001001100111D)01101111答案:A.ー个字长为8位的无符号二进制整数能表示的十进制数值范围是()。A)〇~256B)〇~255〇「256D)1~255
答案:B.假设某台式计算机的内存储器容量为256MB,硬盘容量为20GB。硬盘的容量是内存容量的( )〇A)40倍B)60倍C)80倍D)100倍答案:C.已知三个字符为:a、X和5,按它们的ASCH码值升序排序,结果是()〇A)5,a,XB)a,5,XC)X,a,5D)5,X,a答案:D.已知一汉字的国标码是5E38,其内码应是( )〇A)DEB8B)DE38C)5EB8D)7E58答案:A.标准ASCII码用7位二进制位表示一个字符的编码,其
不同的编码共有()〇A)127个B)128个〇256个D)254个答案:B.已知英文字母m的ASCII码值为109,那么英文字母p的ASCII码值是()〇A)112B)1130111D)114答案:A.在数制的转换中,正确的叙述是()〇A)对于相同的十进制整数(>1),其转换结果的位数的变化趋势随着基数R的增大而减少B)对于相同的十进制整数。1),其转换结果的位数的‘变化趋势随着基数R的增大而增加C)不同数制的数字符是各不相同的,没有一个数字符是ー样的D)对于同一个整数值的二进制数表示的位数一定大于十进制数字的位数
答案:A.下列叙述中,正确的是()〇A)ー个字符的标准ASCH码占ー个字节的存储量,其最高位二进制总为〇B)大写英文字母的ASCI!码值大于小写英文字母的ASCII码值C)同一个英文字母(如字母A)的ASCII码和它在汉字系统下的全角内码是相同的D)标准ASCII码表的每一个ASCII码都能在屏幕上显示成一个相应的字符答案:A.无符号二进制整数11111I转换成十进制数是()〇A)71B)65063D)62答案:C.十进制数100转换成无符号二进制整数是()。A)0110101B)01101000001100100D)01100110
答案:c.当前流行的Pentium4CPU的字长是( )〇A)8bitB)16bitC)32bitD)64bit答案:C.按照数的进位制概念,下列各个数中正确的ハ进制数是()〇A)1101B)708101109D)B03A答案:A.全拼或简拼汉字输入法的编码属于()〇A)音码B)形声码C)区位码D)形码答案:A.已知汉字"中"的区位码是5448,则其国标码是( )。A)7468D
B)3630HC)6862HD)5650H答案:D.ー个汉字的内码与它的国标码之间的差是()〇A)2020HB)4040HC)8080HD)AOAOH答案:C.1KB的准确数值是()〇A)1024BytesB)lOOOBytesC)1024bitsD)lOOObits答案:A.十进制数55转换成无符号二进制数等于()。A)llllllB)1101110111001D)111011答案:B
.二进制数!10001转换成十进制数是()〇A)47B)48049D)51答案:C.假设某台式计算机内存储器的容量为1KB,其最后ー个字节的地址是()〇A)1023HB)1024HO0400HD)03FFH答案:D.已知英文字母m的ASCH码值为6DH,那么字母q的ASCH码值是()〇A)70HB)71HO72HD)6FH答案:B31.假设某台式计算机的内存储器容量为256MB,硬盘容量为20GBo硬盘的容量是内存容量的()〇
40倍B)60倍C)80倍D)100倍答案:C.ー个字长为8位的无符号二进制整数能表示的十进制数值范围是()。A)〇〜256B)〇〜255〇1〜256D)「255答案:B.已知三个字符为:a、X和5,按它们的ASCH码值升序排序,结果是()〇A)5,a,XB)a,5,XC)X,a,5D)5,X,a答案:D.已知一汉字的国标码是5E38,其内码应是( )〇A)DEB8B)DE38
C)5EB8D)7E58答案:A.已知三个字符为:a、Z和8,按它们的ASCH码值升序排序,结果是()〇A)8、a、ZB)a、8、ZC)a、Z、8D)8、Z、a答案:D.计算机技术中,下列度量存储器容量的单位中,最大的单位是()。A)KBB)MBC)ByteD)GB答案:D.下列编码中,正确的汉字机内码是()〇A)6EF6HB)FB6FHOA3A3HD)C97CH
答案:c.无符号二进制整数1000110转换成十进制数是()。A)68B)70072D)74答案:B.根据汉字国标GB2312-80的规定,1KB的存储容量能存储的汉字内码的个数是()〇A)128B)2560512D)1024答案:C.十进制数111转换成无符号二进制整数是()〇A)01100101B)01101001001100111D)01101111答案:A.字长为6位的无符号二进制整数最大能表示的十进制整
A)64B)63032D)31答案:B.根据国标GB2312-80的规定,总计有各类符号和ー、二级汉字编码()〇A)7145个B)7445个〇3008个D)3755个答案:B.二进制数!001001转换成十进制数是()〇A)72B)71075D)73答案:D.十进制数90转换成无符号二进制数是()〇A)10110101101010〇1011110
D)1011100答案:A.标准ASCII码用7位二进制位表示一个字符的编码,其不同的编码共有()。A)127个B)128个〇256个D)254个答案:B.已知英文字母m的ASCII码值为109,那么英文字母p的ASCII码值是()〇A)112B)1130111D)114答案:A.在数制的转换中,正确的叙述是()〇A)对于相同的十进制整数(>1),其转换结果的位数的变化趋势随着基数R的增大而减少B)对于相同的十进制整数(>1),其转换结果的位数的变化趋势随着基数R的增大而增加C)不同数制的数字符是各不相同的,没有一个数字符是ー样
D)对于同一个整数值的二进制数表示的位数一定大于十进制数字的位数答案:A.下列叙述中,正确的是()〇A)ー个字符的标准ASCII码占ー个字节的存储量,其最高位二进制总为〇B)大写英文字母的ASCI!码值大于小写英文字母的ASCII码值C)同一个英文字母(如字母A)的ASCII码和它在汉字系统下的全角内码是相同的D)标准ASCII码表的.每ー个ASCII码都能在屏幕上显示成ー个相应的字符答案:A.无符号二进制整数11111I转换成十进制数是()。A)71B)65063D)62答案:C.十进制数100转换成无符号二进制整数是()。A)0110101
B)01101000001100100D)01100110答案:c.当前流行的Pentium4CPU的字长是()〇A)8bitB)16bitC)32bitD)64bit答案:C.按照数的进位制概念,下列各个数中正确的ハ进制数是()〇A)1101B)708101109D)B03A答案:A.全拼或简拼汉字输入法的编码属于()〇A)音码B)形声码〇区位码D)形码
答案:A.已知汉字"中"的区位码是5448,则其国标码是()〇A)7468DB)3630HC)6862HD)5650H答案:D.ー个汉字的内码与它的国标码之间的差是()〇A)2020HB)4040HO8080HD)AOAOH答案:C.1KB的准确数值是( )〇A)1024BytesB)lOOOBytesC)1024bitsD)lOOObits答案:A.十进制数55转换成无符号二进制数等于()〇A)llllllB)110111
0111001D)111011答案:B.二进制数!10001转换成十进制数是( )。A)47B)48049D)51答案:C.假设某台式计算机内存储器的容量为1KB,其最后ー个字节的地址是()。A)1023HB)1024H〇0400HD)03FFH答案:D6〇,已知英文字母m的ASCH码值为6DH,那么字母q的ASCII码值是()。A)70HB)71HO72HD)6FH
答案:B61),下面描述中错误的是()。A.系统总体结构图支持软件系统的详细设计B.软件设计是将软件需求转换为软件表示的过程C,数据结构与数据库设计是软件设计的任务之ーD.PAD图是软件详细设计的表示T具正确答案:A答案解析:软件系统的总体结构图是软件架构设计的依据,它并不能支持软件的’详细设计。62),下面关于break语句的描述中,不正确的是break可以用于循环体内break语句可以在for循环语句中出现多次break语句可以在switch语句中出现多次break语句可用于if条件判断语句内正确答案:D63).某ニ叉树有5个度为2的结点,则该ニ叉树中的叶子结点数是()。A.10B.8C.6D.4正确答案:C
答案解析:根据ニ叉树的性质判定,在任意ニ叉树中,度为0的叶子结点总是比度为2的结点多一个。64)<最简单的交换排序方法是()A.快速排序B.选择排序C,堆排序D,冒泡排序正确答案:D.能正确表示逻辑关系:"a210或aWO"的C++语言表达式是()a>10oraく=0a>=0|aく=10a>=10&&aく=0a>=10IIaく=0正确答案:D66),程序中有语句:for(inti=0;i<5;i++)cout<*(p+i)<int*p=a;intp=a;*p=a;p=a;正确答案:A答案解析:从循环语句中可以看出,是在0到/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重庆人文科技学院《证券投资学》2023-2024学年第一学期期末试卷
- 重庆人文科技学院《幼儿园管理》2022-2023学年第一学期期末试卷
- 重庆人文科技学院《药理学基础》2022-2023学年第一学期期末试卷
- 重庆人文科技学院《税务筹划》2023-2024学年第一学期期末试卷
- 重庆人文科技学院《风景园林美术市内写生》2021-2022学年第一学期期末试卷
- 重庆三峡学院《传媒行业查与分析》2023-2024学年第一学期期末试卷
- 2021招标代理专项测试题附答案(四)
- 重庆人文科技学院《劳动与社会保障法》2022-2023学年期末试卷
- 重庆人文科技学院《数据通信技术》2023-2024学年第一学期期末试卷
- 重庆财经学院《新媒体产品设计与制作实训》2023-2024学年第一学期期末试卷
- 职业病基础知识培训
- 《中国的饭局文化》课件
- 2024-2030年中国特色茶具行业市场销售策略及未来发展趋势分析报告
- 2024-2030年中国聚醚醚酮树脂行业前景动态及发展方向预测报告
- 2024时事政治考试题库(100题)
- DL∕T 5776-2018 水平定向钻敷设电力管线技术规定
- 中国非物质文化遗产智慧树知到期末考试答案章节答案2024年云南大学
- (高清版)DZT 0432-2023 煤炭与煤层气矿产综合勘查规范
- 特许经营管理手册范本(餐饮)
- 行为生态学-北京师范大学中国大学mooc课后章节答案期末考试题库2023年
- 农村公路安全生命防护工程施工组织设计[全面]
评论
0/150
提交评论