长沙理工大学考试试卷
………………………………………………………………………………………………………………
试卷编号 7 拟题教研室(或教师)签名 教研室主任签名
………………………………………………………………………………………………………………
课程名称(含档次) C++程序设计 课程代号 0806005
专 业 计算机科学与技术 层次(本、专) 本 考试方式(开、闭卷) 闭
一、填空题(15分,每空1分)
1、C++ 语言中规定的返回值的类型是由 所决定的。在定义该函数时所指定的函数类型
2、在类的定义体外定义成员函数时,需要在函数名前加上 ,而在域外使用成员函数时,需要在成员名外加上 的名字。
3、在C++中,可以把具有相同内部存储结构和相同操作的对象看成属于同一类。在指定一个类后,往往把属于这个类的对象称为类的 。从语言角度来说,类是一种数据类型,而 是具有这种类型的变量。 4、要在类的对象上使用运算符,除了运算符______和______以外,其他的运算符都必须被重载。
5、有如下定义语句: MyClass p[10];则系统自动调用该类构造函数______次。当类对象数组p离开它的作用域时,系统自动调用该类析构函数______次。
6、对类中的成员函数和属性的访问是通过______、______和______这3个关键字来控制的。
7、______运算符对指定类型对象动态分配内存并返回该类型的指针。
8、使用传址调用方式时,调用函数的实参使用地址值,被调用函数的形参使用 。 9、利用继承能够实现_________。这种实现缩短了程序的开发时间,促使开发人员复用已经测试和调试好的高质量软件。
二、选择题(20分,每题2分)
1、下面语句彼此等价的是_________。
A)!(a<10)&&!(a>0)___ !((a<10)&&(a>0)) B)!(a= =b)______ (a>b)&&(ab)______ a
D)!((a>10)||(a<0))___ !(a<=10)&&!(a>=0)
2指针运算的描述错误的是_________。 A)在一定条件下,两个指针可以相加
B)在一定条件下,两个指针可以进行逻辑判断 C)在一定条件下,指针可以为空值
D)在一定条件下,两个指针可以相互赋值
3、一个函数带有参数说明时,则参数的默认值应该在_________中给出。
A) 函数定义 B)函数声明 C)函数定义或声明 D)函数调用 4、关于类的说法错误的是_________。
第 1 页 共 9 页
欢迎加入长沙理工资料群:586886775
A) 对象是类的一个实例
B) 类是一种用户自定义的数据类型
C) 在类中,如果不作特别说明,所有的成员函数均为公有类型 D) 在类中,如果不作特别说明,所有的数据均为私有类型 5、两个变量定义不能同名,是因为_________。
A)这两个变量定义在同一文件中 B)这两个变量定义在同一作用域中
C)一个定义在main函数中,一个定义在子函数中 D)以上说法均不正确 6、在C++语言中函数返回值的类型是由_________决定的。
A) 定义该函数时所指定的函数类型 B)return语句中的表达式类型 C) 调用该函数时系统临时 D)调用该函数时的主调函数类型 7、下面是类MyClass的定义,对定义中语句描述正确的是_________。 Class MyClass { public:
void MyClass(int a){X=a;}___ //① int f(int a,int b)______//② { X=a; Y=b; }
int f(int a,int b,int c=O)___ //③ {
X=a; Y=b; Z=c; }
static void g(){X=10;}___ //④ private: int X,Y,Z; };
A) 语句①是类MyClass的构造函数定义 B) 语句②和语句③实现类成员函数的重载
C) 语句④实现对类成员变量X的更新操作 D) 语句①、②、③和④都不正确 8、有关构造函数的说法不正确的是 。 A)构造函数的函数名与类名相同 B)构造函数在说明类变量时自动执行 C)构造函数无任何函数类型 D)构造函数有且只有一个
9、在多继承的构造函数定义中,几个基类的构造函数之间用 分隔。 A) .: B) .; C) ., D).::
10、下列关于条件语句的描述中,________是错误的。
A)if语句中只有一个else子句 B) if语句中可以有多个else if子句
C) )if语句中if体内不能是switch语句 D)if语句中if体内可以是循环语句 三、阅读程序填空(15分,第2小题最后一空1分,其它空2分)
欢迎加入长沙理工资料群:586886775
欢迎加入长沙理工资料群:586886775
1、下列程序通过把类Distance定义为类Point的友元类来实现计算两点之间距离的功能。请完成该程序。 #include iostream.h> #include
public:
____________ ;
Point (____________ ) { X=a; Y=b; }
void Print() {
cout<<\cout<<\ }
private: float X,Y; };
class Distance {
public:
float Dis(Point &p,Point &q); };
f1oat Distance::Dis(Point &p,Point &q) {
float result; ____________ ;
cout< void main() { Point p(10,10),q(20,20); Distance d; d.Dis(p,q); } 2、下面的程序实现从键盘输入一个偶数,输出该偶数写成的两个素数之和。 #include #include 欢迎加入长沙理工资料群:586886775 欢迎加入长沙理工资料群:586886775 { int a,b,c,d; cout << “a=”;cin >>a; if (a<=0 || a%2!=0) cout << “输入一个正偶数!”<< endl; else for ( ) { for (c=2;c<=sqrt(b);c++) if (b%c==0) break; if (c>sqrt (b)) d=a-b; else break; for ( ) if ( d%c==0)) break; if (c>sqrt (d)) cout << b << “+” < 3、下面程序的执行结果是: #include if (n!=0) { ; for (int i=1;i<=n;i++) ; cout << endl; } } void main () { int n=4; ; } 四、阅读程序,并写出结果(20分) 1、#include 欢迎加入长沙理工资料群:586886775 欢迎加入长沙理工资料群:586886775 { int i,j,k,; for (i=1;i<=6;i++) { for (j=1;j<=20-2*i;j++) cout<<\ for (k=1;k<=i ;k++) cout << endl; } } 2、#include extern int x,y; cout << add(x,y) << endl; } int x=20,y=5; int add ( int a,int b ) { int s=a+b; retrun s; } 3、#include class Sample { int x,y; public: Sample() {x=y=0;} Sample(int a,int b) {x=a;y=b;} ~Sample() { if(x==y) cout<<\else cout<<\} void disp() { cout<<\ } }; void main() 欢迎加入长沙理工资料群:586886775