
班级: 学号: 姓名: 2012/6/7
答题注意事项:
1、所有答案必须写在答题纸上;考试完毕只交答题纸,不交试卷。
2、填写答案时,注意题号;特别是填空题,做到空格号与试题中空格号对应,注意输出格式。
3、编程题,注意书写的规范、工整,字迹(包括标点符号)清楚。
一、选择题(每题2分,计30分)
1. 若要定义一个只允许本源程序中所有函数使用的全局变量,则该变量需要使用的存储类型是 。
A.extern B.static C.auto D.register
2. 有如下程序段,运行时的输出结果是 。
int i=4;
int j=1;
void main(){
int i=8,j=i;
cout<}
A. 44 B. 41 C. 88 D. 81
3. 有如下程序段,for循环体执行的次数是 。
#include #define N 1 #define M N+2 #define NUM 2*M+3 void main() { int i; for(i=1;i<=NUM;i++)cout<} A. 6 B. 7 C. 8 D. 9 4. 有如下函数定义: int fun(int x){ int y=x; { int x=10; y+=x; } return x+y; } 通过表达式fun(5)调用该函数,则得到的返回值为 。 A. 10 B. 15 C. 20 D. 25 5. 已知宏定义: #define N 3 #define Y(n) ((N+1)*n) 执行语句z=2*(N+Y(5+1)); 后,变量z的值是 。 A. 42 B. 48 C. 52 D. 出错 6. 以下程序的输出结果是 。 #include void fun(int *s,int *y){ static int t=3; *y=t; t--; } void main(){ int a[]={1,2,3,4},x=0; for(int i=0;i<4;i++){ fun(a,&x); cout< cout<<'\\n'; } A. 0 1 2 3 B. 0 0 0 0 C. 3 3 3 3 D. 3 2 1 0 7. 设有结构体定义如下: struct ST{int a;float b;}st1={1,2}; struct {int a;float b;}st2; 则下列使用中,正确的是 。 A.cin>>st2; B.st2=st1; C.cout< A.char *p=new char; B.char *p=new char [10]; C.char *p =new char ('1'); D.char *p=new char ("abc"); 9. 下列描述中,不属于面向对象思想主要特征的是 。 A. 封装性 B. 跨平台性 C. 继承性 D. 多态性 10. 有如下两个类的定义: class AA{}; class BB{ AA c1,*c2; BB c3; int *c4; }; 其中有一个成员变量的定义是错误的,这个变量是 。 A. c1 B. c2 C. c3 D. c4 11. 以下关键字不能用来声明类的访问权限的是 。 A. public B. static C. protected D. private 12. 对于一个类定义,下列叙述中错误的是 。 A. 如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数 B. 如果没有定义缺省的构造函数,编译器将生成一个缺省的构造函数 C. 如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数 D. 如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数 13. 下列关于类定义的说法中,正确的是 。 A. 类定义中包括数据成员和成员函数的声明 B. 类成员的缺省访问权限是保护的 C. 数据成员必须被声明为私有的 D. 成员函数只能在类体外定义 14. 下列情况下,不会调用拷贝构造函数的是 。 A. 用一个对象去初始化同一类的另一个新对象时 B. 将类的一个对象赋值给该类的另一个对象时 C. 函数的形参是类的对象,调用函数进行形参与实参之间的参数传递时 D. 函数的返回值是类的对象,函数执行完毕返回时 15. 若MyClass是一个类名,且有如下语句序列 MyClass c1,*c2; MyClass *c3=new MyClass; MyClass &c4=c1; 上述语句序列所定义对象的个数是 。 A. 1 B. 2 C. 3 D. 4 二、填空题(每空2分,计50分) ●基本概念题 1.在块中,可以通过 (1) 运算符引用与块内变量同名的全局变量。 2.静态整型变量的缺省值为 (2) 。 3.用new运算符申请动态对象时,系统将自动调用该对象的 (3) 。 4.当一个对象的成员函数被调用时,该成员函数中有 (4) 指向调用它的对象。 5.若有链表结点定义:struct node { int data; node *next;}; 假设指针p已经指向链表的第2个结点,则可通过 (5) 来取第4个结点中data的值。 ●阅读程序题 6.以下程序运行后输出的第1行是 (6) ,第2行是 (7) 。 #include void f(int *s){ static int j; do{ s[j]+=s[j+1]; }while(++j<2); } void main(void){ int a[5]={1, 2, 3, 4, 5},k; f(a); for(k=0; k<5; k++)
