C++ 模拟试题1
                                         
一、 选择题(在ABCD四个答案中选择一个正确的填入后面的括号中)
1下面(  )是对类ttt的声明。
A. void class ttt;   
B. class int ttt;
C. class ttt( );
D. class ttt;
2. 用于类中虚成员函数说明的关键字是(  )
A.  public    B.  virtual    C.  protected    D.  private
3.下面是关于静态成员的说法,其中不正确的是(  )。
A. 静态成员有类作用域,但与普通非静态成员有所不同
B. 静态函数没有this指针,同一个类的不同对象拥有相同的静态数据成员
C. 静态数据成员的初始化必须在类外进行
D. 静态函数同样可以访问非静态数据成员
4. 下面的说法中,不正确的一句是(  )。
A.类的友元函数是类的特殊成员函数,它对所有的类成员、保护成员和私有成员享有完全访问特权。
B. 一个类的友元类中的成员函数都是这个类的友元函数
C. 适用于类成员函数和数据的访问控制同样适用于枚举和嵌套类
D. 与结构类似,类也可以互相嵌套,适用于嵌套结构的规则也适用于嵌套类
5. (  )语言是面向对象的语言。
A.  C      B.  Pascal      C.  Fortran      D.  C++
6. C++风格的源文件包含的输入输出头文件为()
A.  stdio.h      B.  stdafx.h      C.  iostream.h      D.  stream.h 
7. 与C语言printf(“Hello word\n”) ;语句功能相同的C++语句是()
A. cout>>”Hello word\n”
B. cin>>” Hello word\n”
关于printf函数正确的是C. cout<<” Hello word\n”
D. cin<<” Hello word\n”
8. 在下面几个元素中,不是面向对象的要素的是(  );
  A.  重载        B.  对象        C.  类          D.  继承
9. 对于int *pa[5];的描述,下面叙述正确的是(  );
A. pa是一个指向数组的指针,所指向的数组是5个int型元素;
B. pa是一个指向某数组中第5个元素的指针,该元素是int型变量;
C. pa是一个具有5个元素的指针数组,每个元素是一个int型指针;
D. pa[5]表示某个数组的第5个元素的值。
10. 下面程序使用new与delete命令:
#include <iostream.h>
main( )
{
  long *p , i;
  p=new long;
  if(!p) {
cout<<”Allocation error\n”;
return 1;
}
*p=1000;
i=(long)p;
cout<<”Here is integer at p:”<<*p<<”\n”;
cout<<”Here is  i: “<<i<<”\n”;
delete p;
return 0;
    }
下面是对这段程序的叙述,其中正确的是()。
A.  有错误,编译不能通过
B. 正确,执行结果为:1000  1000
C. 正确,但执行结果的第二个数值不定
D. 正确,执行结果的各个数值均不为1000
二、 判断下列描述正确性,对者划√,错者划×(每小题2分)
1. C++中标识符内的大小写字母是没有区别的。
2. 宏定义命令是分号结束的。
3. C++的程序中,对变量一定要先说明再使用,说明只要在使用之前就可以。
4. while循环语句的循环体至少执行一次。
5. C++中,所有函数在调用前都要说明。
6. 析构函数是一种函数体为空的成员函数。
7. 如果一个函数没有返回值时,定义时需要用void说明。
8.派生类是从基类派生出来的,它不能再生成新的派生类。
9.对象成员的表示与结构变量成员表示相同,使用运算符.->
10.构造函数和析构函数都可以重载,因为它们都是成员函数。
三、 写出下面程序的输出结果
1#include<iostream.h>
void main()
{ int a,b,c;
  a=1,b=2,c=a+b+3;
  cout<<a<<”,”<<b<<”,”<<c<<endl;
  c=(a++,a+=6,a+b); cout<<c<<endl;
}
    2. #include <iostream.h>
void swap(int &x,int &y)
{
  int temp;
  temp=x;
  x=y;
  y=temp;
  cout<<”x=”<<x<<”,”<<”y=”<<y<<endl;
}
void main()
{
  int a(5),b(9);
  swap(a,b);
  cout<<”a=”<<a<<”,”<<”b=”<<b<<endl;
}
   
    3. #include <iostream.h>
class A
{
  public :
A( );
A(int i,int j);
void print( );
          private :
            int a,b;
          };
        A::A( )
        {  a=b=0;
            cout<<”Default constructor called.\n”;
          }
          A::A(int i,int j)
          { a=i;  b=j;
            cout<<”Constructor called.\n”;
          }
          void A::print( )
          {  cout<<”a=”<<a<<”,b=”<<b<<endl;
          }
        void main( )
          {  A m,n(4,8);
            m.print( );
            n.print( );
          }
   
四、 编程或程序填空
    1.在下划线处填上正确的语句并给出程序的输出结果(6分)。
      #include <iostream.h>
      #include ____(1)_______
      class strA
        {
          public:
strA(float,float,float);
______(2)________;
______(3)________;
          public:
float a,b,c;
        };
        float strA::fun1( )
        {
          return a+b+c;
        }
      strA::strA(float i,float j,float k)
        {
          a=i; b=j; c=k;
        }
      double strA::fun2( )
        {
          float s;
          s=float((a+b+c)/2.0);
          return sqrt(s*(s-a)*(s-b)*(s-c));
        }
      void maina( )
        {
          strA tri(3,4,5);
          cout<<tri.fun1( )<<endl;
          cout<<tri.fun2( )<<endlin;
        }
2.编写分别可求两个整型、浮点型和双精度型数和的重载函数,并写主函数调用之;
3.使用引用作为函数参数,编写一个交换两变量值的函数,并写主函数调用之。
                        C++模拟试题2
一、 选择题(在ABCD四个答案中选择一个正确的填入后面的括号中)
1. C++中,封装是借助于( )达到的。
E. 指针    B.  类    C.  数组    D.  函数
3. 宏定义由()结束。
A. 分号    B.  句号    C.  新行      D.  冒号
3. 下面是关于一个类的友元的说法,其中不正确的是(  )
A. 友元函数可以访问该类的私有数据成员
B. 友元的声明必须放在类的内部
C. 友元函数可以是类的成员函数
D. 类与类之间的友元关系不能被继承
4.  C++中声明常量的关键字是(  )。
A.  const      B.  extern        C.  public      D.  enum
5. 关于动态联编的下列描述中,错误的是(  )。
A. 动态联编是以虚函数为基础的
B. 动态联编时在运行时确定所调用的函数代码的
C. 动态联编调用函数操作是使用指向对象的指针或对象引用
D. 动态联编是在编译时确定操作函数的
6. 下面函数(  )的表示方法说明它使用对象的引用作为参数。
A.  test(pt *p)    B.  test(pt p)
C.  test(pt &p)    D.  test(const P)
7.  虚函数的调用()。
A. 一定使用动态联编
B. 必须使用动态联编
C. 一定使用静态联编
D. 不一定使用动态联编
8. 关于C++与C语言的关系的描述中,错误的是(  );
A.  C语言是C++的子集;        B.  C语言与C++是兼容的;
C.C++对C语言进行了一些改进;  D.  C++和C语言都是面向对象的。
9.重载函数在调用时选择的依据中,(  )是错误的。
  A.  参数个数    B.  参数类型    C.  函数名字    D.  函数类型
10. 下面的程序是关于函数承载的,假定A,B,C,D是它们可能的输出之一,其中正确的输出是(  )。