班级: 学号: 姓名: 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++) cout< cout< for(k=0; k<5; k++) cout< cout< 7.以下程序运行后输出的第一行是 (8) ,第二行是 (9) ,第三行是 (10) 。 #include int k=1; void f(int m){ m+=k; k+=m; { char k='B'; cout< cout< void main(void){ int i=4; f(i); cout<} 8.以下程序运行后输出的第一行是 (11) ,第二行是 (12) 。 #include struct STRUCT { char s[20],*p;}; void main(void){ STRUCT st={"江科大程序设计"}; cout< 9.以下程序运行后输出的第一行是 (13) ,第二行是 (14) 。 #include class AA{ int val; public: AA(int x=0){val=x;cout< class BB{ AA a1,a2; int val; public: BB(int x,int y,int z=0):a2(x),a1(y) {val=z;cout< void main(){ BB obj(1,2,3); cout<<'\\n'; } 10. 以下程序运行后输出的第一行是 (15) ,第二行是 (16) 。 #include class Myclass{ int x,y; public: Myclass(int a,int b){ x=a; y=b; cout< Myclass(Myclass &t){ x=t.x*2; y=t.y*2; cout< }; void main(void){ Myclass obj1(5,10),obj2=obj1; } ●完善程序题 11. 类Sample的构造函数将形参data赋值给数据成员data,请将类定义补充完整。 class Sample{ private: int data; public: Sample(int data=0); }; Sample:: Sample( (17) ){ (18) ; } 12.以下程序定义平面直角坐标中的点类Point(x表示横坐标,y表示纵坐标)、线段类Line(由平面坐标中点p1、p2和它们之间的距离distance组成),请根据要求和程序运行结果完善程序。 程序运行结果: 点:(1,1) 点:(2,2) 距离:1.41421 源程序: #include #include class Point{ int x; public: int y; Point(int a=0,int b=0) { x=a; y=b; } int getx(){ return x; } void print(){ cout<<"点:("< class Line{ Point p1,p2; public: Line(int x1,int y1,int x2,int y2): (19) //对子对象p1,p2初始化 { } void show(){ p1.print(); p2.print(); } double distance() { double x= (20) ; double y=p1.y-p2.y; return sqrt(x*x+y*y); } }; void main(){ Line L(1,1,2,2); L.show(); cout<<"线段长度为:"<< (21) <<'\\n'; } 13. 设已建立一个单向链表,指针head指向该链表的首结点。定义一个函数将head所指链表上各结点的数据按data值升序排序。结点的数据结构如下: struct node{ int data; node *next; }; 算法分析:初始时,使指针变量p指向该链表的首结点,从p之后的所有结点中找出data值最小的结点,让p1指向该结点。将p指向结点的data值与p1指向结点的data值进行交换。让p指向下一个结点,依此类推,直至p指向链表的最后一个结点为止。最后,函数返回已排好序的链表的头指针。 编程实现: (22) sort(node *h) { node *p=h,*p1,*p2; if(p==NULL) return h; while(p->next!=NULL) { p1=p; p2=p->next; while(p2!=NULL) { if( (23) ) p1=p2; p2=p2->next; } if(p!=p1) { int t; t=p->data; (24) ; p1-data =t; } (25) ; } return h; } 三、编程题(计20分) [题目] 定义一个字符串类STR,具体要求如下: (1)私有数据成员 char *s; // 指向成员字符串 (2)公有成员函数 STR(char *p); // 构造函数,根据给定的字符串初始化数据成员 fun( ); // 成员函数,将指针s所指向的字符串逆序 show( ); // 输出数据成员 ~STR( ); // 释放申请到的动态内存空间 (3)在主函数中定义一个字符数组,用getline函数从键盘输入一个长度小于20的字符串,并使用该字符串对类STR进行测试。 江苏科技大学Visual C++阶段测验(5-7章)答题纸 班级: 学号: 姓名: 2012/6/7 (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) 三、编程题(20分)下载本文
一、选择题(每题2分,计30分)题号 一、选择题 二、填空题 三、编程题 总计 得分
二、填空题(每空2分,计50分)题号 1 2 3 4 5 6 7 8 9 10 答案 题号 11 12 13 14 15 答案