一、选择题(每题2分,共70分)。
下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
1.算法的空间复杂度是指( )。
A.算法程序的长度
B.算法程序中的指令条数
C.算法程序所占的存储空间
D.执行过程中所需要的存储空间
【答案】D
2.用链表表不线性表的优点是( )。
A.便于随机存取
B.花费的存储空间较顺序存储少
C.便于插入和删除操作
D.数据元素的物理顺序与逻辑顺序相同
【答案】C
3.下列关于栈的描述正确的是( )。
A.在栈中只能插入元素而不能删除元素
B.在栈中只能删除元素而不能插入元素
C.栈是特殊的线性表,只能在一端插入或删除元素
D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素
【答案】D
4.下列叙述中正确的是( )。
A.一个逻辑数据结构只能有一种存储结构
B.数据的逻辑结构属于线性结构,存储结构属于非线性结构
C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率
【答案】D
5.下列对列的叙述正确的是( )。
A.队列属于非线性表
B.队列按”先进后出”的.原则组织数据
C.队列在队尾删除数据
D.队列按“先进先出”原则组织数据
【答案】D
6.对下列二叉树进行前序遍历的结果为( )。
A.DYBEAFCZX
B.YDEBFZXCA
C.ABDYECFXZ
D.ABCDEFXYZ
【答案】C
7.在面向对象方法中,不属于“对象”基本特点的是( )。
A.一致性
B.分类性
C.多态性
D.标识唯一性
【答案】A
【解析】对象是面向对象方法中最基本的概念,它的基本特点有:标识唯一性、分类性、多态性、封装性和模块独立性。故本题答案为A。
8.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。
A.一对一
B.一对多
C.多对一
D.多对多
【答案】B
【解析】一个实体宿舍可以对应多个学生,而一个学生只能对应一个宿舍,所以宿舍和学生之间是一对多关系。
9.将E-R图转换到关系模式时,实体与联系都可以表示成( )。
A.属性
B.关系
C.键
D.域
【答案】B
10.SQL语言又称为( )。
A.结构化定义语言
B.结构化控制语言
C.结构化查询语言
D.结构化操纵语言
【答案】C
11.C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是( )。
A.增加了一些新的运算符
B.允许函数重载,并允许设置缺省参数
C.规定函数说明符必须用原型
D.引进了类和对象的概念
【答案】D
12.设有定义int a=1;float f=1.2;char c=’a';,则下列表示错误的是( )。
A.++a;
B.f--;
C.C++;
D.8++;
【答案】D
13.下列程序的运行结果为( )。
#include
void main()
{
int a=2:
int b=a+1;
cout<<
}
A.0.66667 B.0
C.0.7 D.0.66666666…
【答案】B
14.下列关于运算符重载的叙述中,正确的是( )。
A.通过运算符重载,可以定义新的运算符
B.有的运算符只能作为成员函数重载
C.若重载运算符+,则相应的运算符函数名是+
D.重载一个二元运算符时,必须声明两个形参
【答案】B
15.下列关于模板的叙述中,错误的是( )。
A.调用模板函数时,在一定条件下可以省略模板实参
B.可以用int、double这样的类型修饰符来声明模板参数
C.模板声明中的关键字class都可以用关键字typename替代
D.模板的形参表中可以有多个参数
【答案】D
16.要利用C++流进行文件操作,必须在程序中包含的头文件是( )。
A.iostream
B.fstream
C.strstream
D.iomanip
【答案】B
17.下列描述中,不属于面向对象思想主要特征的是( )。
A.封装性
B.跨平台性
C.继承性
D.多态性
【答案】B
18.有如下程序段:
Tnt i=4;int j=l;
int main(){
int i=8,j=i;
cout<}
运行时的输出结果是( )。
A.44
B.41
C.88
D.81
【答案】C
19.下面的哪个选项不能作为函数的返回类型? ( )。
A.void
B.int
C.new
D.long
【答案】C
20.函数fun的返回值是( )。
fun(char*a,char*B.
{
int num=0,n=0;
while(*(a+num)!=‘\0’)num++;
while(b[n]){*(a+num)=b[n];num++;n++;}
return num;
}
A.字符串a的长度
B.字符串b的长度
C.字符串a和b的长度之差
D.字符串a和b的长度之和
【答案】D
二、改错题(20分)
【题目】
以下程序的功能是:根据字符串str中是否包含子串substr,决定如何将字符串str1插入到
str的不同位置。插入方法是:如果str中包含子串substr,则将str1插入到str中首次出现的子
串substr之后;否则,插入到str的尾部。
正确程序的输出如下:
原字符串:aabcd12345 子字符串:abcd 插入字符串:ABC
新字符串:aabcdABC12345
含有错误的源程序如下:
#include
#include
char *find(char *str,char *substr)
{
unsigned lent=strlen(str);
for(char *p1=str,*p2=substr;strlen(p1)>=len;p1++){
for(unsigned i=0;i
if(p1[i]!=p2[i])
break;
if(i>len)
return p1+len;
}
return 0;
}
char *insert(char *str,char *substr,char *str1)
{
char p=find(str,substr);
if(p)
strcat(str,str1);
else{
char *tmp=new char[strlen(str)+strlen(str1)+1];
strcpy(tmp,str1)
strcat(tmp,p);
strcpy(p,tmp);
delete []tmp;
}
return str;
}
void main()
{
char *str=new char[80],substr[]="abcd",str1[]="ABC";
strcpy(str,"aabcdl2345"); ’
cout<<"原字符串:"<
str=insert(str,substr,str1);
cout<<"新字符串:"<
delete []str;
}
【要求】
1.把上述程序录入到文件myfa.cpp中,根据题目要求及程序中语句之间的逻辑关系对。
程序中的错误进行修改。程序中的注解可以不输入。
2.改错时,可以修改语句中的一部分内容,增加少量的变量说明、函数原型说明或编译预
处理命令,但不能增加其他语句,也不能删除整条语句。
3.改正后的源程序文件myfa.cpp必须放在T盘根目录下,供阅卷用。