计算机三级正确答案报错,2012年全国计算机等级考试二级C++模拟试题及答案(4)...

n&&m

B.switch语句结构中必须有default语句

C.if语句结构中必须有else语句

D.如果至少有一个操作数为true,则包含“||”运算符的表达式为true

【参考答案】 D

13.下面关于break语句的描述中,不正确的是( )

A.break可以用于循环体内

B.break语句可以在for循环语句中出现多次

C.break语句可以在switch语句中出现多次

D.break语句可用于if条件判断语句内

【参考答案】 D

14.下面程序错误的是( )

① #include

② void main()

③ {

④ int *p=new int[1];

⑤ p=9;

⑥ cout<

⑦ delete[]p;

⑧ }

A.④ B.⑤ C.⑥ D.⑦

【参考答案】 B

15.不能作为重载函数的调用的依据是( )

A.参数个数 B.参数类型 C.函数类型 D.函数名称

【参考答案】 D

16.在C++语言中,数据封装要解决的问题是( )

A.数据的规范化 B.便于数据转换

C.避免数据丢失 D.防止不同模块之间数据的非法访问

【参考答案】 D

17.类的构造函数和析构函数描述正确的是()

A.构造函数可以重载,析构函数不能重载

B.构造函数不能重载,析构函数可以重载

C.构造函数可以重载,析构函数也可以重载

D.构造函数不能重载,析构函数也不能重载

【参考答案】 A

18.对静态数据成员的描述中,正确的是( )

A.静态数据成员是类的所有对象共享的数据

B.类的每个对象都有自己的静态数据成员

C.类的不同对象有不同的静态数据成员值

D.静态数据成员不能通过类的对象调用

【参考答案】 A

19.可以用p.a的形式访问派生类对象p的基类成员a,其中a是( )

A.私有继承的公有成员 B.公有继承的私有成员

C.公有继承的保护成员 D.公有继承的公有成员

【参考答案】 D

20.下面关于虚函数的描述,错误的是( )

A.在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数

B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数

C.虚函数可以是另一个类的友元函数,但不能是静态成员函数

D.基类中说明的纯虚函数在其任何派生类中都必须实现

【参考答案】 B来源:-计算机二级考试

21.语句ofstream f(″SALARY.DAT″,

ios::app|ios::binary);的功能是建立流对象f,试图打开文件SALARY.DAT并与之连接,且( )

A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件

B.若文件存在,将其置为空文件;若文件不存在,找开失败

C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件

D.若文件存在,找开失败;若文件不存在,建立一个新文件

【参考答案】 A

22.下面程序的运行结果是( )

#include

void fun(int *a,int *b)

{int x=*a;

 *a=*b;*b=x;

 cout<

void main()

{int x=1,y=2;

fun(&x,&y);

 cout<

A.12 12 B.12 21 C.21 12 D.21 21

【参考答案】 D

23.以下哪个特征不是面向对象思想中的主要特征?( )

A.多态 B.继承 C.封装 D.垃圾回收

【参考答案】 D

24.C++中运算符优先级由高到低排列正确的是( )

A.:: ++ +|| B.< * ||,

C.sizeof % + :: D., && new sizeof

【参考答案】 A

25.以下for语句中不是死循环的是( )

A.for(int i=0;i<1 i="" b="" for="" int="" i="0;;++i);" c="" for="" int="" i="1;i">0;++i); D.for(;;);

【参考答案】 A来源:-计算机二级考试

26.以下定义数组中错误的是( )

A.int a[10]; B.int a[2][20]; C.int a[20][]; D.int a[];

【参考答案】 C

27.下面程序错误的语句是( )

#include ″iostrteam.h″

① void main()

② {

③ int A=0;

④ int & B;

⑤ B=A;

⑥ cout<

⑦ cout<

⑧ }

A.② B.③ C.④ D.⑥

【参考答案】 C

28.函数int test(int a,int b=1,int c=0),下列调用不合法的个数是( )

test(0); test(0,0); test(); test(0,0,0);

A.0 B.1 C.2 D.3

【参考答案】 C

29.C++语言中关于构造函数的说法正确的是( )

A.构造函数的函数名不必和类名相同 B.构造函数只能每一个

C.每个类必定有构造函数 D.构造函数必有返回值

【参考答案】 C

30.下面程序的执行结果为( )

#include ″iostream″

using namespace std;

class A

{

int a;

public:

void Seta(int x){a=x;}

void Display_a(){cout<

};

class B

{

int b;

public:

void Setb(int x){b=x;}

void Dispaly_b(){cout<

};

class C:public A,private B

{private:

int c;

public:

void Setc(int x,int y,int z)

{ c=z;Seta(x);Setb(y);}

void Display_c(){cout<

① void main()

② {

③ C cc;

④ cc.Seta(1);

⑤ cc.Display_a();

⑥ cc.Setc(2,2,3);

⑦ cc.Dispaly_b();

⑧ cc.Display_c();

}

A.输出为2 2 3 B.有错误在第5行 C.输出为1 2 3 D.有错误在第7行

【参考答案】 D来源:-计算机二级考试

31.多态性指的是( )

A.以任何方式调用一个虚函数

B.以任何方式调用一个纯虚函数

C.借助于指向对象的基类指针或引用调用一个虚函数

D.借助于指向对象的基类指针或引用调用一个纯虚函数

【参考答案】 C

32.只能作为成员函数重载的是( )

A.= B.++ C.* D.new

【参考答案】 A

33.语句cout<

A.1024.4567 B.1024 C.1024.45 D.1e+003

【参考答案】 D

34.下列程序的结果是( )

#include ″iostream.h″

void main()

{

char *str;

str=″test!″;

cout<

}

A.程序错误 B.! C.′\0′ D.为空字符

【参考答案】 D

35.C++语言函数中不能由系统自动生成的是( )

A.析构函数 B.构造函数 C.内联函数 D.拷贝构造函数

【参考答案】 C来源:-计算机二级考试

二、填空题

1.数据结构分为逻辑结构与存储结构,线性链表属于【1】。

【参考答案】

【1】存储结构

2.耦合和内聚是评价模块独立性的两个主要标准,其中【2】反映了模块内各成分之间的联系。

【参考答案】

【2】内聚

3.数据库设计分为以下6个设计阶段:需求分析阶段、【3】、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。

【参考答案】

【3】数据库概念设计阶段

4.面向对象的模型中,最基本的概念是对象和【4】。

【参考答案】

【4】类

5.数据模型按不同应用层次分成3种类型,它们是概念数据模型、【5】和物理数据模型。

【参考答案】

【5】逻辑数据模型

6.开发一个C++语言程序的步骤通常包括编辑、【6】、链接、运行和调试。

【参考答案】

【6】编译

7.下面程序的输出结果为【7】。

#include

void main()

{

int num=0,i=8;

do{

i--;

num++;

}while(--i);

cout<

}

【参考答案】

【7】-4来源:-计算机二级考试

8.下面程序的运行结果为【8】。

#include

void fun(int x=0,int y=0)

{cout<

void main()

{fun(5);}

【参考答案】

【8】50

9.C++语言支持的两种多态性分别是编译时的多态性和【9】的多态性。

【参考答案】

【9】运行时

10.cout.put(′A′);,还可以表示为【10】。

【参考答案】

【10】cout<

11.将以下程序写成三目运算表达式是【11】。

if(a>b)max=a;

else max=b;

【参考答案】

【11】max=(a>b)?a:b;

12.下面程序的功能是将字符数组a中下标值为偶数的元素从小到大排列,其他元素不变,请填空。

#include

#include

void main()

{ char a[]=″clanguage″,t;

int i,j,k;

k=strlen(a);

for(i=0;i<=k-2;i+=2)

for(j=i+2;j<=k;【12】)

if(【13】)

{ t=a[i];a[i]=a[j];a[j]=t;}

cout<

cout<

【参考答案】来源:-计算机二级考试

【12】j+=2 【13】a[i]>=a[j]或a[i]>a[j]

13.请定义一个函数名为A,返回值为int,没有参数的纯虚函数的定义是【14】。

【参考答案】

【14】virtual int A()=0;

14.假设fin是一个文件流对象,则关闭文件的语句是【15】。

【参考答案】

【15】fin

上机部分

一、改错题

使用VC6打开考生文件夹下的工程kt5_1,此工程包含一个源程序文件kt5_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:

(1,2)

5,6

(6,9)

源程序文件kt5_1.cpp清单如下:

#include

classA{

public:

A(inti,intj){a=i;b=j;}

/****************found*******************/

voidMove(intx,inty){a+=x;b+=y}

voidShow(){cout<

private:

inta,b;

};

classB:privateA

{

public:

/****************found*******************/

B(inti,intj,intk,intl):(i,j){x=k;y=l;}

voidShow(){cout<

voidfun(){Move(3,5);}

/****************found*******************/

voidf1(){Show();}

private:

intx,y;

};来源:-计算机二级考试

voidmain()

{

Ae(1,2);

e.Show();

Bd(3,4,5,6);

d.fun();

d.Show();

d.f1();

}

【参考答案】

(1)将void Move( int x, int y) {a+=x;b+=y}

改为:void Move( int x, int y) {a+=x;b+=y;}

(2)将B(int i,int j,int k,int l):(i,j) {x=k;y=l;}

改为:B(int i,int j,int k,int l):A(i,j) {x=k;y=l;}

(3)将void f1(){Show();}

改为:void f1(){A::Show();}

【试题解析】

(1)主要考查对表达式定义规则的掌握,此处缺少一个“;”,任何一个表达式都应该以分号作为结束标志;

(2)主要考查对派生类构造函数定义的掌握,参数列表中基类的成员应使用基类构造函数初始化,因此必须向基类传递参数,传递时直接使用基类名;

(3)主要考查对基类函数调用方法的掌握,为了调用基类的函数应该使用作用域符“::”以限定访问的位置。来源:-计算机二级考试

二、简单应用题

请编写一个函数intpattern_index(charsubstr[],charstr[]),该函数执行含通配符"?"的字符串的查找时,该通配符可以与任一个字符匹配成功。当子串substr在str中匹配查找成功时,返回子串substr在str中的位置,否则返回值为0。要求使用for循环实现。输出结果如下:

子串起始位置:5

注意:部分源程序已存在文件kt5_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数pattern_index的花括号中填写若干语句。

文件kt5_2.cpp的内容如下:

#include

intpattern_index(charsubstr[],charstr[])

{

}

voidmain()

{

char*substring,*string;

intsame;

substring="???gram";

string="thisprogramreturnindexofsubstring";

same=pattern_index(substring,string);

if(same)

cout<

else

cout<

}

【参考答案】

int pattern_index(char substr[],char str[])

{int i,j,k;

for(i=0;str[i];i++)

for(j=i,k=0;(str[j]==substr[k])||(substr[k]=='?');j++,k++)

if(!substr[k+1])

return(i);

return(0);}

【试题解析】

本题主要考查使用for循环和一维数组的能力。对于复杂查找,往往使用for的多重循环。来源:-计算机二级考试

三、综合应用题

使用VC6打开考生文件夹下的工程kt5_3,此工程包含一个源程序文件kt5_3.cpp,其中定义了用于表示复数的类comp,但类comp的定义并不完整。请按要求完成下列操作,将类comp的定义补充完整。

(1)定义comp的构造函数,函数含参数x和y,它们都是int型的数据,默认值都为0,请使用参数列表的形式分别将类数据成员a和b初始化x和y的值。请在注释“//**1**”之后添加适当的语句。

(2)完成类comp的成员函数input(intx,inty)的定义,将int型的参数x和y分别赋值给数据成员a和b,请在注释“//**2**”之后添加适当的语句;

(3)完成类comp的友元函数friendcompplus(comp&x,comp&y)的定义,该函数首先要定义一个comp类的对象c,然后将参数x和y的数据成员a与b分别相加并分别赋值给c的成员a和b,最后返回c的值,请在注释“//**3**”之后添加适当的语句。输出结果如下:

10+20i

2+3i

result:12+23i

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件kt5_3.cpp清单如下:

#include

classcomp

{inta;

intb;

public:

//**1**

friendcompplus(comp&x,comp&y);

voidinput(intx,inty)

{//**2**}

voidoutput()

{cout<

compplus(comp&x,comp&y)

{//**3**

c.b=x.b+y.b;

returnc;}

voidmain()

{compx(10,20),y,z;

y.input(2,3);

z=plus(x,y);

x.output();

y.output();

cout<

z.output();}

【参考答案】

(1)comp(int x=0,int y=0):a(x),b(y){}

(2)a=x;

b=y;

(3)comp c;

c.a=x.a+y.a;

【试题解析】

本题主要考查类的定义和友元函数定义的。来源:-计算机二级考试

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值