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()
{