二级C++模拟491.docx

上传人:b****8 文档编号:10750771 上传时间:2023-02-22 格式:DOCX 页数:28 大小:28.08KB
下载 相关 举报
二级C++模拟491.docx_第1页
第1页 / 共28页
二级C++模拟491.docx_第2页
第2页 / 共28页
二级C++模拟491.docx_第3页
第3页 / 共28页
二级C++模拟491.docx_第4页
第4页 / 共28页
二级C++模拟491.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

二级C++模拟491.docx

《二级C++模拟491.docx》由会员分享,可在线阅读,更多相关《二级C++模拟491.docx(28页珍藏版)》请在冰豆网上搜索。

二级C++模拟491.docx

二级C++模拟491

二级C++模拟491

(总分:

162.00,做题时间:

90分钟)

一、选择题(总题数:

40,分数:

74.00)

1.若有如下语句

#include<iostream.h>

voidmain()

{

intx=3;

do{

x=x-2;

cout<<x;

}while(!

(--x));

}

则上面程序段

(分数:

1.00)

 A.输出的是1

 B.输出的是1和-2 √

 C.输出的是3和0

 D.是死循环

解析:

[解析]do-while语句的一般格式为do循环体语句while(表达式);先执行循环体语句一次,再判断表达式的值,若为真则继续执行循环,否则终止循环。

本题中,先执行x=x-2,即为1。

判断表达式的值,!

(--x)为真,x=0,继续循环。

再次执行循环体语句后,x=-2,此时表达式的值为0,结束循环。

2.关于关键字class和typename,下列表述中正确的是______。

(分数:

2.50)

 A.程序中的typename都可以替换为class √

 B.程序中的class都可以替换为typename

 C.在模板形参表中只能用typename来声明参数的类型

 D.在模板形参表中只能用class或typename来声明参数的类型

解析:

3.有如下程序:

#include<iostream>

usingnamespacestd;

classToy{

public:

Toy(char*_n){strcpy(name,_n);count++;}

~Toy(){count--;}

char*GetName(){returnname;}

staticintgetCount(){returncount;}

private:

charname[10];

staticintcount;

};

intToy:

:

count=0;

intmain(){

Toyt1("Snoopy"),t2("Mickey"),t3("Barbie");

cout<<t1.getCount()<<endl;

return0;

}

运行时的输出结果是______。

(分数:

2.50)

 A.1

 B.2

 C.3 √

 D.运行时出错

解析:

[解析]创建埘象t1、t2、t3时,调用含参构造函数三次,因为count是静态数据成员,三次count自加都是同一数据的自加,三次调用后count的值为3,利用对象调用静态成员函数输出count的值。

4.设有定义“intx=2;”,下列表达式中,值不为6的是______。

(分数:

2.50)

 A.x*=x+1

 B.x++,2*x

 C.x*=(1+x)

 D.2*x,x+=2 √

解析:

[解析]本题考查了复合运算符“*=”和逗号表达式如何正确求值。

逗号表达式的作用是用逗号将表达式连起来,其有效值为最后一个表达式的值,其运算的结合性从左到右进行运算。

选项D是一个逗号表达式,其值为4。

5.将前缀运算符“--”重载为非成员函数,下列原型中能正确用于类中说明的是______。

(分数:

1.00)

 A.Decr&operator--(int);

 B.Decroperator--(Decr&,int);

 C.friendDecr&operator--(Decr&);

 D.friendDecroperator--(Decr&,int); √

解析:

[解析]非成员函数重载用友元函数的形式实现,“--”运算符重载分为前置和后置两种重载方式。

用友元函数来实现“--”运算符的重载时,前置“--”运算符的重载的一般格式为:

friend<type>operator--(ClassName&);后置++运算符的重载的一般格式为:

friend<type>operator--(ClassName&,int)。

所以答案为D。

6.下列函数原型声明中,错误的是______。

(分数:

2.00)

 A.intfunction(intm,intn);

 B.intfunction(int,int);

 C.intfunction(intm=3,intn); √

 D.intfunction(int&m,int&n);

解析:

[解析]在C++中,函数在使用之前要预先声明。

这种声明在标准C++中称为函数原型,函数原型给出了函数名、返回类型以及在调用函数时必须提供的参数个数和类型。

其语法为:

<返回类型><函数名>(<形参列表>);使用函数原型说明有两种形式:

①直接使用函数定义的头部,并在后面加上一个分号;②在函数原型说明中省略参数列表中的形参变量名,仅给出函数名、函数类型、参数个数及次序。

在选项C中,给出了形参变量m的初值。

7.关于关键字class和typename,下列表述正确的是______。

(分数:

3.00)

 A.程序中所有的class都可以替换为typename

 B.程序中所有的typename都可以替换为class √

 C.A和B都可以

 D.A和B都不可以

解析:

8.对于语句“cout<<setfill("*")<<setw(10)<<1<<setfill("*")<<setw

(2)<<2;”的输出结果是______。

(分数:

2.50)

 A.*********1*2 √

 B.********12

 C.*******1*2

 D.12********

解析:

[解析]C++语言中setfill的意思是在空格的地方填上setfill函数中的参数字符,setw的意思是设置整个输出字符串的字符个数,本题中用*来代替空格。

9.打开文件时可单独或组合使用下列文件打开模式______。

①ios_base:

:

app②ios_base:

:

binary

③ios_base:

:

in④ios_base:

:

out

若要以二进制读方式打开一个文件,需使用的文件打开模式为

(分数:

2.00)

 A.①③

 B.①④

 C.②③

 D.②④ √

解析:

[解析]模式ios_base:

:

binary作为二制进文件打开,ios_base:

:

out为输出而打开文件。

10.包容类Contain和内嵌类Embed定义如下:

#include<iostream.h>

classContain

{

private:

intX;

protected:

intz;

public:

classEmbed

{

private:

inty;

public:

Embed(){y=100;}

intEmbed_Fun();

}MyEmbed;

intContain_Fun();

};

对上面的定义,正确的描述是____。

(分数:

1.00)

 A.定义类Embed对象的语句是:

Contain?

Embedembed; √

 B.类Contain的成员函数Contain_Fun()中可以用MyEmbeD.y的方式访问类Embed的私有成员y

 C.类Embed的成员函数Embed_Fun()中可以直接访问Contain的私有成员x

 D.类Embed的成员函数Embed_Fun()中可以直接访问Contain的保护成员Z

解析:

11.下面程序的结果是

#include<iostream.h>

classA

{public:

A(){cout<<"construtA"<<end1;}

virtual~A(){cout<<"destructA"<<end1;}};

classB:

publicA

{};

classC:

publicA

{};

classD:

publicB,publicC

{};

voidmain()

{Dd;}

(分数:

1.00)

 A.constructAdestructA

 B.constructAconstructAdestructAdestructA √

 C.constructAconstructAconstructAdestructAdestructAdestructA

 D.constructAconstructAconstructAconstructAdestructAdestructAdestructAdestructA

解析:

解析:

类D继承了类C和类B,所以在构造的时候分别构造类B和类C。

12.下列代码段声明了3个类

classPerson{};

classStudent:

publicPerson{};

classUndergraduate:

Student{};

下列关于这些类之间关系的描述中,错误的是______。

(分数:

2.00)

 A.类Person是类Undergraduate的基类

 B.类Undergraduate从类student公有继承 √

 C.类student是类Person的派生类

 D.类Undergraduate是类Person的派生类

解析:

[解析]Student类公有继承自Person类,Undergraduate类私有继承自Student类。

所以Undergraduate类是从Student类私有继承的。

13.如有以下程序:

#include<iostream>

usingnamespacestd,

longfun(intn)

{

if(n>2)

return(fun(n-1)+fun(n-2));

else

return2;

}

intmain()

{

cout<<fun(3)<<end1;

return0;

}

则该程序的输出结果应该是______。

(分数:

2.50)

 A.2

 B.3

 C.4 √

 D.5

解析:

[解析]主函数中调用fun(3),在fun内部当n>2时,递归调用fun(n-1)+fun(n-2),否则返回2。

所以当n=3时,调用fun

(2)+fun

(1),即返回2+2,等于4。

14.某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)______。

(分数:

1.00)

 A.3

 B.4

 C.6

 D.7 √

解析:

[解析]根据二叉树的基本性质3:

在任意一棵二叉树中,度为0的叶子结点总比度为2的结点多一个,所以本题中度为2的结点为1-1=0个,所以可以知道本题目中的二叉树的每一个结点都有一个分支,所以共7个结点共7层,即度为7。

15.当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是______。

(分数:

1.00)

 A.任何

 B.公有或保护 √

 C.保护或私有

 D.私有

解析:

[解析]保护继承时基类的public和protected是保护的,私有继承时基类的public和protected是私有的。

16.下列函数模版中的定义中,合法的是______。

(分数:

2.00)

 A.template<typenameT>Tabs(Tx){returnx<0?

-x:

x;} √

 B.templateclass<T>Tabs(Tx){returnx<0?

-x:

x;}

 C.templateT<classT>abs(Tx){returnx<0?

-x:

x;}

 D.templateTabs(Tx){returnx<0?

-x:

x;}

解析:

[解析]此题考查的是函数模板。

声明一个函数模板的格式是:

template<模板形参表声明>函数声明,其中的<模板形参表声明>是由一个或多个“模板形参”组成的,每个“模板形参”可具有以下几种形式:

typename参数名;class参数名;类型修饰参数名。

17.下列关于虚函数的描述中正确的是______。

(分数:

2.50)

 A.如果在重定义函数时使用了保留字virtual,则该重定义函数仍然是虚函数

 B.虚函数不得声明为静态成员函数 √

 C.虚函数不得声明为另一个类的友元函数

 D.派生类必须重新定义基类的虚函数

解析:

[解析]虚函数可以是另一个类的友元函数,但不能是静态成员函数,也不能是内联函数和构造函数。

在派生类中可以重新定义从基类继承下来的虚函数,也可能不需要。

虚函数在派生类中重定义后,重定义的函数仍然是一个虚函数,而且无论是否用virtual修饰。

18.下列关于函数的说法中,正确的是

(分数:

2.50)

 A.C++允许在函数体中定义其他函数

 B.所有的内联函数都要用inline说明

 C.仅函数返回类型不同的同名函数不能作为重载函数使用 √

 D.有默认值的参数应从左至右逐个定义

解析:

19.以下选项中合法的实型常数是

(分数:

2.00)

 A.5E2.0

 B.E-3

 C..2E0 √

 D.1.3E

解析:

[解析]本题考查实型常数的指数表示法,可以肯定的是指数不能为小数即必须为整数,故排除A.由于符号E前面必须有数字,故B也是错误的。

D在指数符号后面没有数字,是错误的。

答案为C。

20.下列程序的输出结果是____。

#include<iostream.h>

main()

{

intm=5;

if(m++>5)

cout<<m;

elsecout<<m--;

}

(分数:

2.00)

 A.7

 B.6 √

 C.5

 D.4

解析:

[解析]此题中,因为m++>5成立(此时m的值变为6),所以执行语句cout<<m;输出结果为6。

21.下面程序段的运行结果是

voidmain()

{

intt,a,b,C;

a=1;b=2;C=2;

while(a<b<c)

{t=a;a=b;b=t;c--;}

cout<<a<<","<<b<<","<<C;

}

(分数:

2.00)

 A.1,2,0 √

 B.2,1,0

 C.1,2,1

 D.2,1,1

解析:

[解析]本题中(a<b<c)的运算次序是先算a<b,返回1,再运算1<c,返回1,所以表达式a<b<c的值为1。

22.有如下程序:

#include<iostream>

usingnamespacestd;

classToy{

public:

Toy(char*_n){strcpy(name,_n);count++:

}

~Toy(){count--;}

char*GetName(){returnname;}

staticintgetCount(){returncount;}

private:

charname[10];

staticintcount;

};

intToy:

:

count=0;

intmain(){

Toyt1("snoopy"),t2("Mickey"),t3("Barbie");

tout<<t1.getCount()<<endl;

return0;

}

运行时的输出结果是______。

(分数:

2.50)

 A.1

 B.2

 C.3 √

 D.运行时出错

解析:

[解析]析构函数主要用于最后函数的释放空间。

本题在已输出t1.getCount()后才调用即不影响所输结果。

23.以下程序运行后的输出结果是____。

#include<iostream.h>

voidmain()

{

charaft="abbcabbcabbc";

inti=0,j=0,k=0;

while(a[i])

{

if(a[i]=="a")

j++;

if(a[i]=="b")

k++;

i++;

}

cout<<j<<""<<k<<end1;

}

(分数:

2.00)

 A.2,6

 B.3,5

 C.4,7

 D.3,6 √

解析:

[解析]程序中首先定义字符数组a,然后在while循环中统计字符a和b的个数。

其中j记录a的个数,k记录b的个数。

第一个if语句是当第i个字符为a时,i加1;第二个if语句是当第i个字符为b时,k加1。

24.下列叙述中正确的是

(分数:

2.00)

 A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构

 B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况

 C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况

 D.循环队列中元素的个数是由队头指针和队尾指针共同决定的 √

解析:

[解析]循环队列是线性表的一种,所以选项A错误。

循环队列的入队和出队需要由队尾指针和队头指针完成,所以选项B和c错误。

25.有如下程序段:

inti=1;intj=4;

intmain(){

inti=5;j+=i;

cout<<i<<j<<endl;

}

运行时的输出结果是

(分数:

1.00)

 A.14

 B.95

 C.59 √

 D.55

解析:

[解析]main函数中的局部变量i屏蔽了全局变量的i,即在main函数中的i取值为5,所以j=4+5=9,输出结果为59,答案为C选项。

26.有如下程序:

#include<iostream>

usingnamespacestd;

classA{

public:

staticinta;

voidinit(){a=1;}

A(inta=2){init();a++;}

};

intA:

:

a=0;

Aobj;

intmain()

{

cout<<obj.a;

return0;

}

运行时输出的结果是______。

(分数:

1.00)

 A.0

 B.1 √

 C.2

 D.3

解析:

[解析]本题考查构造函数,本题中对类中的a数据成员先是赋值为0,当定义了对象obj时,执行构造函数,将a的值变为了1,所以输出1。

27.下列不构成无限循环的语句或语句组是______。

(分数:

2.50)

 A.n=0;do{++n;}while(n<=0); √

 B.n=0;while

(1){n++;}

 C.while(n=10);{n--;}

 D.for(n=0,i=1;;i++)n+=i

解析:

[解析]选项B中while

(1)永远为真,一直自加下次进入死循环;选项C中while(n=10)同理死循环,没有下限范围;选项D中for循环中i也没有循环限定条件也将进入死循环;只有选项A中while(n<=0)循环判定成立,循环结束。

28.软件按功能可以分为:

应用软件、系统软件和支撑软件(或工具软件)。

下面属于应用软件的是______。

(分数:

1.00)

 A.编译程序

 B.操作系统

 C.教务管理系统 √

 D.汇编程序

解析:

[解析]编译软件、操作系统、汇编程序都属于系统软件,只有C教务管理系统才是应用软件。

29.下面叙述中错误的是______。

(分数:

1.00)

 A.软件测试的目的是发现错误并改正错误 √

 B.对被调试的程序进行“错误定位”是程序调试的必要步骤

 C.程序调试通常也称为Debug

 D.软件测试应严格执行测试计划,排除测试的随意性

解析:

[解析]软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项A错误。

程序调试的基本步骤有:

错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。

程序调试通常称为Debug,即排错。

软件测试的基本准则有:

所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。

30.若有以下函数调用语句:

fun(m+n,x+y,f(m+n,z,(x,y)));在此函数调用语句中实参的个数是____。

(分数:

2.00)

 A.6

 B.5

 C.4

 D.3 √

解析:

[解析]参数之间是用逗号分隔的,不要因为参数是表达式而被迷惑。

函数的第一个参数是表达式m+n,第三个参数是表达式f(m+n,z,(x,y))。

31.结构化分析方法是面向____的自顶向下、逐步求精进行需求分析的方法。

(分数:

2.00)

 A.对象

 B.数据结构

 C.数据流 √

 D.目标

解析:

[解析]结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐步求精,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。

32.若有下面的函数调用:

fun(a+b,3,max(n-1,b))

则fun的实参个数是______。

(分数:

1.00)

 A.3 √

 B.4

 C.5

 D.6

解析:

[解析]本题考查函数实参个数的基础知识,根据实参的概念,(a+b)、3、max(n-1,b)分别为其中的3个实参。

故答案为A。

33.实现运行时的多态性要使用____。

(分数:

2.00)

 A.虚函数 √

 B.重载函数

 C.析构函数

 D.构造函数

解析:

[解析]虚函数是实现动态联编的必要条件之一,没有虚函数一定不能实现动态联编。

34.______既可重载为一元运算符,义可重载为二元运算符。

(分数:

1.00)

 A.“*” √

 B.“=”

 C.“=”和“*”

 D.“*”和“*++”

解析:

[解析]本题考查的是运算符的有关概念。

“*”是二元运算符,既可用于间接访问也可用于两数相乘;而“=”和“++”都是一元运算符。

35.关于友元,下列说法错误的是______。

(分数:

2.00)

 A.如果类A是类B的友元,那么类B也是类A的友元 √

 B.如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员

 C.友元关系不能被继承

 D.如果类A是类B的友元,那么类A的所有成员函数都是类B的友元

解析:

[解析]一个类是另一个类的友元,意味着该类的每一个成员函数都是另—个类的友元函数。

36.已知各变量的定义如下

inti=8,k,a,b;

unsignedlongw=5;

doublex=1.42,y=5.2;

则以下符合C++语言语法的表达式是____。

(分数:

2.00)

 A.a+=a-=(b=4)*(a=3) √

 B.a=a*3+2

 C.x%(-3)

 D.y=floati

解析:

37.关于构造函数A()的拷贝构造函数正确的是

(分数:

1.00)

 A.A(A*B);

 B.A(AB);

 C.A(A&B); √

 D.A(A);

解析:

[解析]考查拷贝构造函数的方法。

[解题要点]固定的一种拷贝方式就是<类名>:

<类名>const<类名>&<引用对象名>

[考点链接]如果一个类中没有声明,拷贝构造函数,编译器会自动生成一个如上述形成的仅有的拷贝构造函数。

3

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1