c++复习题 中北大学

  • 格式:doc
  • 大小:64.50 KB
  • 文档页数:8

复 习 题

一、选择题

1、在C++语言中,能代表逻辑值“真”的是_______。

A) true B)大于0的数 C)非0整数 D)非0的数

2、下列关于构造函数说法错误的是________。

A、构造函数的函数名与类名相同。 B、构造函数可以重载。

C、构造函数可以设置缺省参数。 D、构造函数必须指定类型说明。

3、下列关于析构函数说法正确的是________。

A、析构函数可以有参数。 B、析构函数可以重载。

C、析构函数一定被继承。 D、析构函数无返回值。

4、const int *p说明不能修改________。

A、p指针; B、p指针指向的变量;

C、p指针指向的数据类型; D、上述A、B、C三者;

5、派生类的对象对它的基类成员中________是可以访问的。

A、公有继承的公有成员; B、公有继承的私有成员;

C、公有继承的保护成员; D、私有继承的公有成员;

6、若要定义具有10个int型元素的一维数组a,则以下定义描述中错误的是_______。

A)#define N 10 B)#define n 5

int a[N] int a[2*n]

C)int a[5+5] D)int n=10,a[n]

7、若用数组名作为函数调用时的实参,则实际上传递给形参的是_____ 。

A) 数组首地址 B) 数组的第一个元素值

C) 数组中全部元素的值 D) 数组元素的个数

8、已知类A,并static int a 为其公有成员,下面初始化方法正确的是________。

A、int a=0; B、a=0;

C、A(…):a(0); D、int A::a=0;

9、在下面的函数声明中,_______存在着语法错误。

A. int BC(int a, int); B. int BC(int, int);

C. int BC(int=5, int); D. int BC(int x; int y);

10、下列关于派生类的描述中,正确的是________。

A、派生类指针可以指向基类对象

B、一个派生类可以作为另一个派生类的基类

C、派生类对基类的所有成员都产生继承

D、派生类对象可以访问基类的所有公有成员

11、若有数据描述如下:int a=4;,则表达式a<<1的值为________。

A、2 B、4

C、8 D、10

12、派生类中,重新定义基类的虚函数时,虚函数的_______必须保持一致。

A、参数个数 B、参数类型

C、返回值 D、参数个数、参数类型和返回值

13、下列叙述中正确的是_______。

A)break语句只能用于switch语句 B)在switch语句中必须使用default

C)break语句必须与switch语句中的case配对使用

D)在switch语句中,不一定使用break语句

14、设置虚基类的目的是_______。

A)简化程序; B)消除二义性;

C)提高运行效率; D)减少目标代码;

15、下列运算符中,不能重载的运算符是( )。

A):: B)[ ] C)&& D)>>

16、设person是一个类,p1是该类的一个对象,p2是指向p1的指针,getname是该类的一个成员函数,则以下不正确的表达是_______。

A)person.getname( ) B)p1.getname( )

C)p1.person::getname( ) D)p2->getname( )

二、 程序填空

1、找出两个整数的最大公约数

#include "iostream.h"

int max(int x,int y)

{

int i;

for(i=_______________;i>=1;i--)

if(x%i==0&&y%i==0)

break;

_______________;

}

main()

{

int m,n;

cin>>m>>n;

cout<

}

2、找出3到1000以内的所有素数:

#include "iostream.h"

int fun_m(int x);

main()

{

int m;

for(m=3;m<=1000;m++)

if(_______________)

cout<

}

int fun_m(int x)

{ int n,flag=1;

for(n=2;n

if(x%n==0)

{

flag=0;

break;

}

return _______________;

}

3、复数相加

#include "iostream.h"

class Complex

{

public:

Complex(){real=0;imag=0;}

Complex(double r) {real=r;imag=0;}

Complex(double r,double i) {real=r;imag=i;}

Complex operator+(Complex &c2)

{

Complex c;

c.real=real+c2.real;

c.imag=imag+c2.imag;

_______________;

}

void print(Complex &c)

{

if(c.imag<0)

cout<

else

cout<

}

private:

double real,imag;

};

void main()

{

Complex c1(2.5,6),c2(3.5,-8),c3;

_______________;

cout<<"\nc1+c2=";

c3.print(c3);

}

4、起泡法排序: #include

#define N 10

void change(_______________)

{

int t;

t=m;m=n;n=t;

}

void arrange(_______________)

{

int i,j;

for(j=1;j

for(i=0;i

if(*(p+i)>*(p+i+1))

_______________;

}

void main()

{

int a[N],i;

for(i=0;i

cin>>a[i];

_______________;

for(i=0;i

cout<

}

三、写出下列程序的运行结果

1、阅读程序,写出运行时输出的结果。

#include "iostream.h"

#include "stdio.h"

void fun(char b[],char c)

{

int i,j;

for(i=0,j=0;b[i]!='\0';i++)

if(b[i]!=c)

{

b[j]=b[i];

j++;

}

b[j]='\0';

}

void main()

{

char a[]="abbcd"; cout<<"原字串为:"<

puts(a);

cout<<"转换后为:"<

fun(a,'b');

puts(a);

}

2、阅读程序,写出运行时输出的结果

class student

{

public:

int No;

student(int n):No(n){}

student(student &p)

{

No=p.No+1 ;

age++;

}

void display()

{

cout<<"学号为:"<

cout<<"年龄为:"<

}

private:

static int age;

};

int student::age =20;

void main()

{

student p1(100);

p1.display ();

student p2(p1);

p2.display ();

}

3、阅读程序,写出运行时输出的结果。

#include

int fun(int i)

{

static int m=i;

return m++;

}

main()

{