试题8Word格式.docx
- 文档编号:3234875
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:16
- 大小:19.33KB
试题8Word格式.docx
《试题8Word格式.docx》由会员分享,可在线阅读,更多相关《试题8Word格式.docx(16页珍藏版)》请在冰点文库上搜索。
cout<
'
'
T:
x<
endl;
}
执行后的输出是
A)202020B)001
C)20201D)有语法或逻辑错误
7.下列程序的输出是
string.h>
{
charp1[20]="
abcd"
*p2="
ABCD"
;
charstr[50]="
xyz"
strcpy(str+2,strcat(p1+2,p2+1));
str<
}
A)xyabcABB)abcABz
C)ABabczD)xycdBCD
8.设有说明int(*ptr)[M];
其中的标识符ptr是
A)M个指向整型变量的指针
B)指向M个整型变量的函数指针
C)一个指向具有M个整型元素的一维数组的指针
D)具有M个指针元素的一维指针数组,每个元素都只能指向整型变量
9.设有如下的函数定义
intf(char*s)
{if(!
(*s))return0;
elsereturn1+f(s+1);
若在主程序中用下面的语句调用上述函数,则输出为
f(“goodbye!
”)<
A)1B)6C)8D)0
10.设有类T的定义为
classT{
intx;
public:
T(inta){x=a;
则下面的说明
Ta;
//
(1)
Tb(4);
//
(2)
Tc=b;
//(3)
Td(b);
//(4)
正确的是
A)
(1),
(2),(3),(4)B)
(1),
(2),(3)C)
(2),(3)D)
(2),(3),(4)
11.下面的函数在m为3,n为1时返回的值是
intAck(intm,intn)
{
if(!
m)returnn+1;
n)returnAck(m-1,1);
else
returnAck(m-1,Ack(m,n-1));
A)13B)2C)21
D)死循环(递归无法结束)
12.下面程序的输出是:
#include<
classBase{
protected:
intx;
Base(inta){x=a;
};
classA:
publicBase{
public:
A(inta):
Base(a){};
intGetX(){returnx;
}};
classB:
B(inta):
classC:
publicB,publicA{
C(inta):
A(a+10),B(a+20){};
Cc(10);
c.A:
GetX()<
'
c.B:
A)30,20B)20,30
C)20,20D)30,30
13.程序的输出为:
classX{
X(inta){x=a;
classA:
virtualpublicX{
public:
A(inta):
X(a){}
classB:
B(inta):
publicA,publicB{
A(20),B(30),X(40){}
voidmain(){
Cc(40);
cout<
c.x<
A)20B)30
C)40D)50
14.程序的输出是:
virtualvoidf()
{cout<
”a”;
}};
//A
classY:
publicX{
voidf()
{cout<
”b”;
voidmain()
{Yy;
X*xp=&
y;
xp->
f();
A)abB)aaC)aD)b
15.将上题中标有//A的一行中
的virtual去掉,则输出为
A)abB)bC)aD)非法
16.下列叙述中,正确的是
A)类是一种用户自定义类型
B)类是实现数据封装的单位
C)一个类可以为多个派生类的基类,派生类也可从多个基类继承
D)以上的说法都是正确的
17.下列定义:
classPoint{intx,y;
Point(inta=0,intb=0);
//
(1)
Point(Point&
aPoint);
//
(2)
Point(Point*p);
Point(PointaPoint);
//(4)
A)
(1)是缺省构造函数
B)
(2)是缺省构造函数
C)(3)是缺省构造函数
D)(4)是缺省构造函数
18.上题中拷贝初始化函数是
A)
(2)B)
(2)和(4)
C)(3)D)没有定义
19.下列叙述中,哪一个不正确?
A)含纯虚函数的类称为抽象类
B)不能直接由抽象类建立对象
C)抽象类中能包含构造函数
D)抽象类中不能包含析构函数
20.下列叙述中正确的是
A)基类中的虚函数在派生类中一定要重定义
B)成员函数中虚函数也可被重载
C)基类中的构造函数不可定义为虚函数
D)以上的没有正确的
二.填空(22分)
1.写出下面程序的输出(3分)
inta=2;
{intb=2,c=3;
++a;
c+=++b;
if(++a||++b||++c)
”first:
”<
a<
’‘<
b<
c<
{inta=3,c;
c=b*3;
a+=c;
”second:
”<
a+=c;
”third:
b;
cout<
2.有下面的程序(输出的空格用_代表,如__123表示占五位,右对齐,2分)
iomanip.h>
{inti=11;
char*p="
ThisC++test\n"
//cout.flags(ios:
uppercase);
setw(10)<
i;
setw(6)<
setfill('
%'
)<
hex<
i<
setw(5)<
p;
3.有下面的程序,输出为:
(2分)
classcolor{
virtual~color(){cout<
”color”<
}//A
classred:
publiccolor{
~red(){cout<
”red”<
classbrightred:
publicred{
~brightred(){cout<
”brightred”<
voidmain(void){
color*pa=newbrightred;
deletepa;
问:
程序能否正确执行?
若能结果是什么?
不能则原因是什么?
4.将上题中标有//A的行中的virtual去掉,则程序的结果又如何?
(1分)
5.程序(2分)
fstream.h>
voidmain(){
fstreaminfile,outfile;
charch;
infile.open("
file1.txt"
ios:
in);
outfile.open("
file2.txt"
out);
while(infile.get(ch))
if(ch>
='
A'
&
ch<
Z'
)
outfile.put(ch);
infile.close();
outfile.close();
设在缺省目录下有文件file1.txt,
没有文件file2.txt,文件file1.txt中有
如下内容:
aAbc123Bce
问执行上述程序后file1.txt,file2.txt中
的内容是什么?
6.程序的输出是(2分)
voidrecu(charc)
c;
if(c<
’5’)recu(c+1);
recu(‘0’);
7.程序的输出是:
intfun1(intx){returnx+1;
intfun2(intx){returnx*x;
intfun(int(*f)(int),intn){
for(inti=1,sum=0;
i<
=n;
i++)
sum+=f(i);
returnsum;
voidmain(void)
{cout<
fun(fun1,3)<
fun(fun2,3)<
8.下面程序的输出是
classString{
charstr[81];
String(char*p){strcpy(str,p);
String(){str[0]='
\0'
String&
operator=(String);
friendStringoperator+(String&
String&
);
friendostream&
operator<
(ostream&
String:
operator=(Stringp){
strcpy(str,p.str);
return*this;
Stringoperator+(String&
st1,String&
st2){
Stringtmp;
strcpy(tmp.str,st1.str);
strcat(tmp.str,st2.str);
returntmp;
ostream&
os,
String&
str)
{os<
str.str<
returnos;
voidmain(void)
{Stringa("
This"
),b("
C++"
),c(“test.”),d;
d=a+b+c;
d;
9.下面程序中编译有错误的语句的标号为__________(2分)
classD{intx,y;
D(inta,intb=0)
{x=a;
y=b;
"
a"
}//A
D(inta)
{x=a,y=0;
b"
}//B
voidSetXY(inta,intb){x=a,y=b};
//C
intGetX(){returnx;
}//D
intGetY(){returny;
}//E
{Da(3,3);
//F
Db(9);
//G
a.GetX()<
b.GetX()<
其错误原因是:
______________________
10.下面程序依据的数学公式是:
{intx,y;
Inputx:
cin>
>
x;
switch(x/20)
{case1:
y=x+6;
break;
case2:
y=9*x;
break;
case3:
y=x+20;
default:
y=x;
y<
三..根据题目要求完善程序
1.下面是求前n个自然数和的递归函数(2分,即求1+2+3...+n)
intsum(intn)
if(________)return1;
elsereturn_______;
2.下述程序中函数delstr的功能是:
将字符串str中所有出现的子串str1全部删除。
#include<
char*delstr(char*str,char*str1)
{char*p,*p1,*q1;
inti;
if(*str=='
||*str1=='
returnstr;
p=str;
while(*p!
{p1=p,q1=str1;
while(*p1==*q1&
*q1!
_______;
if(p!
=p1&
*q1=='
{for(i=0;
*p1!
i++,p1++)
___=*p1;
_____='
p++;
return___;
charline[80]="
Iamastudent.\
Youareastudenttoo."
delstr(line,"
student"
\n'
3.若一链表,每次插入数据时结点总加在链首(即总是作为第一个结点加入),现有函数Push,完成插入数据x。
链表结点结构如下:
structNode{
intdata;
Node*next;
链表头指针为top,在链空时top为NULL。
试完成下述填空(注:
NULL是C++中的宏定义#defineNULL0,所以NULL等于0)。
voidPush(Node*&
top,intx)
{
Node*p;
p=____;
p->
data=___;
next=__;
__=p;
四.根据要求写出程序
1.平面上的点可用坐标(x,y)表示,试用C++设计一个Point类(4分),
其要求为:
(1)私有数据为点坐标(x,y),用整型数表示;
(2)类对外的接口有:
给定一对整型数(a,b),置点坐标(x,y);
可取坐标x;
可取坐标y;
可从标准输出设备输出对象的坐标;
(3)在定义一个Point类的对象时,可用给定的数据初始化(x,y);
若没有给出初始化数据,则(x,y)为(0,0)。
2.有函数f(n,k)=1k+2k+┅+nk,试写出程序(6分)
要求:
n,k由键盘读入,为方便,n,k及函数的结果用整型。
3.写一函数完成乘法九九表的输出,格式为:
(6分)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 试题