一、选择题(每题2分,共30分)
1C++源程序文件的扩展名为( 
  A.CPP    B.C    C.DLL  D.EXE
2.下列给整数数组进行初始化中____________是正确的。
Aint a[5]={1,2,3,4,5,6}
Bint a[]={1,,2,3,4}
Cint a[5]={1,2,3,}         
Dint a[]={1,2,3,4,5}
3.假定p所指对象的值为58p+1所指对象的值为46,则执行“(*p)++;”语句后,p所指对象的值为( 
A58  B59    C46  D47
4.已知const int a=78;const int b=28;int c=18;const int *pi = &a; _____是正确的
A*pi=58          Bpi=&b      C*pi=&a      Dpi=88
5.已知'A'~'Z'ASCII码为65~90, 当执行" char ch = 14*5+2; cout<<ch<<endl;" 语句序列后, 得到的输出结果为(  )
A72              BH
CI                D71
6.a=3,p=&a中,*p的值是 ____________
A、变量a的地址值    B、无意义    C、变量p的地址值  D3
7.下列____________的调用方式时引用调用。
A、形参是指针,实参是地址值
B、形参和实参都是变量
C、形参是数组名,实参是数组名   
D、形参是引用,实参是变量
8.下列语句(    )是正确的递归函数。
  Aint Fun(int n)  {if(n<1)  return 1;  else  return n*Fun(n+1);}
  Bint Fun(int n)  {if(abs(n)<1)  return 1;  else  return n*Fun(n/2);}
  Cint Fun(int n)  {if(n>1)  return 1;  else  return n*Fun(n*2);}
  Dint Fun(int n)  {if(n>1)  return 1;  else  return n*Fun(n-1);}
9.假定a为一个整型数组名,则元素a[4]的字节地址( 
      A a+4            B a+8           
      C a+16          D a+32
以下程序的输出结果是:
    #include <iostream.h>
    void prt(int *x,int *y,int *z){
      cout<<++*x<<","<<++*y<<","<<*z++<<endl;
    }
  int a=10,c=20,b=40;
  void main(){
      prt(&a,&b,&C;  prt(&a,&b,&c);
  }
    A11,42,31      B11,41,20      C11,21,40      D11,41,21
    12,21,41        12,42,20          11,21,41        12,42,22
10.对于常数据成员,下面描述正确的是(  )
A、常数据成员可以不初始化,并且不能更新
B、常数据成员必须被初始化,并且不能更新
C、常数据成员可以不初始化,并且可以被更新
D、常数据成员必须被初始化,并且不能更新
11.定义一个时间类
class  Time{
public
    Time int  h=0{hour=h}
private
    int  hour
}
拷贝构造函数在(    )情况下不被调用
  ATime  fn(){
        //……
        Time  t13);
        return  t1
      }
      void  main(){
        Time  t2
        t2=fn();
        }
 
Bvoid  fnTime  t2{
        //…… ……
      }
      void  main    {
        Time  t13);
        fnt1);
      }
  CTime  t13);
    Time  t2=t1
  DTime  t13),t2
      t2=t1
12.有关析构函数的说法不正确的是____________
A、析构函数有且只有一个
B、析构函数无任何函数类型
C、析构函数和构造函数一样可以有形参
D、析构函数的作用是在对象被撤销时收回先前分配的内存空间
13.有关静态成员的说法不正确的是____________
A、静态数据成员可以在类声明中定义
B、静态数据成员在类的内部实现部分中定义
C、静态成员函数不能对非静态成员进行默认访问
D、静态成员函数没有this指针
14.对于拷贝初始化构造函数,正确的描述是( 
A、在C++语言中,如果不自定义类的拷贝初始化构造函数,则每个类都有默认的拷贝初始化构造函数
B、必须为每个类定义拷贝初始化构造函数
C、如果要使用拷贝初始化构造函数,则必须在类中先定义
D、当定义了类的构造函数时,如果要使用拷贝初始化构造函数,则必须定义拷贝初始化构造函数
15.下面叙述错误的是(   
A、在C++中,成员函数运算符重载和友元函数运算符重载的唯一区别是前者有this指针,后者没有this指针
B、假设定义人民币RMB
      RMB  operator + RMB d
        {return  RMByuan+d.yuan+jf+d.jf/100; }
    这是成员函数运算符重载的形式
C、重载加号运算符使用引用返回的形式
D、重载减号运算符使用值返回的形式
二、填空题(1-6题每空1分,7-9每空2分,共30)
1.面向对象程序设计中的三大特点是:封装性、继承性和  1   
2、函数的返回类型有:void返回、值返回和          2     
3、变量的作用域有四种,分别是:      3指向类成员函数的指针)      、函数作用域、函数原型作用域、局部作用域。
4XY为一个类名,则该类的拷贝构造函数的声明语句为4
5.类中一个字符指针成员指向具有n个字节的存储空间时, 它所能存储字符串的最大长度为________5_________
6.带有    (6)    的类称为抽象类,它只能作为基类来使用。
7.下面的函数Fun将一个整数字符串转换为一个整数。请完成下列函数定义。
#include <string.h>
int Fun(char * str)
{
    int num,digital,len;
          (7)           
    len=strlen(str);
    while(*str!=NULL)
    {
        digital=*str-‘0’;
        for(int i=0;    (8)        ;i++)
            digital*=10;
        len--;
              9       
        num+=digital;
    }
    return num;
}
8.下列程序通过把类Distance定义为类Point的友元类来实现计算两点之间距离的功能。请完成该程序
#include <iostream.h>
#include <math.h>
class Point
{
public:
            10             
    Point(        11            )    {
          X=a;
          Y=b;
    }
    void Print(){
        cout<<”X=”<<X<<endl;
        cout<<”Y=”<<Y<<endl;
    }
private:
    float X,Y;
};
class Distance{
public:
    float Dis(Point& p,  Point &q);
};
float  Distance::Dis(Point& p,  Point &q){
    float result;
            12                   
    cout<<result<<endl;
    return result;
}
void main(){
    Point p(10,10),q(20,20);
    Distance d;
    d.Dis(p,q);
}
9.在划线处填上适当的语句,完成下列程序。
#include <iostream.h>
#include <math.h>
class Point{
public:
    Point(double a,double b,double c){    13        }
    double Getx( ){return X;}
    double Gety( ){return Y;}
    double Getz( ){return Z;}
private:
            14               
protected:
            15               
};
class Line:    16        Point{
public:
    Line(double a,double b,double c,double d)  17  { 18 }
    void show(){
        cout<<Getx()<<endl;
        cout<<Gety()<<" "<<Y<<endl;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。