试卷详情
-
二级C++笔试-408
-
[单项选择]以下对C++语言函数的有关描述中,正确的是
A. 在C++语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参
B. C++语言函数既可以嵌套定义又可以递归调用
C. 函数必须无返回值,否则不能使用函数
D. 函数必须有返回值,返回值类型不定
-
[填空题]在关系模型中,把数据看成一个二维表,每一个二维表称为一个______。
-
[单项选择]在设计程序时,应采纳的原则之一是( )。
A. 不限制goto语句的使用
B. 减少或取消注解行
C. 程序越短越好
D. 程序结构应有助于读者理解
-
[单项选择]关于在调用模板函数时模板实参的使用,下列表述正确的是( )。
A. 对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略
B. 对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略
C. 对于虚拟类型参数所对应的模板实参,若能够省略则必须省略
D. 对于常规参数所对应的模板实参,任何情况下都不能省略
-
[单项选择]下列关于C++流的描述中,错误的是( )。
-
[单项选择]有如下语句序列;
int k=0;
dok+=5;couk<<'$';) while(k<19);
while(k-->0)cout<<'*';
执行上面的语句序列输出字符$和。的个数分别是()
A. 4和20
B. 5和20
C. 4和21
D. 5和21
-
[单项选择]需求分析阶段的任务是确定
A. 软件开发方法
B. 软件开发工具
C. 软件开发费用
D. 软件系统功能
-
[单项选择]如下程序的输出结果是
#include<iostream>
#include<iomanip>
using namespace std;
class CSum
int x,y;
public:
CSum(int x0,int y0):X(x0),y(y0)
friend ostream& operator<<(ostream& os,const CSum& xA)
os<<setw(5)<<xa.x+xa.y:
return os;
;
int main( )
CSum y(3,5);
cout<<setfill('*')<<8;
cout<<y;
return 0;
A. 88
B. ****88
C. ****8****8
D. 8****8
-
[单项选择]考虑函数原型void test(int a,int b=7,char z='*'),下面的函数调用中,属于不合法调用的是( )。
-
[单项选择]设有以下说明和定义:
#include<iostream. h>
Void main( )
typedef union
long i; int k[5]; char c;
DATE;
struct date
int cat; DATE cow; double dog; too;
DATE max;
cout<<(sizeof(struct date)+sizeof(max))<<end1;
A. 26
B. 52
C. 18
D. 8
-
[单项选择]下列关于模板的叙述中,错误的是()
A. 模板声明中的第一个符号总是关键字templale
B. 在模板声明中用<和>括起来的部分是模板的形参表
C. 类模板不能有数据成员
D. 在一定条件下函数模板的实参可以省略
-
[填空题]下列程序的输出结果是______。
#include<iostream>
using namespace std;
Class Test
public:
Test( )cnt++;
~Test( )cnt--;
static int Count( )return cnt;
private:
static int cnt;
;
int Test::cnt=0;
int main( )
cout<<Test::Count( )<<"";
Test t1,t2;
Test*pT3=new Test;
Test*pT4=new Test;
cout<<Test::Count( )<<"";
delete pT4;
delete pT3;
cout<<Test::Count( )<<end1;
return 0;
-
[单项选择]下列叙述中正确的是( )。
A. 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B. 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C. 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D. 循环队列中元素的个数是由队头指针和队尾指针共同决定
-
[单项选择]下面的哪个选项不能作为函数的返回类型
A. void
B. int
C. new
D. long
-
[单项选择]设有关键码序列(16,9,4,25,15,2,13,18,17,5,8,24),要按关键码值递增的次序排序,采用初始增量为4的希尔排序法,一趟扫描后的结果为( )。
A. (15,2,4,18,16,5,8,24,17,9,13,25)
B. (2,9,4,25,15,16,13,18,17,5,8,14)
C. (9,4,16,15,2,13,18,17,5,8,24,15)
D. (9,16,4,25,2,15,13,18,5,17,8,24)
-
[单项选择]下面关于C++语言变量的叙述错误的是
A. C++语言中变量分为auto、static、extern和register4种存储类型
B. 自动变量和外部变量的作用域为整个程序
C. 内部静态变量的作用域是定义它的函数
D. 外部静态变量的作用域是定义它的文件
-
[单项选择]在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是 ______。
A. 派生类的对象可以赋给基类的对象
B. 派生类的对象可以初始化基类的引用
C. 派生类的对象可以直接访问基类中的成员
D. 派生类的对象的地址可以赋给指向基类的指针
-
[单项选择]线性表的顺序存储结构和线性表的链式存储结构分别是()。
A. 顺序存取的存储结构、顺序存取的存储结构
B. 随机存取的存储结构、顺序存取的存储结构
C. 随机存取的存储结构、随机存取的存储结构
D. 任意存取的存储结构、任意存取的存储结构
-
[填空题]有如下定义:
class MA
int value;
public:
MA(int n=0):value(n)
;
MA*ta,tb;
其中MA类的对象名标识符是______。
-
[填空题]问题处理方案的正确而完整的描述称为______。
-
[填空题]下列函数的功能是判断字符串str是否对称,对称则返回true,否则返回false。请在横线处填上适当内容,实现该函数。
bool fun(char *str)
int i=0,j=0;
while(str[j])______;
for(j--;i<j && str [i]==str[j];i++,j--);
return i______j;
-
[单项选择]有如下程序:
#nclude<iostremn>
using namespace std;
class Stack
public:
Stack(unsigned n=10:size(n)rep_=new int[size];top=O;
Stack(Stack&s):size(s.size)
rep_=new int[size];
for(int i=0;i<size;i++)rep_[i]=s.rep_[i];
top=s.top;
~Stack( )delete[]rep_;
void push(int a)rep_[top]=a; top++;
int opo( )--top;return rep_[top];
bool is Empty( )constreturn top==O;
pavate:
int*rep_;
unsigned size,top;
;
int main( )
Stack s1;
for(int i=1;i<5;i++) s1.push(i);
Stack s2(s1);
for(i=1;i<3;i++) cout<<s2.pop( )<<',';
s2.push(6);
s1.push(7);
while(!s2.isEmpty( )) cout<<s2.pop( )<<',';
return 0;
执行上面程序的输出是()
A. 4,3,2,1
B. 4,3,6,7,2,1
C. 4,3,6,2,1
D. 1,2,3,4
-
[单项选择]若二叉树中度为2的结点有15个,度为1的结点有10个,则有 ______ 个叶结点。
A. 25
B. 30
C. 31
D. 16
-
[单项选择]类MyClass的定义如下:
class MyClass
public:
MyClass( )
value=0;
setVariable(int i)
value=i;
private:
int value;
;
则以下各项对如下语句序列的描述中,正确的是( )。
MyClasS *p,my; p=&my;
A. 语句“p=&my;”是把对象my赋值给指针变量p
B. 语句“MyClass *p,my;”会调用两次类MyClass的构造函数
C. 对语句“*p.SetVariable(5)”的调用是正确的
D. 语句“p->SetVariable(5)”与语句“my.SetVariable(5)”等价
-
[填空题]下面的函数定义是某函数模板能够生成的函数实例
intsquare(int n)(return n*n;)
double square(double n)(retum n*n;)
由此可知,该函数模板的定义是______。
-
[单项选择]若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )。
A. 函数调用可以作为独立的语句存在
B. 函数调用可以无返回值
C. 函数调用可以出现在表达式中
D. 函数调用可以作为一个函数的形参
-
[单项选择]详细设计的结果基本决定了程序最终的
A. 代码的规模
B. 运行速度
C. 代码质量
D. 可维护性
-
[单项选择]分层DFD图是一种比较严格又易于理解的描绘方式,它的顶层图的作用在于 ______。
A. 描绘了系统的实现细节
B. 表明了被开发系统的范围以及它和周围环境的数据交换关系
C. 描绘了系统的抽象
D. 描绘了软件实现的作者和绘制的时间
-
[填空题]______是一系列相关函数的模型或样板,这些函数的______形式相同,只是所针对的______不同。
-
[单项选择]定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为( )。
A. 私有继承
B. 非私有继承
C. 保护继承
D. 公有继承
-
[单项选择]下列说法中错误的是( )。
A. 公有继承时基类中的public成员在派生类中仍是public成员
B. 私有继承时基类中的protected成员在派生类中仍是protected成员
C. 私有继承时基类中的public成员在派生类中仍是private成员
D. 保护继承时基类中的public成员在派生类中仍是protected成员
-
[单项选择]若有以下程序:
#include <iostream>
using namespace std;
class Aprivate:
int a;
public:
void seta(int x)
a=x;
void showa( )
cout<<a<<",";
;
class Bprivate:
int b;
public:
void setb(int x)
b=x;
void showb( )
cout<<b<<",";
;
class C: public A, private Bprivate:
int c;
public:
void setc(int x, int y, int z)
c=z;
seta(x);
setb(y);
void showc( )
showa( );
showb( );
cout<<c<<end1;
;
int main( ) C c;
c.setc(1,2,3);
c.showc( );
return 0;程序执行后的输出结果是( )。
A. 1,2,3
B. 1,1,1
C. 2,2,2
D. 3,3,3
-
[填空题]以下程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,例如对于数字 12,有1*2<1+2,故不输出该数;对于27,有2*7>2+7,故输出该数。请填空。
#include<iostream.h>
void main( )
int n,k=1,s=o,m:
for (n=l:n<=100;n++=
k=l;s=0;
______;
while(______)
k*=m%10;s+=m%10;
(3) ;
if(k>s)cout<<n;
-
[单项选择]下面有关重载函数的说法中,正确的是( )。
A. 重载函数必须具有不同的返回值类型
B. 重载函数形参个数必须不同
C. 重载函数必须有不同的形参列表
D. 重载函数名可以不同
-
[单项选择]若类A和类B的定义如下:
class A
public:
int i,j;
void get( );
;
class B:A
int i, j;
protected;
int k;
public:
void make( );
;
void B: :make( )(k=i*j;
则其中 ______ 是非法的表达式。
A. void get();
B. int k;
C. void make();
D. k=i*j;
-
[填空题]从程序设计的方法和技术的发展角度来说,程序设计主要经历了结构化设计和______的程序设计阶段。
-
[填空题]按照“先进先出”的原则组织数据的结构的是______。
-
[单项选择]以下( )成员函数表示纯虚函数。
A. virtual int vf(int)
B. void vf(int)=0
C. virtual void vf()=0
D. virtual void vf(int)
-
[填空题]对虚函数的调用有两种方式:______和______。
-
[单项选择]下面不属于软件开发时期的是( )。
A. 软件定义阶段
B. 软件设计阶段
C. 软件实现阶段
D. 软件测试阶段
-
[填空题]在树中,度为零的结点称为______。
-
[单项选择]不能作为重载函数的调用的依据是
A. 参数个数
B. 参数类型
C. 函数类型
D. 函数名称
-
[单项选择]以下程序的输出的结果是()。
#include<iostream.h>
void main( )
int i,k,a[10],p[3];
k=5;
for(i=0;i<10;i++) a[i]=i;
for(i=0;i<3 ;i++) p[i]=a[i*(i+1)];
for(i=0;i<3;i++) k+=p[i]*2;
cout<<k;
A. 20
B. 21
C. 22
D. 23
-
[填空题]某二叉树中度为2的结点有18个,则该二叉树有______个叶子结点。
-
[单项选择]执行语句序列:
int i=0;while (i<25)i+=3;cout<<i;
输出结果是______ 。
A. 24
B. 25
C. 27
D. 8
-
[填空题]下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整(注:阶乘的定义是
n!=n*(n-1)*...*2*1)。
unsigned fact(unsigned n)
if (n <= 1)
return 1;
return______;
-
[单项选择]语句int *p=*k;定义了指针p,与这个语句等效的语句序列是( )。
A. int *p; p=&k;
B. int *p; p=k;
C. int *p;*p=&k;
D. int *p; *p=k;
-
[单项选择]有如下两个类定义:
class AA;
class BB
A. )。 v1
B. v2
C. v3 D) v4
-
[单项选择]下列对模板的声明中正确的是( )。
A. template<T>
B. template<classT1,T2>
C. template<class T1,class T2>
D. template<class T1;class T2>
-
[填空题]类______支持输入操作,类______支持输出操作。