南理工C++试题Word文档下载推荐.docx
- 文档编号:17929464
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:20
- 大小:23.97KB
南理工C++试题Word文档下载推荐.docx
《南理工C++试题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《南理工C++试题Word文档下载推荐.docx(20页珍藏版)》请在冰豆网上搜索。
d)后n的值为。
A)1B)2C)3D)4
8.在循环语句的循环体中使用break和continue语句的作用分别是:
。
A)二语句都结束循环B)结束本次循环和结束循环
C)二语句都结束本次循环D)结束循环和结束本次循环
9.对于for(intCount=1;
Count<
5;
){;
}语句,其循环体的执行情况是:
A)死循环B)至少执行一次C)至少执行二次D)不执行
10.下列叙述中,正确的是。
A)类的构造函数不可以重载B)类的析构函数不可以重载
C)一个类不一定有构造函数D)一个类不一定有析构函数
11.对于C++的函数,不正确的叙述是:
。
A)函数的定义不能嵌套,但函数的调用可以嵌套
B)函数体内不可以再定义一个函数,但函数体内可以调用另一个函数。
C)函数体内不可以再定义一个函数,但函数体内可以函数自身。
D)函数的定义和调用均可以嵌套
12.下面的说法不正确的是。
A)函数在重载时其函数名应相同
B)C++中所有运算符都可以重载
C)基类中定义了虚函数ab(int,int),若在派生类中重新定义为ab(int),则在派生类中,ab为函数重载
D)对于基类中定义的运算符重载函数,在派生类中不一定可继承。
13.若有说明char*(*f)(int);
则以下是正确的。
A)f是一个返回值为字符型指针的函数
B)f是指向一个函数指针,该函数返回值为字符
C)f是指向一个函数指针,该函数返回值为字符型指针
D)语法错
14.以下正确的说明语句是。
A)int*b[]={1,3,5,7,9}
B)inta[5][5],*num[5]={&
a[0],&
a[1],&
a[2],&
a[3],&
a[4]};
C)inta[5][5]={1,3,5,7,9};
int*num[5]={a[0],a[1],a[2],a[3],a[4]};
D)inta[3][4],(*num)[4];
num[1]=&
a[1][3];
15.下面程序的运行结果是。
structstu{
inti,j;
floatEng,Math,CPP;
};
voidmain(void)
{chara[]={'
a'
'
b'
c'
d'
cout<
"
i="
<
sizeof(stu)+sizeof(a)<
\n'
;
A.i=4B.i=20C.i=24D.i=35
16.下面程序的运行结果是。
staticintc;
{
#ifc*3
inti=10.88;
cout<
"
i<
\n"
#else
intj=10000.99;
cout<
j="
j<
#endif
A.j=10000B.j=10.88C.j=10000.99D.j=10
17.下列叙述,正确的是。
A)派生类对象不可以赋给基类对象
B)派生类对象的地址不可以赋给基类的指针变量
C)基类对象不可以赋给派生类对象
D)通过指向基类的指针变量不可访问基类对象中的成员
18.下面的说法正确的是。
A)能由抽象类产生该抽象类的对象
B)在定义纯虚函数时,能定义函数的实现部分
C)若一个类没有定义析构函数,则系统不会自动为其产生一个缺省的析构函数
D)不可以把构造函数定义为虚函数
19.下面程序的输出是。
注:
sin(3.1415/2)=1;
sin(10)=-0.544021;
math.h>
intsin(intx)
{returnx;
voidmain(void)
{intx=10;
floaty=3.1415/2;
sin(x)<
‘\t’;
sin(y)<
A)101B)-0.5440211
C)-0.5440211.57075D)101.57075
20.执行以下程序时,调用构造函数(以下简称为构造)和完成拷贝的构造函数(以下简称为拷贝)的次数分别为是。
A)1次构造,1次拷贝B)1次构造,2次拷贝
C)2次构造,1次拷贝D)2次构造,2次拷贝
classTest{
intx,y;
public:
Test(inta,intb)
{x=a;
y=b;
调用了构造函数!
Test(Test&
t)
{x=t.x;
y=t.y;
调用了完成拷贝的构造函数!
voidShow()
{cout<
x="
x<
\t'
y="
y<
};
Testt1(1,1),t2(2,2);
t2=t1;
Testt3(t1);
二、填空(35分)
1.(3分)若x=0,y=1,z=2,则执行语句:
z=(++x)&
(y++);
执行完以上语句后,三个变量的值分别为:
x=1y=2z=1。
2.(2分)以下程序的输出结果是x=4.1,i=5
floatp(float&
x,int&
i)
{x=x+1.5;
i=i-x;
returnx;
}
voidmain(){
inti=10;
floatx=2.6,y;
y=p(x,i)-1;
x<
i="
i;
3.(2分)以下程序的输出结果是10。
intx=12;
do{
(x-=2)<
}while(!
(--x));
4.(4分)运行以下程序的输出结果是
c(cr)d(cr)e(cr)f(cr)g(cr)h(cr){注:
(cr)—表示回车键}。
{char*s="
abcdef"
charc;
while(c=*s++)
switch(c-'
2'
)
{
case0:
case1:
(char)(c+4);
case2:
(char)(c+4)<
’\n’;
break;
case3:
(char)(c+3);
default:
(char)(c+2)<
5.(3分)运行以下程序的输出结果是。
x=5y=10
x=10y=5。
voidswap(int&
p1,int&
p2)
{intp;
p=p1;
p1=p2;
p2=p;
voidmain(void)
intx=5,y=10;
swap(x,y);
6.(3分)以下程序的运行结果是-5,-12,-7。
voidsub(intx,inty,int&
z)
{z=y-x;
inta,b,c;
sub(10,5,a);
sub(7,a,b);
sub(a,b,c);
a<
b<
c<
7.(4分)下面程序的输出是。
B类就是B类
A类就是A类
classA{
public:
intx;
voidShow(){cout<
A类就是A类\n"
classB{
inty;
voidShow(){cout<
B类就是B类\n"
}};
classC:
publicA,publicB
{public:
{Cc1;
c1.B:
:
Show();
c1.A:
8.(4分)下面程序的输出是x=1000
A:
p2()
z=3000
C:
protected:
intx;
A(){x=1000;
virtualvoidp(){cout<
p2();
}
virtualvoidp2(){cout<
p2()"
publicA{
intz;
C(){z=3000;
voidp(){cout<
z="
z<
voidmain(void){
Cc;
Aa,*pa=&
a;
pa->
p();
pa=&
c;
9.(3分)以下程序的运行结果是OKOKOK
KOKOKO
OKOKOK
voidp1(chars[],inti)
{if(s[i]!
=0){
p1(s,i+1);
s[i];
voidp2(chars[],inti)
{cout<
if(s[i]!
=0)p2(s,i+1);
{charstr[]="
OKOKOK"
cout<
str<
p1(str,0);
cout<
p2(str,0);
10.(3分)以下程序的运行结果是A
B
0
~B
~A
classR{
private:
intLeft;
R(intL){Left=L;
A\n"
R(){Left=0;
B\n"
voidPrint(void){cout<
Left<
~R(){if(Left!
=0)cout<
~A\n"
elsecout<
~B\n"
Rr1(10),r2;
r1.Print;
r2.Print();
11.(4分)在当前目录中有文本文件file1.txt,文件内容为某班前10名的C++成绩,第一个10表示文件中后面有10个数,如下:
1096959493928887868685
执行下面的程序后,文件file2中的内容是90.2文件file2中的内容表示平均分数。
fstream.h>
{floatx,number,sum=0;
ifstreamf1("
file1.txt"
);
ofstreamf2("
file2.txt"
f1>
>
number;
while(f1>
x)sum+=x;
if(number!
=0)f2<
sum/number;
f1.close();
f2.close();
三、完善程序(答题请注明序号)
1.(6分)用for语句实现如下程序段相同的功能:
A.(2分)
intcount=0;
loop:
{;
count++;
if(count<
100)gotoloop
for(intcount=0;
count<
100;
count++){;
B.(2分)
intcount=-100;
while(count<
0){count++;
for(intcount=-100;
count<
0;
){count++;
C.(2分)
count=-10;
do
{count++;
}while(count<
10);
for(count=-10;
10;
2.(4分)下面的函数的功能是从数组a中找出最大值和最小值,将找出的最大值用return语句返回,而将求出的最小值通过参数min带回。
完善函数体。
floatFindMaxMin(floata[],intn,float*min)
{
floatmax;
//定义存放最大值的变量
max=*min=a[0];
//对最大值最小值初始化
for(inti=1;
i<
n;
i++)//利用循环依次查找最大最小值
{//插入相应的程序2分
if(a[i]>
max)max=a[i];
if(a[i]<
*min)*min=a[i];
returnmax;
//利用函数值返回最大值
main()
{
intn;
floata[200];
floatmax,*min=&
a[0];
请输入的n数值,n小于200"
cin>
//输入n个数,输出最大值及最小值
//插入相应的程序2分
for(inti=0;
i++)cin>
a[i];
最大值="
FindMaxMin(a,n,min)<
最小值="
*min<
3(4分)若一链表结点结构如下:
structNode{
intdata;
Node*next;
完善如下DeleteNode()函数;
函数的功能为:
若从链表的首指针h所指向的链表中找到一个结点的数据为x时,则从该链表中删除该结点。
指针h的值为0(NULL)时,表示链表为空。
允许x不在链表中。
Node*DeleteNode(Node*h,intx)
{Node*p,*q;
if(h==0)returnh;
if(h->
data==x)
{if(h->
data==x){中}
p=h;
h=h->
next;
deletep;
//插入相应的程序3分
else
{p=h->
q=h;
while(p&
p->
data!
=x)
{q=p;
p=p->
if(p!
=0){q->
next=p->
deletep;
//插入相应的程序3分
returnh;
四、(10分)根据题目要求写出程序
1.(4分)用两种不同的方法求出二个整数的最大公约数。
且求二个整数的最大公约数用函数来实现,该函数放在一个头文件中(如xxx.h)。
二个整数从键盘输入。
(1)写出二个求整数的最大公约数函数;
放在一个头文件中(如xxx.h)//2分
(2)写出主函数;
//2分
//xxx.h—头文件部分1分
intMaxCD1(inta,intb)//方法1
intmcd=a;
//mcd--最大公约数
if(mcd<
b)mcd=b;
intctl=1;
while(ctl)
{if((!
(a%mcd))&
(!
(b%mcd)))ctl=0;
if(ctl)mcd--;
returnmcd;
2.(6分)描述一个复数类Complex,私有数据为实部Real和虚部Imag
要求Complex类能提供如下操作(方法):
(1)有构造函数,缺省时实部Real和虚部Imag置为0;
//1分
(2)能修改并读取Real的值;
//1分
(3)能修改并读取Imag的值//1分
(4)重载运算符+=,完成两个复数的加法;
(5)重载运算符-=,完成两个复数的减法;
(6)重载运算符*=,完成两个复数的乘法;
classComplex{
doubleReal,Imag;
Complex(doublea=0,doubleb=0)
{Real=a;
Imag=b;
}//1分
voidSetReal(doublea){Real=a;
}//0.5分
voidSetImag(doubleb){Imag=b;
doubleGetReal(){returnReal;
doubleGetImag(){returnImag;
Complexoperator+=(Complex&
a)//1分
{
Complext;
t.Real=Real+a.Real;
t.Imag=Imag+a.Imag;
returnt;
Complexoperator-=(Complex&
t.Real=Real-a.Real;
t.Imag=Imag-a.Imag;
Complexoperator*=(Complex&
t.Real=Real*a.Real-Imag*a.Imag;
t.Imag=Imag*a.Real+Real*a.Imag;
1.C2.D3.D4.B5.C6.B
7.B8.D9.A10.B11.A12.C
13.C14.B15.A16.D17.B18.D
19.C20.B
二、填空(33分)
1.三个变量的值分别为:
2.(3分)x=4.1,i=14
4.(4分)运行以下程序的输出结果是:
cdefgh
5.(2分)运行以下程序的输出结果是
x=5y=10
7.(4分)B类就是B类
A类就是A类
8.(4分)下面程序的输出是x=1000
z=3000
p2()。
9.(5分)以下程序的运行结果是OKOKOK
OKOKOK。
10.(5分)以下程序的运行结果是A
~A
11.(2分)在当前目录中有文本文件f1.txt,文件内容为:
12345678910
执行下面的程序后,文件file2中的内容是90。
2。
平均分数
二、完善程序(每空1分,共15分,答题请注明序号)
//1.(5分)以下程序的功能是输入二个字符串,把这两个字符串拼成一个新的字符串,然后输出这三个字符串。
完善程序。
char*stringcat(char*to,char*from)//实现字符串拼接
char*p=to;
//记住指针to的开始位置
while(*to++);
//调整指针to指到表示字符串结束位置的下//一个字符位置
to--;
//调整指针to指到表示字符串结束位置
while(*to++=*from++);
//将from指针所指的内容赋给to指针所指//的单元;
from指针加1,指向下一个字符//位置;
to指针加1,指向存放下一个字符//的单元位置;
直到from指针指向空
//(NULL)位置
voidmain(void)
chars1[100],s2[1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 理工 C+ 试题