1、国家计算机二级(C+)92 及答案解析(总分:460.00,做题时间:120 分钟)一、选择题(每小题 2 分,共 70 分) 下列各(总题数:35,分数:70.00)1.下列程序的运行结果是( )。 #includeiostreamh void fun(int *a,iht *B) int *k; k=a;a=b;b=k; void main( ) inta=3,b=6,*x= class Base protected; Base()cout,+,*,D.func2(); retum0; 运行程序,屏幕上将显示输出_。 (分数:2.00)A.B1B2B.A1A2C.B1A2D.A1B232.
2、对类的构造函数和析构函数描述正确的是( )。(分数:2.00)A.Redim a As IntegerB.Static a As IntegerC.Public a As IntegerD.Dim a As Integer33.以下哪个不是 C+语言中的有效标识符?(分数:2.00)A.表中不允许出现相同的行B.表中不允许出现相同的列C.表中的行次序可以交换D.表中的列次序不可以交换34.下列选项,不正确的是( )。(分数:2.00)A.i*m+jB.j*m+iC.i*m+j-1D.i*m+j+135.虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调
3、用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序: #includediostream using namespace std; class Base public: virtual void f()toutg(); return 0; 、 运行时输出的结果是(分数:2.00)A.f+g+B.f0+g+C.f+gO+D.f0+g0+二、填空题(每空 2 分,共 30 分)(总题数:13,分数:390.00)36.C+语言中的多态性是在编译时通过 1 和模板体现的,在运行时是通过 2 体现的。(分数:30.00)填空项 1:_37.C+语句 const char * con
4、st p= “hello“;,所定义的指针 p 和它所指的内容都不能被 1。(分数:30.00)填空项 1:_38.C+语言中关键字运算符有 new,delete 和 1。(分数:30.00)填空项 1:_39.在 C+语言中,访问一个对象的成员所用的运算符是 1,访问一个指针所指向的对象的成员所用的运算符是 2。(分数:30.00)填空项 1:_40.以下程序用于判断 a、b、c 能否构成三角形,若能,输出 YES,否则输出 NO。当给 a、b、c 输入三角形三条边长时,确定 a、b、c 能构成三角形的条件是需同时满足三 个条件:a+bc,a+cb,b+ca。请填空。 main1 float
5、 a,b,c; scanf(“%f%f%f“, if(= 2)printf(“YES/n“); /*a、b、c 能构成三角形*/ else printf(“NO/n“); /*a、b、c 不能构成三角形*/ (分数:30.00)填空项 1:_41.假设 int a=1,b=2;则表达式 a+-b 的值为 1。(分数:30.00)填空项 1:_42.以下程序的输出结果是 1。 #includeiostreamh void main2 int a=0; a+=(a=8); cout a; (分数:30.00)填空项 1:_43.诊断和改正程序中错误的工作通常称为 1。(分数:30.00)填空项 1
6、:_44. 1 的任务是诊断和改正程序中的错误。(分数:30.00)45.在关系数据库中,把数据表示成二维表,每一个二维表称为 1。(分数:30.00)填空项 1:_46.以下程序运行时,若从键盘输入:10 20 30,输出的结果是 1。 #include main2 int i=0,j=0,k=0; scanf(“%d%*d%d“, printf(“%d%d%d/n“,i,j,k); (分数:30.00)填空项 1:_47.在 c+语言的面向对象程序设计框架中, 1 是程序的基本组成单元。(分数:30.00)填空项 1:_48.为解决在多重继承环境中因公共基类带来的 1 问题,C+语言提供了
7、虚基类机制。(分数:30.00)填空项 1:_国家计算机二级(C+)92 答案解析(总分:460.00,做题时间:120 分钟)一、选择题(每小题 2 分,共 70 分) 下列各(总题数:35,分数:70.00)1.下列程序的运行结果是( )。 #includeiostreamh void fun(int *a,iht *B) int *k; k=a;a=b;b=k; void main( ) inta=3,b=6,*x= class Base protected; Base()cout,+,*,D.,只能用友元函数重载的是。9.下列运算符中,不能被重载的是(分数:2.00)A. p-func
8、2(); retum0; 运行程序,屏幕上将显示输出_。 (分数:2.00)A.B1B2B.A1A2C.B1A2D.A1B2解析:32.对类的构造函数和析构函数描述正确的是( )。(分数:2.00)A.Redim a As IntegerB.Static a As Integer C.Public a As IntegerD.Dim a As Integer解析:C+中用友元函数重载运算符至少有一个参数,重载一目运算符要有一个参数,重载二目运算符要有两个参数。33.以下哪个不是 C+语言中的有效标识符?(分数:2.00)A.表中不允许出现相同的行B.表中不允许出现相同的列C.表中的行次序可以交
9、换D.表中的列次序不可以交换 解析:编辑框中 ReadOnly 属性指定用户能否编辑编辑框中的内容。该属性的默认值为F,此时,可以编辑编辑框中的内容;当属性值为T时,编辑框中内容为只读。34.下列选项,不正确的是( )。(分数:2.00)A.i*m+j B.j*m+iC.i*m+j-1D.i*m+j+1解析:运算符“%”的两侧都应该是整型数。另外,本题需要掌握的知识点是 x%=k 等价于 x=x%k。35.虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序: #includedios
10、tream using namespace std; class Base public: virtual void f()toutg(); return 0; 、 运行时输出的结果是(分数:2.00)A.f+g+B.f0+g+ C.f+gO+D.f0+g0+解析:此题考查通过虚函数实现多态调用的方法。由于基类 Base 中 f()为虚函数,在派生类 Derived 中f()虽然重定义为虚陈述函数,根据虚函数支持多态调用的规则,基类指针*p 指向派生类对象 d,即Base*p=d,此时通过基类指针调用虚函数 f()时,被调用的是基类指针所指的实际对象 d 的虚函数 f(),调用实函数 g()时
11、,则仍为基类的实函数 g(),所以输出结果为 fo+g+。二、填空题(每空 2 分,共 30 分)(总题数:13,分数:390.00)36.C+语言中的多态性是在编译时通过 1 和模板体现的,在运行时是通过 2 体现的。(分数:30.00)填空项 1:_ (正确答案:函数重载)解析:C+中的多态性是在编译时通过函数重载和模板体现的,在运行时是通过虚函数体现的。 37.C+语句 const char * const p= “hello“;,所定义的指针 p 和它所指的内容都不能被 1。(分数:30.00)填空项 1:_ (正确答案:改变)解析:本题考查的是定义常量的关键字 const,由 son
12、st 定义的变量的值不可以再改变,所以定义时必须进行初始化。38.C+语言中关键字运算符有 new,delete 和 1。(分数:30.00)填空项 1:_ (正确答案:sizeof)解析:C+语言中关键字运算符有 3 个分别 new,delete 和 sizeof。new 是申请内存, delete 是释放内存,sizeof 是求字节数。39.在 C+语言中,访问一个对象的成员所用的运算符是 1,访问一个指针所指向的对象的成员所用的运算符是 2。(分数:30.00)填空项 1:_ (正确答案:成员选择运算符(或“))解析:本题考查的是使用对象和对象指针访问成员所使用的符号的不同,请注意它们的
13、区别。 40.以下程序用于判断 a、b、c 能否构成三角形,若能,输出 YES,否则输出 NO。当给 a、b、c 输入三角形三条边长时,确定 a、b、c 能构成三角形的条件是需同时满足三 个条件:a+bc,a+cb,b+ca。请填空。 main1 float a,b,c; scanf(“%f%f%f“, if(= 2)printf(“YES/n“); /*a、b、c 能构成三角形*/ else printf(“NO/n“); /*a、b、c 不能构成三角形*/ (分数:30.00)填空项 1:_ (正确答案:(a+bc) scanf(“%d%*d%d“, printf(“%d%d%d/n“,i
14、,j,k); (分数:30.00)填空项 1:_ (正确答案:10300)解析:在 scanf 格式控制符中,如果在%后有一个“*”附加说明符,表示跳过它指定的列数。本题中“%d%*d%d“”表示将 10 赋给 i,%*d 表示读入整数但不赋给任何变量,然后再读入整数 30 赋给变量 j, 那么变量 k 并没有重新赋值,仍为初始值 0。所以输出的结果为 10300。47.在 c+语言的面向对象程序设计框架中, 1 是程序的基本组成单元。(分数:30.00)填空项 1:_ (正确答案:类)解析:C+语言面向对象程序设计的基本组成单元是 class,面向过程的程序设计的 基本组成单元是函数。48.为解决在多重继承环境中因公共基类带来的 1 问题,C+语言提供了虚基类机制。(分数:30.00)填空项 1:_ (正确答案:二义性)解析:本题考查关于 C+中虚基类的作用。C+中产生虚基类的作用就是为了解决继承中的二义性问题,通过虚基类继承可以把父基类中相同的函数只编译一次。