笔试部分
一、选择题
1.根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分成( )
A.动态结构和静态结构
B.紧凑结构和非紧凑结构
C.线性结构和非线性结构
D.内部结构和外部结构
【参考答案】 C
2.在下列几种排序方法中,要求内存量最大的是( )
A.插入排序 B.选择排序 C.快速排序 D.归并排序
【参考答案】 D
3.下列不属于软件调试技术的是( )
A.强行排错法 B.集成测试法 C.回溯法 D.原因排除法
【参考答案】 B
4.软件复杂性度量的参数包括( )
A.效率 B.规模 C.完整性 D.容错性
【参考答案】 B
5.数据库系统的核心是( )
A.数据库 B.数据库管理系统 C.数据库模型 D.软件工具
【参考答案】 B
6.最简单的交换排序方法是( )
A.快速排序 B.选择排序
C.堆排序 D.冒泡排序
【参考答案】 D
7.线性表的顺序存储结构和线性表的链式存储结构分别是( )
A.顺序存取的存储结构、顺序存取的存储结构
B.随机存取的存储结构、顺序存取的存储结构
C.随机存取的存储结构、随机存取的存储结构
D.任意存取的存储结构、任意存取的存储结构
【参考答案】 B
8.在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示( )
A.模块之间的调用关系 B.程序的组成成分
C.控制程序的执行顺序 D.数据的流向
【参考答案】 A
9.一个关系中属性个数为1时,称此关系为( )
A.对应关系 B.单一关系 C.一元关系 D.二元关系
【参考答案】 C
10.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和( )
A.可重用性差 B.安全性差 C.非持久性 D.冗余性
【参考答案】 D
11.下列选中不全是C++关键字的是( )
A.const,break,default
B.long,void,using
C.virtual,extern,include
D.try,throw,this
【参考答案】 C
12.在32位的计算机中,一个char型数据所占的内存长度的字节是( )
A.4 B.1 C.2 D.8
【参考答案】 B
13.有如下程序:
#include″iostream.h″
void main()
{ int x=1,a=0,b=0;
switch(x) {
case 0:b++;
case 1:a++;
case 2:a++;b++; }
cout<<″a=″<
该程序的输出结果是( )
A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2
【参考答案】 A
14.若有说明int a[3][4];,则a数组元素的非法引用是( )
A.a[0][2*1] B.a[1][3]
C.a[4-2][0] D.a[0][4]
【参考答案】 D
15.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )
A.函数调用可以作为独立的语句存在
B.函数调用可以无返回值
C.函数调用可以出现在表达式中
D.函数调用可以作为一个函数的形参
【参考答案】 D
16.以下类定义中可能会引起错误的语句是( )
class A
{ public:
~A(){ } //1
int i; //2
private:
int j; //3
A(int i){i++;} //4 };
A.1 B.2 C.3 D.4
【参考答案】 D
17.下列描述中错误的是( )
A.派生类可以作为基类派生其他的子类
B.派生类继承基类的所有数据成员
C.派生类可以有多个基类
D.派生类不能继承一些函数成员
【参考答案】 B
18.下列运算符中哪些是不能够被重载的?( )
A..,.*,->*,::,?: B.++,--,new,delete,==
C.sizeof,new,delete,++,-- D.sizeof,new,delete,+,-
【参考答案】 A
19.下列关于函数模板实参不能省略的情况说明不正确的是( )
A.从模板函数实参表获得的信息有矛盾
B.需要获得特定类型的返回值,而不管参数的类型如何
C.虚拟类型参数没有出现在模板函数的形参表中
D.函数模板不含有常规形参
【参考答案】 D
20.表达式10>5&&6%3的值是( )
A.-1 B.非零值 C.0 D.1
【参考答案】 C
21.以下函数调用语句中含有参数个数是( )
excc((v1,v2),(v2,v3,v4),v6);
A.3 B.4 C.5 D.6
【参考答案】 A
22.下列程序段的输出结果是( )
#include
void fun(fun *x,int *y)
{ cout<<*x<<*y;
*x=3;
*y=4; }
void main()
{ int x=1,y=2;
fun(&y,&x);
cout<
A.2143 B.1212 C.1.4 D.2112
【参考答案】 A
23.下列程序的输出结果是( )
#include
void main()
{ char *str=″12123434″;
int x1=0,x2=0,x3=0,x4=0,i;
for(i=0;str[i]!=′\0′;i++)
switch(str[i])
{ case′1′:x4++;
case′2′:x3++;
case′3′:x2++;
case′4′:x1++;〗 }
cout<
A.8,6,4,1 B.8,6,3,2 C.8,8,4,1 D.8,6,4,2
【参考答案】 D
24.每个C++程序中都必须有且仅有一个( )
A.类 B.预处理命令 C.主函数 D.语句
【参考答案】 C
[NextPage]
25.设有int x=11;,则表达式(x++*2/3)的值是( )
A.7 B.8 C.11 D.12
【参考答案】 A
26.对表达式for(表达式1;;表达式3)可理解为( )
A.for(表达式1;0;表达式3) B.for(表达式1;1;表达式3)
C.for(表达式1;表达式3) D.for(;;表达式3)
【参考答案】 B 27.有如下说明
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是( )
A.*p+9 B.*(p+8) C.*p+=9 D.p+8
【参考答案】 B
28.以下对C++语言函数的有关描述中,正确的是( )
A.在C++语言中调用函数,只能把实参的值传给形参,形参的值不能传送给实参
B.C++语言函数既可以嵌套定义又可以递归调用
C.函数必须无返回值,否则不能使用函数
D.函数必须有返回值,返回值类型不定
【参考答案】 A
29.拷贝构造函数的参数一般是( )
A.某对象名 B.某对象成员名 C.某对象的引用名 D.指向对象的指针名
【参考答案】 C
30.下面这个程序的结果是( )
#include
class A
{ private:
int a;
public:
void seta();int geta();};
void A::seta()
{ a=1;}
int A::gate()
{ return a;}
class B
{ private:
int a;
public:
void seta();int geta();};
void B::seta()
{a=2;}
int B::geta()
{return a;}
class C:public A,public B
{ private:
int b;
public:
void display();};
void C::display()
{ int b=geta();
cout<
void main()
C c;
c.seta();
c.display();}
A.1 B.2 C.随机输出1或2 D.程序有错
【参考答案】 D
31.对于模板定义关键字class和typename说法不正确的是( )
A.程序中的class并不能都替换为typename
B.class和typename都可互相替换
C.程序中的typename都能替换为class
D.程序中的部分class可以替换为typename
【参考答案】 B
32.以下程序的输出结果是( )
#include
long fun(int n)
{ long s;
if(n==1||n==2)s=2;
else s=n-fun(n-1);
return s; }
void main()
{ cout<
A.1 B.2 C.3 D.4
【参考答案】 A
33.有如下程序
#include
void main()
{ char ch[2][5]={″6937″,″8254″},*p[2];
int i,j,s=0;
for(i=0;i<2;i++)p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>′\0′;j+=2)
s=10*s+p[i][j]-′0′;
cout<
该程序的输出结果是( )
A.69825 B.63825 C.6385 D.693825
【参考答案】 C
34.以下程序的输出结果是( )
#include
void main()
{ char x=040;
cout<<(x<<1);}
A.100 B.80 C.64 D.32
【参考答案】 C
35.对以下说明语句的正确理解是( )
int a[10]={6,7,8,9,10};
A.将5个初值依次赋给a[1]至a[5]
B.将5个初值依次赋给a[0]至a[4]
C.将5个初值依次赋给a[6]至a[10]
D.因为数组长度与初值的个数不相同,所以此语句不正确
【参考答案】 B
[NextPage]
二、填空题
1.算法的工作量大小和实现算法所需的存储单元多少分别称为算法的【1】。
【参考答案】
【1】时间复杂度和空间复杂度
2.可以把具有相同属性的一些不同对象归类,称为【2】。
【参考答案】
【2】对象类
3.由关系数据库系统支持的完整性约束是指【3】和参照完整性。
【参考答案】
【3】实体完整性
4.软件结构是以【4】为基础而组成的一种控制层次结构。
【参考答案】
【4】模块
5.数据库保护分为:安全性控制、【5】、并发性控制和数据的恢复。
【参考答案】
【5】完整性控制
6.在C++语言的面向对象程序设计框架中,【6】是程序的基本组成单元。
【参考答案】
【6】类
7.以下程序的输出结果是【7】。
#include
void fun()
{ static int a=0;
a+=2;
cout<
void main()
{ int cc;
for(cc=1;cc<4;cc++)
fun();
cout<
【参考答案】
【7】2 4 6
8.以下程序的输出结果是【8】。
#include
unsigned fun(unsigned num)
{ unsigned k=1;
do{k*=num%10;num/=10;}while(num);
return k; }
void main()
{ unsigned n=26;
cout<
【参考答案】
【8】12
9.C++语言中的多态性是在编译时通过【9】和模板体现的,在运行时是通过【10】体现的。
【参考答案】
【9】CCCCCC 【10】虚函数
10.执行下列语句后,c3中的值为【11】
int c1=1,c2=2,c3;c3=1.0/c2*c1;
【参考答案】
【11】0
11.以下程序的输出结果是【12】。
#include
void main()
{ char s[]=″abcdef″;s[3]=′\0′;
cout<
【参考答案】
【12】adc
12.常数据成员和静态数据成员在使用前共同的要求是要进行【13】。
【参考答案】
【13】初始化
13.表达式x.operator+(y.operator++(0))还可以写成【14】。
【参考答案】
【14】x+y++或x+(y++)
14.构造函数是和【15】同名的函数。
【参考答案】
【15】类
上机部分
一、改错题
使用VC6打开考生文件夹下的工程kt10_1,此工程包含一个源程序文件kt10_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为:
classBase
classD1
classD2
classD3
finBase
源程序文件kt10_1.cpp清单如下:
#include
classBase
{ public:
Base(){cout<<"classBase"<
voidf(){cout<<"finBase"<
classD1:virtualpublicBase
{ public:
D1(){cout<<"classD1"<
voidf(){cout<<"finD1"<
/**********found**********/
classD2:publicBase
{ public:
D2(){cout<<"classD2"<
/**********found**********/
classD3::publicD1,publicD2
{ public:
D3(){cout<<"classD3"<
voidmain()
{ D3d;
/**********found**********/
d.f(); }
[NextPage]
【参考答案】
(1)将class D2:public Base
改为:class D2:virtual public Base
(2)将class D3::public D1,public D2
改为:class D3:public D1,public D2
(3)将d.f();改为:d.Base::f();
【试题解析】
(1)主要考查对虚基类的理解,虚基类可以解决二义性的问题,其定义方式是在继承列表中使用virtual关键字,使用虚基类可以避免程序运行中对基类函数调用的不惟一;
(2)主要考查对类的定义方法的掌握,“::”为作用域符,此处应该使用“:”,因为后面是继承列表;
(3)主要考查对虚基类函数调用过程的理解,只有使用"::"限定才能访问基类函数,否则将会调用自身的函数,如果该类没有该函数的定义,则会自动调用其父类的该函数,所以必须使用“::”符号。
二、简单应用题
请编写一个函数inlinelongsum(intn),用递归函数完成运算:sum(n)=1*1+2*2+???+n*n,递归表达式为sum(n)=sum(n-1)+n2。
注意:部分源程序已存在文件kt10_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数sum的花括号中填写若干语句。
文件kt10_2.cpp的内容如下:
#include
inlinelongsum(intn)
{
}
voidmain()
{ intn;
cout<<"输入n:";
cin>>n;
cout<<"结果为:"<
【参考答案】
inline long sum(int n)
{ if(n==1)
return 1;
else
return n*n+sum(n-1); }
【试题解析】
本题考查对递归函数掌握的熟练程度。递归的终止条件为n=1时,值为1。
三、综合应用题
使用VC6打开考生文件夹下的工程kt10_3,此工程包含一个源程序文件kt10_3.cpp,其中定义了用于表示雇员信息的CEmployee类与表示公司信息的Company类,但这两个类的定义并不完整。请按要求完成下列操作。
(1)定义Cemployee类的私有数据成员name(大小为50的字符数组)和pay(double型数据),分别用于记录雇员姓名和月薪。请在注释“//**1**”之后添加适当的语句。
(2)完成Company类默认构造函数的定义,该构造函数将n值赋值给私有成员num,并完成指针emp所指的n个Cemployee对象空间的申请,请在注释“//**2**”之后添加适当的语句。
(3)完成Company类成员函数voidCompany::add(intcode,charname[50],doublepay)的定义,该函数将某一雇员的编号code、姓名name及月薪pay输入到公司信息中。请在注释“//**3**”之后添加适当的语句。
(4)完成Company类成员函数voidCompany::print()的定义,使其以"_ispaid_RMBforonemonth"的格式输出公司内所有员工的月薪信息。请在注释“//**4**”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序清单如下:
#include
#include
classCEmployee
{ public:
voidputname(charn[50]){strcpy(name,n);}
voidgetname(charn[50]){strcpy(n,name);}
voidputpay(doubled){pay=d;}
doublegetpay(){returnpay;}
private:
//**1** };
classCompany
{ private:
CEmployee*emp;
intnum;
public:
Company(intn);
voidadd(intcode,charname[50],doublepay);
voidprint(); };
Company::Company(intn)
{ //**2** }
voidCompany::add(intcode,charname[50],doublepay)
{ //**3** }
voidCompany::print()
{ //**4**
for(inti=0;i
{ (emp+i)->getname(c);
money=(emp+i)->getpay();
cout<
"RMBforonemonth"<
voidmain()
{ Companycom(2);
com.add(0,"Jack",200);
com.add(1,"Lee",300);
com.print(); }
【参考答案】
(1)char name[50];
double pay;
(2)num=n;
emp=new CEmployee[num];
(3)(emp+code)->putname(name);
(emp+code)->putpay(pay);
(4)char c[50];
double money;
【试题解析】
本题考查类成员的定义、类成员函数的定义与调用、对象数组的使用。注意指针和动态申请空间new的使用方法。使用指针调用成员应该用"->"符号,new的返回值是指针类型的。
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|