C++程序设计》
考试样卷
题类
总分
得分
学校:                学号:            姓名:           
一、 单项选择题(30分,共15题,每小题2分)
1C++C语言作了很多改进,从面向过程变成为面向对象的主要原因为____
A) 增加了一些新的运算符      B) 允许函数重载,并允许设置缺省参数
C) 规定函数说明符必须用原型  D) 引进了类和对象的概念
2. 以下说法中,错误的是   
A) 函数的形式参数类型若与实际参数不一致,则以实际参数类型为准
B) 函数的形式参数在函数被调用时系统才为其分配存储空间.
C) 函数的嵌套调用就是直接或间接地调用函数本身.
D) 在函数定义时若没有指出函数的数据类型, 则默认函数的返回值是void.
3.已知:int m=10; 下列表示引用的方法中,正确的是____
A) int& x=m;  B) float& t=&m;  C) int& z;  D) float& t=m;
4. 下列析构函数的特征是____
A) 一个类中只能定义一个析构函数
B) 析构函数名与类名无关
C) 析构函数的定义只能在类体内
D) 析构函数可以有一个或多个参数
5. sizeof(double)    
A) 一个不合法的表示形式        B) 一种函数的调用 
C) 一个整型表达式              D) 一个双精度浮点表达式
6. 若条件表达式(exp? a++: b--, 则以下表达式中能完全等价于表达式(exp)的是   
A) (exp==0)                  B)  (exp=1)   
C) (exp==1)                  D)  (exp=0)
7. 若定义char t[10]; 则在下面表达式中不表示t[1]的地址的是   
A) t+1        B) t++        C) &t[0]+1      D) &t[1]
8.一个函数功能不太复杂,但要求被频繁调用,选用____
A) 内联函数    B) 重载函数    C) 递归函数      D) 嵌套函数
9. 下面程序段的运行结果是   
    char str[] = "ABC", *q =str;
    cout<<*(q+3);
A) 67        B) 字符 'C'    C) 字符 'C'的地址    D) 0
10.在C++中,关于下列设置参数默认值的描述中,正确的是____
A) 程序中有函数重载,就不能设置参数默认值
B) 设置参数默认值,只能在函数定义时进行
C) 设置参数默认值时,应该是先设置右边的再设置左边的
D) 设置参数默认值时,应该全部参数都设置
11.下列标识符中,具有文件作用域的是____
A) 函数参数    B) 语句标号    C) 静态全局变量      D) 局部变量
12.下列不能作为类的成员的是____
A) 自身类对象的指针            B) 自身类对象
C) 自身类对象的引用            D) 另一个类的对象
13.下列析构函数的特征是____
A) 一个类中只能定义一个析构函数
B) 析构函数名与类名无关
C) 析构函数的定义只能在类体内
D) 析构函数可以有一个或多个参数
14.关于成员函数的特征描述中,错误的是____
A) 成员函数一定是内联函数          B) 成员函数可以重载
C) 成员函数可以设置参数默认值      D) 成员函数可以是静态的
15.已知:int a, *pa=&a; 输出指针pa值的十进制表示的方法是____
A) cout<<pa;                    B) cout<<*pa;
C) cout<<&pa;                    D) cout<<long(pa);
析构函数的定义
二、是非判断题(10分,共10题,每小题1分)(请在题号上打√或X
1. C++中使用注释符(//),不能使用注释符(/*…*/)。
2. C++中定义常量,不能用宏定义的方法,只能用const
3. C++是一种编译型的高级语言。
4. 错误信息可能会出现在编译过程中,不会出现在链接过程中。
5. C++提供的库函数都被定义在它所对应的头文件中。
6. C++中数组元素的下标是从0开始,它们连续存储在内存单元中。
7. 引用是某个变量的别名,对引用的操作,就是对被引用变量的操作。
8. 语句int a(5), &b = a, *p = &a;中,b的值和*p的值是相等的。
9. C++中,声明函数时都用函数原型。
10.如果一个函数没有返回值,定义时函数头前需用void
三、填空题(10分,共5题,每小题2分)
1. 在用class定义一个类时,数据成员和成员函数的默认访问权限是____
2. 含有纯虚函数的类称为____
3. 已知int fn(int n){return n+n;}long fn(long n){return n+n;}是一个函数模板的两个实例,则该函数模板的定义是____
4. 继承的方式有公有继承、私有继承和____3种。
5. 表达式operator+(x,y)还可以表示为____
四、读程序,写运行结果(30分)
1.7分)
#include<iostream>
using namespace std;
//----------------------------------
void other();
//----------------------------------
int main(){
  int x=0, y=3;
  other();
  cout<<x<<” ”<<y<<”\n”;
  other();
}//---------------------------------
void other(){
  static int x=2;
  int y=6;
  x += 2;
  cout<<x<<” ”<<y<<”\n”;
}//---------------------------------
2. 8分)
#include <iostream>
using namespace std;
//----------------------------------
class Class{
  int x,y;
public:
  Class(int n=6, int m=7);
  ~Class();
  void Set(int n, int m){ x=n; y=m; }
};//--------------------------------
Class::Class(int n, int m){
  Set(n,m);
  cout<<"Construct: x="<<x<<",y="<<y<<”\n”;
}//---------------------------------
Class::~Class(){
  cout<<"Destruct: x="<<x<<",y="<<y<<”\n”;
}//---------------------------------
int main(){
  Class a(5);
  Class b=Class(1,3);
  cout <<"\n";
}//---------------------------------
3. 8分)
#include<iostream>
using namespace std;
//----------------------------------
class Tdate{
  void Init(int m,int d,int y);
  int month, day, year;
public:
  Tdate();
  Tdate(int d);
  Tdate(int m,int d);
  Tdate(int m,int d,int y);
  void Print();
};
Tdate::Tdate(){
  Init(6,13,2000);
}
Tdate::Tdate(int d){
  Init(6,d,2000);
}
Tdate::Tdate(int m,int d){
  Init(m,d,2000);
}
Tdate::Tdate(int m,int d,int y){
  Init(m,d,y);
}
void Tdate::Init(int m,int d,int y){
  month = m;
  day = d;
  year = y;
}
void Tdate::Print(){
  cout<<month<<”-”<<day<<”-”<<year<<”\n”;
}//---------------------------------
int main(){
  Tdate today(6,17,2000);
  Tdate someday(4,25);
  Tdate oneday(3);
  Tdate otherday;
  today.Print();
  someday.Print();
  oneday.Print();
  otherday.Print();
}//---------------------------------
4.(7分)
#include<iostream>
using namespace std;
//----------------------------------
class Counter{
  int v;
public:
  Counter(){ v=0; }
  Counter& preAddOne();
  Counter  postAddOne();
  void print(){ cout<<v<<”\n”; }

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