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。来源:-计算机二级考试