在c 语言中 所有函数在调用前都要说明,2012年计算机二级C++模拟试题及答案(11)...

n&&m

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

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

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

【参考答案】 D

15.下列语句中不是死循环的是

A)int i=10;

while (1)

{ i--;

if(i==1)break; }

B)for(int i=1;i<10;i++)

{ i--; }

C)int i=0;

do{

i++;

}while(i>=0);

D)int i=1;

for(;;)i=i+1;

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

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

A)break可以用于循环体内

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

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

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

【参考答案】 D

17.下面关于数组的描述错误的是

A)在C++语言中数组的名字就是指向该数组第一个元素的指针

B)长度为n的数组,下标的范围是0~n-1

C)数组的大小必须在编译时确定

D)数组只能通过值参数和引用参数两种方式传递给函数

【参考答案】 D

18.下面程序错误的语句是

① #include

② void main()

③ {

④ int *p=new int[1];

⑤ p=9;

⑥ cout <

⑦ delete []p;

⑧ }

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

【参考答案】 B

19.下面的哪个选项不能作为函数的返回类型?

A)void      B)int      C)new      D)long

【参考答案】 C

20.不能作为重载函数的调用的依据是

A)参数个数    B)参数类型

C)函数类型    D)函数名称

【参考答案】 D

21.下列程序的输出结果为

#include

int func(int n)

{ if (n<1)return 1;

else return n+func(n-1);

return 0; }

void main()

{ cout<

A)0      B)10      C)15      D)16

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

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

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

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

【参考答案】 D

23.以下程序中,错误的行为

(1) #include

(2) ClassA

(3) {

(4) public:

(5) int n=2;

(6) A(int val){cout<

(7) ~A( ){}

(8) };

(9) void main( )

(10) {

(11) Aa(o);

(12) }

A)(5)       B)(6)       C)(7)       D)(11)

【参考答案】 A

24.对类的构造函数和析构函数描述正确的是

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

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

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

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

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

25.下面程序的运行结果为

#include

class A

{ int num;

public:

A(int i){num=i;}

A(A &a){num=a.num++;}

void print(){cout<

void main()

{ A a (1),b(a);

a.print();

b.print(); }

A)11      B)12      C)21      D)22

【参考答案】 C

26.下面对静态数据成员的描述中,正确的是

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

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

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

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

【参考答案】 A

27.如果类A被说明成类B的友元,则

A)类A的成员即类B的成员

B)类B的成员即类A的成员

C)类A的成员函数不得访问类B的成员

D)类B不一定是类A的友元

【参考答案】 D

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

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

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

【参考答案】 D

29.建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数)这3种构造函数的调用顺序为

A)abc      B)acb      C)cab      D)cba

【参考答案】 A

30.下面关于虚函数的描述,错误的是

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

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

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

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

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

31.下面关于模板的描述,错误的是

A)函数模板和类模板的参数可以是任意的数据类型

B)类模板不能直接使用,必须先实例化为相应的模板类,然后定义了模板类的对象后才能使用

C)函数模板不能直接使用,需要实例化为模板函数后才能使用

D)类模板的成员函数都是模板函数

【参考答案】 A

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

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

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

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

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

【参考答案】 A

33.下面程序的运行结果是

#include

void main()

{ int num=1;

int &ref=num;

ref=ref+2;

cout <

num=num+3;

cout <

A)13 B)16 C)36 D)33

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

34.下面程序的运行结果是

#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)1212B)1221C)2112D)2121

【参考答案】 D

35.下列程序的运行结果为

#include

int i=0;

class A{

public:

A(){i++;} };

void main()

{ A a,b[3],*c;

c=b;

cout<

A)2      B)3      C)4      D)5

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

二、填空题

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

【参考答案】

【1】存储结构

(2)在面向对象方法中,类之间共享属性和操作的机制称为 【2】 。

【参考答案】

【2】继承

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

【参考答案】

【3】内聚

(4)一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体"项目主管"与实体"项目"的联系属于 【4】 的联系。

【参考答案】

【4】一对多或1∶N

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

【参考答案】

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

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

【参考答案】

【6】编译

(7)假设int a=1,b=2;则表达式a+++--b的值为 【7】 。

【参考答案】

【7】2

(8)下面程序的输出结果为 【8】 。

#include

void main()

{ int num=0,i=8;

do{

i--;

num++;

}while(--i);

cout<

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

【8】4

(9)通过使用new和delete两个运算符进行的分配为 【9】 存储分配。

【参考答案】

【9】动态

(10)下面程序的运行结果为 【10】 。

#include

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

{

cout<

}

void main()

{

fun (5);

}

【参考答案】

【10】50

(11)在C++语言中,访问一个对象的成员所用的运算符是 【11】 ,访问一个指针所指向的对象的成员所用的运算符是 【12】 。

【参考答案】

【11】成员选择运算符 【12】成员访问运算符

(12)C++语言支持的两种多态性分别是编译时的多态性和 【13】 的多态性。

【参考答案】

【12】运行时

(13)重载的运算符保持其原有的 【14】 、优先级和结合性不变。

【参考答案】

【13】操作符个数

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

【参考答案】

【14】cout<

上机部分

一、改错题

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

100

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

#include

template

classpair

{ Tvalue1,value2;

public:

pair(Tfirst,Tsecond)

{value1=first;value2=second;}

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

chargetmax(); };

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

Tpair::getmax()

{ Tretval;

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

retval=value1>value2??value1:value2;

returnretval; }

voidmain()

{ pairmyobject(100,75);

cout<

【参考答案】

(1)将char getmax ();改为:T getmax ();

(2)缺少模板的声明,应改为:template

(3)将retval = value1>value2?? value1 : value2;

改为:retval = value1>value2? value1 : value2;来源:-计算机二级考试

【试题解析】

(1)主要考查对模板使用的理解,该函数属于模板类定义的一部分,对于返回值类型,应该使用模板类名称T,这样编译的时候才能被接受;

(2)主要考查是模板的使用,前面的模板类已经声明完成了,在类的外面定义类的成员函数时仍然需要使用模板的声明,这样在后面的函数定义体中才能使用模板类;

(3)主要考查对“表达式1? 表达式2 : 表达式3”语句的掌握,这个语句是一个复合语句,先计算第一个表达式,如果为真则整个式子值为表达式2的值,否则为表达式3的值,题目中错误的使用了两个问号。

二、简单应用题

请编写函数fun(),其功能是将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除。字符串中剩余的字符所形成的一个新的字符串放在t所指的数组中。

例如:s所指字符串中的内容为ABCDEFG12345,其中字符A的ASCII码值虽为奇数,但元素所在的下标为偶数,因此必需删除;字符1的ASCII码值为奇数,所在数组中的下标也为奇数,不删除,最后t所指的数组中的内容应是135。

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

文件kt12_2.cpp的内容如下:

#include

#include

#include

#include

voidfun(char*s,chart[])

{

}

voidmain()

{ chars[100],t[100];

cout<

gets(s);

fun(s,t);

puts(t); }

【参考答案】

void fun(char *s,char t[ ])

{ int i,j=0,n;

n=strlen(s);

for(i=0;i

if(i%2!=0&&s[i]%2!=0)

{ t[j]=s[i];j++;}

t[j]='\0'; }

【试题解析】

本体的解题思路是要先搞清楚在字符参与数值运算时,用的是其ASCII码值来进行计算。其次是判断某数是奇数的方法,即判断该数与2的余数是否为0。来源:-计算机二级考试

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值