清华2011c 期末考试试题和答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A. “cout”是一个输出流对象 B.“endl”的作用是输出回车换行
C. “x”是一个变量 D. “<<”称作提取运算符
8. 关于类和对象,下列哪个叙述不正确( C)
A. 一个类描述一组具有相同数据结构和操作函数的对象的特征。
B. 一个类的成员包括一组数据变量和一组函数。
C. 同一个类中的一组函数不能有相同名称。
return(a+b+c);
}
void main( )
{int a=2;
for(int j=0;j<2;j++)
cout<<func(a+j)<< “ ”;
}
程序运行结果为 6 6 。
3. class Testቤተ መጻሕፍቲ ባይዱ
{
int x , y;
int m, n;
public:
void Setxy(int a, int b){x=a; y=b;}
7、纯虚函数是在基类中说明的虚函数,它在该基类中没有定义具体的操作内容。勾
8、析构函数不能被继承。勾
9、运算符重载以后,其优先级和结合性都不能改变。勾
10、在C++中,函数名实际上是一个指针,它指向函数的入口。勾
四、读程序,写出正确的运行结果(每题6分,共30分)
1.swap(int *p1, int *p2)
cout<<*point1<<“,”<<*point2<<endl;
}
其中,从键盘输入的值为a=10,b=100。程序运行结果为 a=100,b=10 100,10 。
2. #include <iostream.h>
int func(int a)
{int b=0;
static int c=4;
b++; c--;
{ int t;
t=*p1; *p1=*p2; *p2=t;
}
void main(void)
{ int *point1, *point2, a,b;
cin>>a>>b;
point1=&a; point2=&b;
if (a<b)
swap (point1, point2);
cout<<“a=“<<a<<“,b=”<<b;
void Setxy(int a,int b,int c,int d){ x=a;y=b;m=c;n=d;}
void Printxy(int x){cout<< “m=”<<m<<‘\t’<<“n=”<<n;}
void Printxy(void) {cout<<“x=”<<x<<‘\t'<< “y=”<<y;}
2、非成员函数应声明为类的友元__函数才能访问这个类的private成员。
3、派生类中的成员不能直接访问基类中的__私有成员。
4、在用class定义一个类时,数据成员和成员函数的默认访问权限是私有或private。
5、含有纯虚函数的类称为抽象类。
6、类的继承方式有_ public(或公有)_ 继承、private 继承和protected 继承。
B. 友元函数只能访问类中私有成员
C. 友元函数破坏隐藏性,尽量少用
D. 友元函数说明在类体内,使用关键字friend
12. 下列关于运算符重载的叙述中,正确的是( B )
A. 通过运算符重载,可以定义新的运算符 B. 有的运算符只能作为成员函数重载
C. 若重载运算符+,则相应的运算符函数名是+ D. 重载二元运算符时,必须声明两个形参
三、判断题(每题1分,共10分)
1、C++语言支持封装性和继承性,不支持多态性。差
2、关系运算符可以用来比较两个字符的大小,也可用来比较两个字符串的大小。差
3、字符串“sdfgh”的长度是5。勾
4、引用和指针都可作函数参数。勾
5、友元函数说明在类体内,它是一种成员函数。差
6、友元类必须被说明为公有成员。差
D. 对象是在运行时刻由类所创建的实例。
9. 在C++中,用于实现运行时多态性的是( D )
A. 内联函数 B. 重载函数 C. 模板函数 D. 虚函数
10. 能够释放对象所占资源的是( A )
A.析构函数 B.数据成员
C.构造函数 D.静态成员函数
11. 关于友元函数的描述中,错误的是( B )
A. 友元函数不是成员函数
3. 若有int x=10,y=20,z=30; 则执行下面语句后,x的值是(B )
if(x>y)z=x; x=y; y=z;
A. 10 B. 20 C. 30 D. 0
4. 循环语句whlie(int i=0 )i--;的循环次数是( A)
A. 0 B. 1 C. 5 D. 无限
5. 一个函数无返回值时,应选择的说明符是( C)
13. 下面四个选项中,( A)是用来声明虚函数的。
A. virtual B. public C. include D. using namespace
14. 以下(C )成员函数表示纯虚函数。
A. virtual int vf(int); B. void vf(int)=0;
C. virtual void vf()=0; D. virtual void vf(int){}
A. static B. extern C. void D. 无说明符
6. 下列关于C++函数的叙述中,正确的是( C )
A. 每个函数至少要具有一个参数 B. 每个函数都必须返回一个值
C. 函数在被调用之前必须先声明 D. 函数不能自己调用自己
7. 对于语句 cout<<x<<endl;错误的是描述是( D)
15. 在表达式 x+y*z中, + 是作为成员函数重载的运算符,* 是作为非成员函数重载的运算符。则 operator+ 和operator* 的参数个数分别为(C )
A. 2、2 B. 2、1 C. 1、2 D. 1、1
二、填空题(每空1分,共10分)
1、面向对象程序设计有四个主要特点,即抽象、封装、__继承___和_多态性_。
1. 下列关于C++标识符的命名不合法的是(C )
A. Pad B. name_1 C. A#bc D. _a12
2. 若有以下类型标识符定义:
int x=2; char w=‘a'; float y=23.45f; double z=45.6712;
则表达式w*x+y-z的结果类型是(D )
A. float B. char C. int D. double
} ;
void main(void)
{ Test p1,p2;
p1.Setxy(3, 5);
C. “x”是一个变量 D. “<<”称作提取运算符
8. 关于类和对象,下列哪个叙述不正确( C)
A. 一个类描述一组具有相同数据结构和操作函数的对象的特征。
B. 一个类的成员包括一组数据变量和一组函数。
C. 同一个类中的一组函数不能有相同名称。
return(a+b+c);
}
void main( )
{int a=2;
for(int j=0;j<2;j++)
cout<<func(a+j)<< “ ”;
}
程序运行结果为 6 6 。
3. class Testቤተ መጻሕፍቲ ባይዱ
{
int x , y;
int m, n;
public:
void Setxy(int a, int b){x=a; y=b;}
7、纯虚函数是在基类中说明的虚函数,它在该基类中没有定义具体的操作内容。勾
8、析构函数不能被继承。勾
9、运算符重载以后,其优先级和结合性都不能改变。勾
10、在C++中,函数名实际上是一个指针,它指向函数的入口。勾
四、读程序,写出正确的运行结果(每题6分,共30分)
1.swap(int *p1, int *p2)
cout<<*point1<<“,”<<*point2<<endl;
}
其中,从键盘输入的值为a=10,b=100。程序运行结果为 a=100,b=10 100,10 。
2. #include <iostream.h>
int func(int a)
{int b=0;
static int c=4;
b++; c--;
{ int t;
t=*p1; *p1=*p2; *p2=t;
}
void main(void)
{ int *point1, *point2, a,b;
cin>>a>>b;
point1=&a; point2=&b;
if (a<b)
swap (point1, point2);
cout<<“a=“<<a<<“,b=”<<b;
void Setxy(int a,int b,int c,int d){ x=a;y=b;m=c;n=d;}
void Printxy(int x){cout<< “m=”<<m<<‘\t’<<“n=”<<n;}
void Printxy(void) {cout<<“x=”<<x<<‘\t'<< “y=”<<y;}
2、非成员函数应声明为类的友元__函数才能访问这个类的private成员。
3、派生类中的成员不能直接访问基类中的__私有成员。
4、在用class定义一个类时,数据成员和成员函数的默认访问权限是私有或private。
5、含有纯虚函数的类称为抽象类。
6、类的继承方式有_ public(或公有)_ 继承、private 继承和protected 继承。
B. 友元函数只能访问类中私有成员
C. 友元函数破坏隐藏性,尽量少用
D. 友元函数说明在类体内,使用关键字friend
12. 下列关于运算符重载的叙述中,正确的是( B )
A. 通过运算符重载,可以定义新的运算符 B. 有的运算符只能作为成员函数重载
C. 若重载运算符+,则相应的运算符函数名是+ D. 重载二元运算符时,必须声明两个形参
三、判断题(每题1分,共10分)
1、C++语言支持封装性和继承性,不支持多态性。差
2、关系运算符可以用来比较两个字符的大小,也可用来比较两个字符串的大小。差
3、字符串“sdfgh”的长度是5。勾
4、引用和指针都可作函数参数。勾
5、友元函数说明在类体内,它是一种成员函数。差
6、友元类必须被说明为公有成员。差
D. 对象是在运行时刻由类所创建的实例。
9. 在C++中,用于实现运行时多态性的是( D )
A. 内联函数 B. 重载函数 C. 模板函数 D. 虚函数
10. 能够释放对象所占资源的是( A )
A.析构函数 B.数据成员
C.构造函数 D.静态成员函数
11. 关于友元函数的描述中,错误的是( B )
A. 友元函数不是成员函数
3. 若有int x=10,y=20,z=30; 则执行下面语句后,x的值是(B )
if(x>y)z=x; x=y; y=z;
A. 10 B. 20 C. 30 D. 0
4. 循环语句whlie(int i=0 )i--;的循环次数是( A)
A. 0 B. 1 C. 5 D. 无限
5. 一个函数无返回值时,应选择的说明符是( C)
13. 下面四个选项中,( A)是用来声明虚函数的。
A. virtual B. public C. include D. using namespace
14. 以下(C )成员函数表示纯虚函数。
A. virtual int vf(int); B. void vf(int)=0;
C. virtual void vf()=0; D. virtual void vf(int){}
A. static B. extern C. void D. 无说明符
6. 下列关于C++函数的叙述中,正确的是( C )
A. 每个函数至少要具有一个参数 B. 每个函数都必须返回一个值
C. 函数在被调用之前必须先声明 D. 函数不能自己调用自己
7. 对于语句 cout<<x<<endl;错误的是描述是( D)
15. 在表达式 x+y*z中, + 是作为成员函数重载的运算符,* 是作为非成员函数重载的运算符。则 operator+ 和operator* 的参数个数分别为(C )
A. 2、2 B. 2、1 C. 1、2 D. 1、1
二、填空题(每空1分,共10分)
1、面向对象程序设计有四个主要特点,即抽象、封装、__继承___和_多态性_。
1. 下列关于C++标识符的命名不合法的是(C )
A. Pad B. name_1 C. A#bc D. _a12
2. 若有以下类型标识符定义:
int x=2; char w=‘a'; float y=23.45f; double z=45.6712;
则表达式w*x+y-z的结果类型是(D )
A. float B. char C. int D. double
} ;
void main(void)
{ Test p1,p2;
p1.Setxy(3, 5);