1、国家计算机二级(C+)94 及答案解析(总分:460.00,做题时间:120 分钟)一、选择题(每小题 2分,共 70分) 下列各(总题数:35,分数:70.00)1.下面程序的运行结果是( )。 #ncludeiostream.h int fun(inta,int n) int result=1; for(int i=1;in;+) result=result*ai; return result; void main( ) int a3 =3,4,5; coutfun(a,3)endl; (分数:2.00)A.2B.0C.-2D.12.有如下程序: #includeiostreamh lon
2、g fib(int n) if(n 2) return(fib(n-1)+fib(n-2) ); else return(2); void main( ) cout fib(3); 该程序的输出结果是( )。 (分数:2.00)A.2B.4C.6D.83.在下列关键字中,不能用来表示继承方式的是(分数:2.00)A.privateB.staticC.publicD.protected4.有以下程序段: typedef struct NODE int num; struct NODE *next; OLD; 以下叙述中正确的是_。 (分数:2.00)A.以上的说明形式非法B.NODE 是一个结构
3、体类型C.OLD 是一个结构体类型D.OLD 是一个结构体变量5.下面叙述不正确的是( )。(分数:2.00)A.12AB34CDB.12ab34CDC.12ab34cdD.12AB34cd6.设有如下关系表 (分数:2.00)A.T=RSB.T=RSC.T=RSD.T=R/S7.结构化程序设计的基本原则不包括(分数:2.00)A.多态性B.自顶向下C.模块化D.逐步求精8.下列程序的执行结果为( )。 # include iostreamh void main ( ) int a=3,b=0; int * p=a; b= +a+; cout * p “,“ b endl; (分数:2.00)
4、A.选项卡B.文本框控件C.列表框或组合框控件D.选项组控件9.下面程序的功能是把 316表示为两个加数的和,使两个加数分别能被 13和 11整除,在划线处应填入的是( )。 #includeiostream.h voidmain( ) inti=0,j,k; doi+;k=316-13*i;while(_); j=k/11; cout“316=13*“i“+11*“j; (分数:2.00)A.k/1lB.k%11C.k/11=0D.k%11=010.下列有关类成员的叙述中,正确的是(分数:2.00)A.友元函数是类的成员函数B.类成员的默认访问权限是私有的C.类成员函数必须声明为公有的D.类
5、的静态数据成员不能是常成员11.如果类 A被说明成类 B的友元,则( )。(分数:2.00)A.类 A的成员即类 B的成员B.类 B的成员即类 A的成员C.类 A的成员函数不得访问类 B的成员D.类 B不一定是类 A的友元12.有以下程序: main() char s=“159“,*p; p=s; printf(“%c“,*p+);printf(“%c“,*p+); 程序运行后的输出结果是_。 (分数:2.00)A.15B.16C.12D.5913.下面关于模板的描述,错误的是( )。(分数:2.00)A.函数模板和类模板的参数可以是任意的数据类型B.类模板不能直接使用,必须先实例化为相应的模
6、板类,然后定义了模板类的对象后才能使用C.函数模板不能直接使用,需要实例化为模板函数后才能使用D.类模板的成员函数都是模板函数14.下列程序的输出结果是( )。 # include iostreamh int min( int a,int b) if(a b)return a; else return b; return 0 void main ( ) cout min(1,min(2,3) endl; (分数:2.00)A.0B.1C.2D.315.只能作为成员函数重载的是( )。(分数:2.00)A.类创建时B.创建对象时C.删除对象时D.不自动调用16.有以下程序: point(char
7、 *p)p+=3; main() char b4=a,b,c,d,*p=b; point(p);printf(“%c/n“,*p); 程序运行后的输出结果是_。 (分数:2.00)A.aB.bC.cD.d17.关于虚函数下面说的正确的是(分数:2.00)A.可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的B.可以被两种类访问和引用:该类本身、该类的所有子类C.只能被该类自身所访问和修改D.只能被同一个包中的类访问18.有以下结构体说明和变量定义,如图所示: (分数:2.00)A.P-next=q-next;B.p-next=p-next-next;C.p-next=r
8、;D.p=q-next;19.以下四个程序中,完全正确的是_。 (分数:2.00)A.B.C.D.20.下列关于多态性的描述,错误的是( )。(分数:2.00)A.INDEXON籍贯,学号 TO JGXHB.INDEXON籍贯+学号 TO JGXHC.INDEXON籍贯,STR(学号,4)TO JGXHD.INDEXON籍贯+STR(学号,4)TO JGXH21.this指针是 C+语言实现什么的一种机制?(分数:2.00)A.抽象B.封装C.继承D.重载22.下面程序段的运行结果是( )。 #includeiostreamh void main( ) char*s=“abcde“; S+=2
9、; coutint *y;*pt; int a=1,2,b=3,4; struct st c2=10,a,20,b; pt=c; 以下选项中表达式的值为 11的是_。(分数:2.00)A.*pt-yB.pt-xC.+pt-xD.(pt+)-x28.一个类的友元函数能够访问该类的( )。(分数:2.00)A.私有成员B.保护成员C.公有成员D.所有成员29.对以下说明语句的正确理解是( )。 inta10=6,7,8,9,10; (分数:2.00)A.公有类型B.私有类型C.保护类型D.友元类型30.以下定义数组中错误的是( )。(分数:2.00)A.查询B.数据访问页C.窗体D.报表31.对于
10、模板定义关键字 class和 typename说法不正确的是( )。(分数:2.00)A.程序中的 class并不能都替换为 typenameB.class和 typename都可互相替换C.程序中的 typename都能替换为 classD.程序中的部分 class可以替换为 typename32.下列符号中,正确的 C+标识符是_。(分数:2.00)A.enumB.2bC.foo-9D._3233.下面程序的运行结果为( )。 # include iostreamh class A int num; public: A(inti)hum=i; A(Aa)num=anum+; void pr
11、int( )cout num; ; void main( ) Aa(1),b(a); aprint( ); bprint( ); (分数:2.00)A.显示“打开文件”对话框B.显示“保存文件”对话框C.显示“字体”对话框D.显示“打印”对话框34.下列关于构造函数说法不正确的是( )。(分数:2.00)A.构造函数必须与类同名B.构造函数可以省略不写C.构造函数必须有返回值D.在构造函数中可以对类中的成员进行初始化35.下面程序的功能是把 316表示为两个加数的和,使两个加数分别能被 13和 11整除,在划线处应填入的是( )。 #includeiostream.h voidmain( )
12、inti=0,j,k; doi+;k=316-13*i;while(_); j=k/11; cout“316=13*“i“+11*“j; (分数:2.00)A.7B.8C.11D.12二、填空题(每空 2分,共 30分)(总题数:13,分数:390.00)36.在两种基本测试方法中, 1 测试的原则之一是保证所测模块中每一个独立路径至少要执行一次。(分数:30.00)填空项 1:_37.创建对象数组时,对数组的每一个元素都将调用一次构造函数,如果没有显式给出数组元素的初值,则调用缺省的构造函数。下列程序涉及到对象数组的创建和单个对象的创建其输出结果是 1。 #include using nam
13、espace std; class Foo public: Foo(int x)outnext; while(= 1 ) printf(“%s/n“,p-sub);p= 2 ; main3 Node *hd; hd=fun4; disp(hd);printf(“/n“); (分数:30.00)填空项 1:_41.请按下面注释的提示,将类 B的构造函数定义补充完整。 C1assA int a; public: A(int aaO)aaa; ; class B:public A int b; A c; public: /用 aa初始化基类 A,用 aa1 初始化类对象成员 c B(int aa:
14、1baa2 ; (分数:30.00)填空项 1:_42.假设 int a=1,b=2;则表达式 a+-b的值为 1。(分数:30.00)填空项 1:_43.将 x+y中的+运算符用友元函数重载应写为 1。(分数:30.00)填空项 1:_44.程序测试分为静态分析和动态测试。其中 1 是指不执行程序,而只是对程序文 本进行检查,通过阅读和讨论,分析和发现程序中的错误。(分数:30.00)填空项 1:_45.静态成员函数可以直接访问类的 1 成员,不能直接访问类的 2 成员。(分数:30.00)填空项 1:_46.下列程序的输出结果是 1。 #inCludeiostream using name
15、space std; class Test public: Test2 cnt; Test3cnt; static int Count4 return cnt; private: static int cnt; ; int Test:cnt0; int main5 coutTest:Count6“; Test t1,t2; Test*pT3new Test; Test*pT4new Test; coutTest:Count7; delete pT4; delete pT3; coutTest:Count8endl; return 0; (分数:30.00)填空项 1:_47.设置虚基类的目的是
16、 1,通过 2 表示虚基类。(分数:30.00)填空项 1:_48.以下程序的输出结果是 1。 #includeiostreamh voidfun( ) staticinta=0; a+=2; couta“; voidmain( ) intcc; for(cc=1;cc4;cc+) fun( ); coutendl; (分数:30.00)填空项 1:_国家计算机二级(C+)94 答案解析(总分:460.00,做题时间:120 分钟)一、选择题(每小题 2分,共 70分) 下列各(总题数:35,分数:70.00)1.下面程序的运行结果是( )。 #ncludeiostream.h int fun
17、(inta,int n) int result=1; for(int i=1;in;+) result=result*ai; return result; void main( ) int a3 =3,4,5; coutfun(a,3)endl; (分数:2.00)A.2B.0 C.-2D.1解析:单目的+运算优先级高于双目的+运算,不过+的结合性是自右向 左的,而+是自左至右的,所以上面的两个表达式都是先计算 a+b的值之后,a 再自加 1。2.有如下程序: #includeiostreamh long fib(int n) if(n 2) return(fib(n-1)+fib(n-2)
18、); else return(2); void main( ) cout fib(3); 该程序的输出结果是( )。 (分数:2.00)A.2B.4 C.6D.8解析:fib(3)=fib(2)+fib(1),而 fib(2)的返回值为 2,fib(1)的返回值也为 2,故输出的 fib(3)的值为4。3.在下列关键字中,不能用来表示继承方式的是(分数:2.00)A.privateB.static C.publicD.protected解析:在 C+中继承主要有三种关系:public、protected 和 private。这三种继承关系中 public继承是最为常用的一种继承关系。4.有以下
19、程序段: typedef struct NODE int num; struct NODE *next; OLD; 以下叙述中正确的是_。 (分数:2.00)A.以上的说明形式非法B.NODE 是一个结构体类型C.OLD 是一个结构体类型 D.OLD 是一个结构体变量解析:typedef 关键字用于声明一个新的类型名代替已有的类型名。本题中如果没有用 typedef 进行定义的 话,则 struct NODE 为结构体类型,现在用 typedef 定义后,相当于用 OLD 代表了 struct NODE 这一结构体 类型,故 OLD 为结构体类型。5.下面叙述不正确的是( )。(分数:2.00
20、)A.12AB34CD B.12ab34CDC.12ab34cdD.12AB34cd解析:ROUND( )函数在保留指定的小数位数时,要做四舍五入运算,保留小数点后两位,结果为12346,是一个数值型数据。LEN( )函数只能用来求字符串的长度,本题中 ROUND( )的函数值为数值型,函数类型不匹配,系统报错。6.设有如下关系表 (分数:2.00)A.T=RSB.T=RS C.T=RSD.T=R/S解析:从图中可以看出,关系 T 是关系 R 和关系 S 的简单合并,而合并的符号为,所以答案为 T=RS。7.结构化程序设计的基本原则不包括(分数:2.00)A.多态性 B.自顶向下C.模块化D.
21、逐步求精解析:结构化程序设计的原则包括:“自顶而下,逐步求精”的设计思想,“独立功能,单出、入口”的模块化设计等。多态性是面向对象程序语言的特征。8.下列程序的执行结果为( )。 # include iostreamh void main ( ) int a=3,b=0; int * p=a; b= +a+; cout * p “,“ b endl; (分数:2.00)A.选项卡B.文本框控件C.列表框或组合框控件 D.选项组控件解析:在 Visual Basic中,定义变量的关键字为 Dim、Static、Redim、Public 或 Private,它们在使用上是不同的,Dim 用于标准模
22、块、窗体模块或过程中定义变量或者数组;Static 用于过程中定义静态变量或数组;Public 用于在标准模块中定义全局变量或数组;Redim 主要用于定义数组。9.下面程序的功能是把 316表示为两个加数的和,使两个加数分别能被 13和 11整除,在划线处应填入的是( )。 #includeiostream.h voidmain( ) inti=0,j,k; doi+;k=316-13*i;while(_); j=k/11; cout“316=13*“i“+11*“j; (分数:2.00)A.k/1lB.k%11 C.k/11=0D.k%11=0解析:do-while 语句的一般形式是: d
23、o 语句 while(表达式); 特点是:“直到型”循环结构。先执行一次“语句”,判“表达式”,当“表达式”为非 0,再执行“语句”,直到“表达式”的值为 0时停止执行语句。在一般情况下,用 while和 do-while语句解决同一问题时,若二者的循环体部分是一样的,它们的结果也一样。但当 while后面的“表达式”一开始就为“假”时,两种循环的结果不同。这是因为此时 while循环的循环不被执行,而 do-while循环的循环体被执行一次。本题的关键是两个加数分别能被 13 和 11整除,在 i=0时,直接将 316赋值给 k,当 k%11的值为 0时,则不必执行循环,将执行j=k/11语
24、句,输出结果,所以该表达式合理的条件是 k5%11。 10.下列有关类成员的叙述中,正确的是(分数:2.00)A.友元函数是类的成员函数B.类成员的默认访问权限是私有的 C.类成员函数必须声明为公有的D.类的静态数据成员不能是常成员解析:从类的定义可以知道类的私有成员只能由本类中的成员函数访问,外界不能访问一个对象的私有部分,所以,在 C+中类成员的默认访问权限是私有的。在类中,类成员函数可以是公有的,也可以是私有的,友元函数属于类的外部函数。11.如果类 A被说明成类 B的友元,则( )。(分数:2.00)A.类 A的成员即类 B的成员B.类 B的成员即类 A的成员C.类 A的成员函数不得访
25、问类 B的成员D.类 B不一定是类 A的友元 解析:本题考查的是友元类的定义:类 A为类 B的友元类,则类 A的所 有成员函数都是类 B的友元函数,但反之则不一定成立。12.有以下程序: main() char s=“159“,*p; p=s; printf(“%c“,*p+);printf(“%c“,*p+); 程序运行后的输出结果是_。 (分数:2.00)A.15 B.16C.12D.59解析: 本题通过“p=s”将指针变量 p 指向字符数组 s,在第一次输出时,由于+和*为同一优先级,“*p+” 相于“*(p+)”。p 指向 s1,输出为 s1的值。13.下面关于模板的描述,错误的是(
26、)。(分数:2.00)A.函数模板和类模板的参数可以是任意的数据类型 B.类模板不能直接使用,必须先实例化为相应的模板类,然后定义了模板类的对象后才能使用C.函数模板不能直接使用,需要实例化为模板函数后才能使用D.类模板的成员函数都是模板函数解析:类模板不能被重载,而函数模板可以,它们不能被未知的数据类型 替换。14.下列程序的输出结果是( )。 # include iostreamh int min( int a,int b) if(a b)return a; else return b; return 0 void main ( ) cout min(1,min(2,3) endl; (分
27、数:2.00)A.0B.1 C.2D.3解析:本题考查的是函数的调用,第一次调用 min(2,3),因为 2next=q-next;B.p-next=p-next-next;C.p-next=r;D.p=q-next; 解析:要想将 q 所指结点从链表中删除,同时保持链表的连续,必需使 p 结点的 next 指向 r,在四个选项 中,只有选项 D 不能做到。19.以下四个程序中,完全正确的是_。 (分数:2.00)A.B.C. D.解析:C 程序中注释用“/*”和“*/”括起来,它可以出现在程序中任何合适的地方。选项 A 中“main();” 是一个函数声明语句,下面的大括号及其内容作为一个语
28、句块,应放在程序的大括号中,故选取项 A 错误; 选项 B 中的注释语句不正确,因为程序在编译时认别到两次“/*”作为注释的开始,但未识别到“*/”作 为注释的结束,故选项 B 错误;选项 D 的“include”前缺少“#”,故选项 D 错误。20.下列关于多态性的描述,错误的是( )。(分数:2.00)A.INDEXON籍贯,学号 TO JGXHB.INDEXON籍贯+学号 TO JGXHC.INDEXON籍贯,STR(学号,4)TO JGXHD.INDEXON籍贯+STR(学号,4)TO JGXH 解析:PasswordChar 属性指定文本框控件内是显示用户输入的字符还是显示占位符。当
29、为属性指定一个占位符(例如本题中的星号“*”) ,文本框中只显示占位符。由于一个汉字占两个字符位,因此本题在文本框中将显示 8个星号。21.this指针是 C+语言实现什么的一种机制?(分数:2.00)A.抽象B.封装 C.继承D.重载解析:this 指针是 C+语言实现封装的一种机制,它将对象和该对象调用的成员函数连接在一起,在外部看来,每一个对象都拥有自己的函数成员。22.下面程序段的运行结果是( )。 #includeiostreamh void main( ) char*s=“abcde“; S+=2; coutint *y;*pt; int a=1,2,b=3,4; struct s
30、t c2=10,a,20,b; pt=c; 以下选项中表达式的值为 11的是_。(分数:2.00)A.*pt-yB.pt-xC.+pt-x D.(pt+)-x解析:此题主要考核的是结构体类型的指针。题目中定义了一个 st 结构体类型,然后定义了 st 型的结构体 指针变量*pt 及结构体数组 c,并对结构体数组进行了初始化,且将结构体指针变量 pt 指向了数组 c,则 pt-x 的值为 10,则+pt-x 的值为 11(注:“-”运算符的优先级高于“+”),故选项 C 正确。28.一个类的友元函数能够访问该类的( )。(分数:2.00)A.私有成员B.保护成员C.公有成员D.所有成员 解析:一
31、个类的友元函数对类成员的访问能力等同于类的成员函数,即能访问类的所有成员。 29.对以下说明语句的正确理解是( )。 inta10=6,7,8,9,10; (分数:2.00)A.公有类型B.私有类型C.保护类型D.友元类型 解析:对话框的主要特点是:不必有最大化按钮和最小化按钮,对话框中通常设置有退出按钮,用于退出对话框。Visual Basic 有两类对话框:一类是对话框关闭之前,不能执行其他操作,称之为“模式”对话框;另一类是对话框关闭之前,能够继续执行其他操作,称之为“无模式”对话框。30.以下定义数组中错误的是( )。(分数:2.00)A.查询B.数据访问页 C.窗体D.报表解析:C+
32、语言中拷贝构造函数的参数一般是某个对象的引用名。31.对于模板定义关键字 class和 typename说法不正确的是( )。(分数:2.00)A.程序中的 class并不能都替换为 typenameB.class和 typename都可互相替换 C.程序中的 typename都能替换为 classD.程序中的部分 class可以替换为 typename解析:在 C+程序中的 typename是都可以替换为 class的,但 class不能都替换为 typename。32.下列符号中,正确的 C+标识符是_。(分数:2.00)A.enumB.2bC.foo-9D._32解析:33.下面程序的运
33、行结果为( )。 # include iostreamh class A int num; public: A(inti)hum=i; A(Aa)num=anum+; void print( )cout num; ; void main( ) Aa(1),b(a); aprint( ); bprint( ); (分数:2.00)A.显示“打开文件”对话框B.显示“保存文件”对话框C.显示“字体”对话框 D.显示“打印”对话框解析:选项卡是用来分页的,而选项组控件是用来选择列表的,文本框控件主要用来输入或编辑字段数据。34.下列关于构造函数说法不正确的是( )。(分数:2.00)A.构造函数必须
34、与类同名B.构造函数可以省略不写C.构造函数必须有返回值 D.在构造函数中可以对类中的成员进行初始化解析:构造函数是一类特殊的函数,其特点是函数名与类同名,没有返回值,也可以省略不写,还可以对类中的成员进行初始化。 35.下面程序的功能是把 316表示为两个加数的和,使两个加数分别能被 13和 11整除,在划线处应填入的是( )。 #includeiostream.h voidmain( ) inti=0,j,k; doi+;k=316-13*i;while(_); j=k/11; cout“316=13*“i“+11*“j; (分数:2.00)A.7 B.8C.11D.12解析:C+语言中逗
35、号“,”也是一种运算符,称为逗号运算符。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。其一般形式为:表达式 1,表达式 2,其求值过程是分别求两个表达式的值,并以表达式 2的值作为整个逗号表达式的值。逗号表达式的一般形式可以扩展为:表达式 1,表达式 2,表达式 3,表达式 n,它的值为表达式 n的值。二、填空题(每空 2分,共 30分)(总题数:13,分数:390.00)36.在两种基本测试方法中, 1 测试的原则之一是保证所测模块中每一个独立路径至少要执行一次。(分数:30.00)填空项 1:_ (正确答案:白盒)解析:按功能划分可以分为白盒测试法和黑盒测试法。白盒测试的基本
36、原则是保证所测模块中每一个独立路径至少要执行一次。 37.创建对象数组时,对数组的每一个元素都将调用一次构造函数,如果没有显式给出数组元素的初值,则调用缺省的构造函数。下列程序涉及到对象数组的创建和单个对象的创建其输出结果是 1。 #include using namespace std; class Foo public: Foo(int x)outnext; while(= 1 ) printf(“%s/n“,p-sub);p= 2 ; main3 Node *hd; hd=fun4; disp(hd);printf(“/n“); (分数:30.00)填空项 1:_ (正确答案:p!=NU
37、LL 或 p 或 p!=0 或 p!=/0 , p-next 或 (*p).next)解析:此题主要考核的是用指针处理链表。自定义结构体类型名为 Node,并定义一个指向结点类型的指针 next。用 Node 来定义头结点指针变量 h,并定义另一个指针变量 p 指向了第一个结点,在满足 p 未指向最 后一个结点的空指针时,输出 p 所指向结点的字符串,所以第一个空填 p!=NULL 或 p 或 p!=0 或 p!=/0, 然后将 p 指向下一个非空结点,所以第二个空填 p-next 或与其等效的形式,反复执行直到所有的结点都输 出,即遇到 p 的值为 NULL。41.请按下面注释的提示,将类
38、B的构造函数定义补充完整。 C1assA int a; public: A(int aaO)aaa; ; class B:public A int b; A c; public: /用 aa初始化基类 A,用 aa1 初始化类对象成员 c B(int aa: 1baa2 ; (分数:30.00)填空项 1:_ (正确答案:A(Aa),c(aa+1)或 c(aa+1),A(aA))解析:本题考核派生类构造函数的定义。题中要求用明初始化基类 A,用 aa+1初始化类对象成员 c,用的初始化列表的形式,即 A(aA),c(aa+1)或 c(aa+1),A(aA) 。42.假设 int a=1,b=2
39、;则表达式 a+-b的值为 1。(分数:30.00)填空项 1:_ (正确答案:2)解析:因为运算符+和-都是右结合的且优先级高于双目运算符+,所以上式的 运算顺序为先 a+,-b,再 a+b,最后 a自加 1。 43.将 x+y中的+运算符用友元函数重载应写为 1。(分数:30.00)填空项 1:_ (正确答案:operator+(x,y))解析:C+中用成员函数重载 x+y为 xoperator+(y);,用友元函数重载 x+y为 operator+(x,y)。 44.程序测试分为静态分析和动态测试。其中 1 是指不执行程序,而只是对程序文 本进行检查,通过阅读和讨论,分析和发现程序中的错
40、误。(分数:30.00)填空项 1:_ (正确答案:静态分析)解析:静态测试指不在计算机上运行被测试程序,而采用其他手段来达到对程序进行检测的目的,包括人 工测试和计算机辅助静态分析方法。动态测试指通过在计算机上运行被测试程序,并用所设计的测试用例 对程序进行检测的方法。45.静态成员函数可以直接访问类的 1 成员,不能直接访问类的 2 成员。(分数:30.00)填空项 1:_ (正确答案:静态)解析:静态成员函数可以直接访问该类中的静态数据成员,而不能访问该类中的非静态数据成员。46.下列程序的输出结果是 1。 #inCludeiostream using namespace std; cl
41、ass Test public: Test2 cnt; Test3cnt; static int Count4 return cnt; private: static int cnt; ; int Test:cnt0; int main5 coutTest:Count6“; Test t1,t2; Test*pT3new Test; Test*pT4new Test; coutTest:Count7; delete pT4; delete pT3; coutTest:Count8endl; return 0; (分数:30.00)填空项 1:_ (正确答案:042)解析:本题考核静态数据成员与
42、静态成员函数的定义与使用方式。C中,提出静态成员的目的是为了解决数据共享的问题。一个给定类的每个对象都有类中定义的所有数据的自己的拷贝,如果在类中将数据成员用 static说明为静态的,则这个类成员只有一个拷贝并被这个类的所有对象所共享。类 Test的静态成员 cnt,初始值为 0,所以执行语句“coutTest:Count-|_|-“;“后输出 0。然后程序创建了两个对象 t1和 t2,以及两个对象指针并调用 new来初始化指针,所以 cnt的值变成了4(即此时输出为 4)。然后程序将对象指针 pT4、pT3 delete 了,此时将分别调用析构函数将 cnt的减 1,所以最后输出 cnt的
43、值为 2。47.设置虚基类的目的是 1,通过 2 表示虚基类。(分数:30.00)填空项 1:_ (正确答案:解决二义性问题)解析:解决二义性的两个基本方法一是用域名进行限制,二是用虚基类的方法。48.以下程序的输出结果是 1。 #includeiostreamh voidfun( ) staticinta=0; a+=2; couta“; voidmain( ) intcc; for(cc=1;cc4;cc+) fun( ); coutendl; (分数:30.00)填空项 1:_ (正确答案:2 4 6)解析:本题考查静态局部变量的使用。用关键字 static声明的局部变量为“静态局部变量”,其值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1