成都元亨教育面向对象程序设计复习题Word格式.docx
- 文档编号:4471904
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:25
- 大小:22.44KB
成都元亨教育面向对象程序设计复习题Word格式.docx
《成都元亨教育面向对象程序设计复习题Word格式.docx》由会员分享,可在线阅读,更多相关《成都元亨教育面向对象程序设计复习题Word格式.docx(25页珍藏版)》请在冰点文库上搜索。
A.函数的名字与类名无关B.函数可以重载
C.函数形参可有可无D.不能指定函数返回值的类型
17、列对类的描述中,不符合C++语法的是(B)。
A.一个派生类至少有一个基类
B.一个派生类只能有一个基类
C.一个基类不可以有多个派生类
D.抽象类一定是另一个类的基类
18、C++中的虚函数可以实现的面向对象的基本特性是(D)。
A.封装性B.继承性C.抽象性D.多态性
19、下列关于运算符重载的描述中,错误的是(D)。
A.运算符只能重载为成员函数
B.运算符只能重载为友元函数
C.有些运算符只能重载为成员函数
D.有些运算符只能重载为友元函数
20、有文件打开语句:
ofstreamfout(“data”);
则下列描述中,正确的描述是(D)。
A.fout是一个标准输入流对象;
B.fout是一个标准输出流对象;
C.fout是一个文件输入流对象;
D.fout是一个文件输出流对象;
21、下列标示符中,符合C++标示符命名规则的是(A)。
A.AmaxB.x
(2)C.intD.姓名
22、下列常数中,不符合C++语法的是(C)。
A..5B.‘7’C.2e0.5D.3.14f
23、下列字符常量中,不符合C++语法的是(B)。
A.’\0’B.‘\’C.‘3’D.‘*’
24、以下指针用法中错误的是(B)。
A.inti;
int*ptr=&
i;
B.int*ptr=2000;
C.int*ptr=0;
D.inti,*ptr=&
*ptr=5;
25、下列描述中,不属于地址调用的是(D)。
A.形参、实参是指针B.形参、实参都是数组
C.形参是指针,实参是数组名D.形参是变量的引用,实参是变量
26、下列各种函数中,在对象生命期结束时自动调用的函数是(B)。
A.构造函数B.析构函数C.友元函数D.虚函数
27、下列描述中,不属于虚函数的特征是(C)。
A.函数定义时不加virtualB.是类的非静态成员函数
C.函数没有形参D.不能重载
28、C++中设置友元函数的目的是(B)。
A.解决继承中的二义性问题B.提高编程效率
C.实现动态多态性D.实现静态多态性
29、下列关于运算符重载的描述中,正确的是(D)。
A.运算符重载可以改变操作数的个数
B.运算符重载可以改变原有运算符的优先级
C.运算符重载可以改变运算符的结合性
D.运算符重载可以定义新的运算方法
30、用I/O流打开一个文件时,如果不指定文件存储方式,则该文件的格式是(B)。
A.二进制文件B.文本文件C.无格式D.不确定
二、判断题(每题1分,共10分,对的打√,错的打×
)
1、一个程序文件中,main函数有且只能有一个。
(√)
2、程序中的注释是可执行的语句。
(×
)
3、C++的表达式中不允许不同类型数据的混合运算。
4、系统函数不需要任何人定义,编程时可直接使用。
5、数组名可以看作一个指针变量。
6、不同函数间传递数组时,采用的是引用调用方式。
7、虚函数可以是类的静态成员。
8、抽象类只能做基类,但可以定义该类的对象。
9、文本文件只能保存字符数据,不能保存数值数据。
10、函数调用在前,定义在后时,需要原型声明。
11、main函数总是程序中第一个被执行的函数。
(√)
12、程序中的注释是写给编程人员看的。
(√)
13、C++的表达式中允许不同类型数据的混合运算。
14、函数在调用之前必须先定义或声明。
(√)
15、数组名中存放的是一个地址。
(√)
16、不同函数间传递数组时,采用的是地址调用方式。
17、基类的指针可以指向其派生类的对象。
18、复制构造函数与构造函数的执行时机是一样的。
19、类中定义的成员函数都是内联函数。
20、没有main函数的C++程序也可以执行。
(×
21、程序中有没有注释不影响程序的执行。
22、一个函数的函数体中不能包含另一个函数的定义。
23、类的任何公有成员在类体外必须通过对象来访问。
24、一个指针变量指向数组元素时可以做++或—操作。
(√)
25、具有块作用域的变量在块结束时,所占存储空间一定被释放。
三、阅读程序写结果
1、#include<
iostream.h>
voidmain(){
ints=0,k;
for(k=7;
k>
=0;
k--){
switch(k){
case1:
case4:
case7:
s+=k;
break;
case2:
case3:
case6:
case0:
case5:
s++;
}
cout<
<
”S=”<
s<
endl;
输出结果:
答:
S=14
2、写出以下程序运行时分别输入1、0、5时的输出结果。
#include<
iostream.h>
voidmain()
{inta,b=5;
”输入一个整数:
”;
cin>
>
switch(a>
0)
{case1:
switch(b<
10)
{case0:
″*″<
″#″<
default:
″!
\n″;
switch(b>
″ok1\n″;
″ok2\n″;
第一次运行:
输入一个整数:
1
#
!
ok2
第二次运行:
第三次运行:
5
3、写出下列程序运行时输入9的运行结果
inta[10]={23,4,78,9,9,37,92,47,9,17},x,i,k=-1;
”Inputanumber:
x;
for(i=0;
i<
10;
i++)
if(a[i]!
=x)a[++k]=a[i];
=k;
i++)
a[i]<
“”;
2347837924717
4、#include<
{inta[4],i,j,k;
i<
4;
i++)a[i]=0;
k=3;
k;
i++)
for(j=0;
j<
j++)
a[j]=a[i]+2;
a[1]<
″″<
a[3]<
1012
5、#include<
longfac(int);
{inti;
for(i=1;
=5;
fac(i+1)<
longfac(intn)
{staticlongf=1;
f=f*n;
returnf;
12
26
324
4120
5720
6、#include<
voidswap(int&
m1,int&
m2)
{m1*=2;
m2+=2;
}
{inta(10),b(20);
a<
b<
swap(a,b);
1020
2022
7、#include<
classmyclass
{private:
intx,y;
staticlongsum;
public:
myclass(inta,intb){x=a;
y=b;
voidgetxy()
{sum*=x*y;
″sum=″<
sum<
};
longmyclass:
:
sum=1;
{myclassob1(1,2);
ob1·
getxy();
myclassob2(3,4);
ob2·
myclassob3(5,6);
ob3·
sum=2
sum=24
sum=720
8、#include<
classcube
{public:
cube(intht=2,intwd=5,intdp=3)
{height=ht;
width=wd;
depth=dp;
″depth=″<
depth<
″construnctedcalled″<
~cube(){cout<
″Destructedcalled″<
intvolume(){returnheight*width*depth;
private:
intheight,width,depth;
{cubecone(10,20,15),ctwo;
cone.volume()<
ctwo.volume()<
depth=15construnctedcalled
depth=3construnctedcalled
3000
30
depth=3Destructedcalled
depth=15Destructedcalled
9、#include<
classA{
virtualvoiddisp(){cout<
”A”<
classB:
publicA{
voiddisp(){cout<
”B”<
voidp1(A&
a1)
{a1.disp();
voidp2(Aa2)
{a2.disp();
{Bb;
p1(b);
p2(b);
B
A
10、#include<
voidf(int);
{
for(inti
(1);
=4;
f(i);
voidf(intj)
staticinta=10;
intb=1;
a+=10;
b+=5;
cout<
'
+'
='
a+b<
20+6=26
30+6=36
40+6=46
50+6=56
四、程序填空
1、以下的程序实现求分数序列2/1,3/2,5/3,8/5,13/8,21/13,……前15项的和。
#include<
#defineN15
voidmain(){
inti,m,n,k;
doubles=0;
m=2,n=1;
for(i=1;
=N;
i++){
s=s+1.0*m/n;
k=m;
m=m+n;
n=k;
”s=”<
2、下面是利用运算符重载实现字符串加等的程序,请在空白处填入合适的内容。
string.h>
classCstring
{char*s;
Cstring(char*s1=0){
s=newchar[strlen(s1)+1];
strcpy(s,s1);
___Cstringoperator+=(Cstring&
s1);
__
voidlist(){cout<
CstringCstring:
operator+=(Cstring&
s1)
char*t=newchar[strlen(s)+strlen(s1.s)+1];
strcpy(t,s);
strcat(t,s1.s);
deletes;
s=t;
__return*this;
Cstringcstr1("
abcd"
),cstr2("
1234"
);
__cstr1+=cstr2;
cstr1.list();
3、下面程序将输入到数组a中的数据重新按逆序存放,然后将逆序存放后的数据输出。
constintN10;
{inta[N],*p=a,*q,r;
”输入10个整数:
for(inti=0;
N;
)cin>
a[I++];
p=a;
q=&
a[9];
while(_____p<
q_________)
{r=*p;
p=q;
*q=r;
p++;
_____q--__;
”逆序存放结果:
p=a;
N;
*p++<
″″;
4、、输入一串有字母和数字混合的字符串,编程序将字符串中的字母和数字分开,分别存入两个不同的文件。
#include<
#include<
fstream.h>
#include<
stdlib.h>
{
charch[100];
cout<
"
请输入一串有字符和数字的字符串:
ofstreamfout1("
shuzi.txt"
ofstreamfout2("
zimu.txt"
if(!
fout1)
{
文件打开失败!
"
exit
(1);
fout2)
cin>
ch;
inti=0;
do{
if('
0'
=ch[i]&
ch[i]<
9'
fout1<
ch[i];
if(('
a'
z'
)||('
A'
Z'
))
fout2<
ch[i];
i++;
}while(ch[i]!
=0);
fout1.close();
fout2.close();
5、下面的程序输出小于200的素数,而且每行最多输出10个素数。
iomanip.h>
classPrime{
intp;
Prime(intn){if(n<
3)p=3;
elsep=n;
voidRun();
voidPrime:
Run()
intk,j,flag,line=0;
for(j=2;
p;
flag=1;
for(k=2;
k<
j;
k++)
if(j%k==0)
flag=0;
if(flag)
setw(5)<
line++;
if(line%10==0)
Primeobj(200);
obj.Run();
6、下面是将一个一维数组及各元素乘积写入文本文件data.txt的程序,请在空白处填入合适的内容。
___#include<
stdlib.h>
inta[10]={1,2,3,4,5,6,7,8,9,10},cum=0;
__ofstreamfout("
data.txt"
_
fout){//打开文件失败
Cannotopenthefile!
exit
(1);
inti;
for(i=0;
i++){
cum*=a[i];
__fout<
_//将数组元素写入文件
_fout<
cum<
_//将元素的乘积写入文件
fout.close();
7、以下程序用友元函数实现复数加和复数赋制运算,完成程序。
classcomplex{
doublereal,image;
complex(){real=0;
image=0;
complex(doubler,doublei){real=r;
image=i;
friendcomplexoperator+(complex&
a,constcomplex&
b);
complex&
operator=(complex&
c);
voidprint();
complexoperator+(complex&
b)
returncomplex(_a.real+b.real,a.image+b.image_);
complex:
operator=(complex&
c)
real=c.real;
imag=c.imag;
return*this;
voidcomplex:
print()
real<
”+”<
image<
{complexc1,c2(1.5,4.0),c3(6.5,-2.8);
complexc4=c2+c3;
c1=c4;
c1.print();
c4.print();
8、下面是利用运算符重载实现字符串赋值(=)的程序,请在空白处填入合适的内容。
__Cstringoperator=(Cstring&
operator=(Cstring&
s=newchar[strlen(s1.s)+1];
strcpy(s,s1.s);
_
____cstr1=cstr2;
____
五、编程题
1、从由键盘输入的若干整数中找出其中最大的数并输出。
当输入为负数时结束输入。
voidmain()
inta,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 成都 教育 面向 对象 程序设计 复习题