C++程序设计复习题及参考答案Word文档下载推荐.docx
- 文档编号:21251573
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:27
- 大小:28.95KB
C++程序设计复习题及参考答案Word文档下载推荐.docx
《C++程序设计复习题及参考答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C++程序设计复习题及参考答案Word文档下载推荐.docx(27页珍藏版)》请在冰豆网上搜索。
10.
在下面的函数声明中,存在着语法错误的是[D]
A.BC(inta,int);
B.BC(int,int);
C.BC(int,int=5);
D.BC(intx;
inty);
11.
将两个字符串连接起来组成一个字符串时,选用的函数是[C]
A.strlen()B.strcpy()C.strcat()D.strcmp()
12.
在程序中,预处理命令开头的字符都是[B]
A.*B.#C.&
D.@
13.若已知“charstr[20];
”,有语句“cin>
str;
”,当输入为:
Thisisaprogram时,所得
的结果是str=
[B]
A.ThisisaprogramB.This
C.ThisisD.hisisa
14.在下面的do循环语句中,其循环体被执行的次数为[A]
inti=0;
do{i++;
}while(i*i<
10);
A.4B.3C.5D.2
15.在下面的一维数组定义中,有语法错误的语句是[C]
A.inta[]={1,2,3};
B.inta[10]={0};
C.inta[];
D.inta[5];
16.下面的保留字中,不能作为函数的返回类型[C]
A.voidB.intC.newD.long
17.下面的函数声明中,“voidBC(inta,intb);
”的重载函数是[B]
A.intBC(intx,inty);
B.voidBC(inta,charb);
C.floatBC(inta,intb,intc=0);
D.intBC(inta,intb=0);
18.假定AB为一个类,则该类的复制构造函数的声明语句为[D]
A.AB&
(ABx);
B.AB(ABx);
C.AB(AB*x);
D.AB(AB&
);
19.C++程序的基本功能模块为[D]
A.表达式B.标识符C.语句D.函数
20.函数模板:
“template<
classT>
Tadd(Tx,Ty){returnx+y;
}”,下列对add函数的调
用不正确的是[C]
A.add<
(1,2)B.add<
int>
(1,2)C.add(1.0,2)D.add(1.0,2.0)
21.在下面的一维数组定义中,有语法错误的是[C]
A.inta[]={1,2,3}B.inta[10]={0}
C.inta[]D.inta[5]
22.C++语言中的每条简单语句是以哪个符号作为结束符的[A]
A.分号B.逗号C.空格D.换行符
23.设“intf(int);
”和“intg(int);
”是函数f和g的原形,以下将f作为语句调用的是[B]
A.g(f(3))B.f(g(3))C.g(f(3)+2)D.p=f(g(3)+1)
24.下面对构造函数和析构函数正确定义的项是[A]
A.X:
:
X(参数),X:
~X()B.voidX:
X(),voidX:
~X()
C.X:
X(参数),X:
~X(参数)D.voidX:
X(参数),voidX:
~X(参数)
25.在下列double型常量表示中,错误的是[A]
A.E15B.35C.3E5D.3E-5
26.下列各运算符中,优先级最低的是[A]
A.?
:
B.|C.||D.!
=
27.下列定义中,定义指向数组的指针p的是[B]
A.int*p[5]B.int(*p)[5]C.(int*)p[5]D.int*p[];
28.设有以下定义:
voidf1(int*m,long&
n);
inta;
longb;
则以下调用合法的是[B]
A.f1(a,b)B.f1(&
a,b)C.f1(a,&
b)D.f1(&
a,&
b)
29.下列各类变量中,不是局部变量的是[D]
A.registerintxB.voidf(intw)
C.intz;
D.staticinty;
(定义在函数外)
30.已知p是一个指向类A数据成员m的指针,A1是类A的一个对象。
如果要给m赋值为5,
()正确的语句是[C]
A.A1.p=5B.A1->
p=5C.A.*p=5;
D.*A1.p=5;
31.已知i=5,j=0,下列各式中运算结果为j!
=6的表达式是[B]
A.j=i+(++j)B.j=j+i++C.j=++i+jD.j=j+++i
32.假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址大多少
个字节[C]
A.1B.2C.4D.8
33.在下面的字符数组定义中,有语法错误的语句是[D]
A.chara[20]="
abcdefg"
;
B.chara[]="
x+y=55."
C.chara[15]={'
1'
'
2'
};
D.chara[10]='
5'
34.若用数组名作为函数调用的实参,传递给形参的是[A]
A.数组的首地址B.数组中第一个元素的值
C.数组全部元素的值D.数组元素的个数
35.假定AB为一个类,则执行“ABa(4),b[5],*p[2];
”语句时,自动调用该类构造函数的次数为[A]
A.6B.7C.9D.11
36.当使用fstream流类定义一个流对象,并打开一个磁盘文件时,文件的隐含打开方式为[D]
A.ios:
inB.ios:
out
C.ios:
in|ios:
outD.没有
二、填空题:
1.若a是一个字符数组,则使用输入输出流对象cout向屏幕输出数组a中所存字符串的语句为cout<
<
a;
。
2.若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为(char*)p____________。
3.在C++语言中,一个函数由函数头和函数体____________组成。
4.假定p是一个指针,则(*p)++运算首先访问*p__________,然后使p的值增1。
5.假定对二维数组a[3][4]进行初始化的数据为{{2,5,6},{2,8},{7}},则a[1][1]被初始化为8______。
6.设px指向一个类的动态分配的对象,则执行“deletepx;
”语句时,将自动调用该类的析构函数_______。
7.已知'
A'
~'
Z'
的ASCII码为65~90,当执行以下语句序列后:
charch=14*4+12;
cout<
ch;
得到的输出结果为D____________。
8.表达式x=x+1表示成先自增表达式为++x。
9.一个指针指向一个Data类对象,它保存着该对象的地址___,相应的指针类型为Data类。
10.若do循环的“尾”为“while(++i<
10)”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被重复执行10________次后正常结束。
11.假定用户没有给一个名为AB的类定义构造函数,则系统为其隐含定义的构造函数为_____AB(){}_______。
12.当在程序中执行到_break语句时,就立即结束本层循环类语句或switch语句的执行。
13.C++语言中每条复合语句以{(或左花括号)__________作为开始符。
14.strlen("
apple"
)的值为5__________。
15.执行switch语句时,在进行作为条件的表达式求值后,将从某个匹配的case标号位置起向下执行,当碰到下一个标号位置时____不停止____________执行。
16.假定p所指对象的值为25,p+1所指对象的值为46,则*p++的值为_25_________。
17.假定要动态分配一个类型为Worker的具有n个元素的数组,并由r指向这个动态数组,则使用的语句为Worker*r=_newWorker[n];
18.设有如下程序结构:
classBox
{…};
voidmain()
{BoxA,B,C;
}
该程序运行时,分别调用构造函数和析构函数__3______次。
19.执行以下语句后:
cout<
char('
+4);
得到的输出结果为___E_______。
20.一个二维字符数组a[10][20]能够存储10个字符串,每个字符串的字符长度至多为19_______。
21.关系表达式x+y>
5的相反表达式为_________x+y<
=5。
22.假设在程序中a、b、c均被定义成整型,所赋值都大于1,则能正确表示数学式
的表达式是1.0/a/b/c或1.0/(a*b*c)(不使用强制类型转换)。
23.假定a是一个一维数组,则a[i]的指针访问方式为_______*(a+i)_。
24.对一个类中的数据成员的初始化可以通过构造函数中的初始化表实现,也可以通过构造函数中的_________函数体实现。
25.若需要定义一个标识符常量,并且使C++能够进行类型检查,则应在定义语句的开始使用保留字_______const。
26.每个字符指针变量占用内存______4个字节。
27.利用“对象名.成员变量”形式访问的对象成员仅限于被声明为_____public的成员。
28.对于在所有函数定义之外定义的变量,若没有被初始化则系统隐含对它赋予的初值为___________0。
29.在C++程序中包含一个头文件或程序文件的预编译命令为________#include。
30.假定一维数组的定义为“inta[8];
”,则该数组所含元素的个数为_8______。
31.当使用________void留字作为函数类型时,该函数不返回任何值。
32.表达式x=x+y表示成复合赋值表达式为____x+=y。
33.当程序中执行到______continue语句时,将结束所在循环语句中循环体的一次执行。
34.对一个二维字符数组a进行初始化的数据为{”123”,”456”,”789”},则a[1]元素对应的字符串为____”456”。
35.若要把一个字符指针p转换为整型指针,则采用的强制转换表达式为______(int*)p。
36.类test的析构函数名是_______~test()。
三、判断题:
1.C++中,以分号分隔的语句单元称为语句。
[√]
2.C++规定else可与在其之前未配对的任意if配对。
[]
3.若S表示一条C++语句,while
(1)S必定是无限循环。
[]
4.如果(x==y),则(&
x==&
y)。
5.在成员函数中访问对象的数据成员时,可以直接用数据成员名,而在友元函数中访问对象
的数据成员时,必须指明是哪个对象的数据成员。
[√]
6.控制格式输入输出的操作子oct不是设置域宽的。
7.在C++中,0127是一个合法的整数,最高位的0实际上是不必要,其值就是127。
8.如果x是一个整型变量,则语句“int*p=newint[x];
”是正确的。
[√]
9.若函数声明语句“double*f();
”,则该函数的返回值为实型指针。
[√]
10.引进虚基类的真正目的是为了解决二义性问题。
11.若类A是类B的友元类,且类B是类C的友元类,则类A也是类C的友元类。
12.对于ofstream类对象file,feof成员函数的返回值为真表示打开文件失败。
13.变量在使用之前必须声明(或定义)。
14.'
\n'
、'
\x6A'
\101'
均是C++的字符常量。
15.逻辑运算符都是双目运算符,且优先级相同。
[]
16.如果(x==y),则(*x==*y)。
17.函数体内声明的静态变量,至多只会被初始化一次。
18.多继承情况下,派生类的构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序,
而与派生类构造函数中所定义的成员初始化列表的各项顺序无关。
19.C++提供了3种基本控制结构:
顺序结构、分支结构和循环结构。
20字符串型数据是指用'
'
括起来的一串字符。
[×
]
21.引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。
22一个数组中的所有元素具有相同的数据类型。
23.constchar*p说明了p是指向字符串的常量指针。
24.模板定义中的类型参数可以用作局部变量、函数参数、函数返回值、数据成员等的数据类型。
[√]
25.C++中变量要求严格区分大小写。
26.表达式9!
=10的值为1。
27.语句“charc='
c'
charp=&
c;
”是错误的。
28.在一个被调用函数中,一个return语句可返回多个值给调用函数。
29.静态成员变量是整个类的所有对象共用的。
30.write函数只能按规定向文件写入所指定的字符数。
31.每一个C++程序可以有多个源文件,但是只能有一个main函数。
32.在说明语句“inta(15),&
b=a,*p=&
”中,b的值与*p的值是相等的。
[√]
33.在不同类型操作数组成的表达式中,其表达式的类型一定是最高类型double型。
34.for循环中,循环变量的作用域是该循环的循环体内。
35.在传值调用中,要求实参与形参的类型完全一致并且个数相等。
36.类中所提供的成员函数可以直接访问私有成员。
[√]
四、写出程序的运行结果:
1.
#include<
iostream.h>
voidmain()
{
inta,b,c,d(5);
c=2,c+=10;
a=b=10;
a*=2;
b/=2;
c%=2;
a<
"
"
b<
c<
endl;
}
运行结果:
20,5,0
2.
charflag='
;
switch(flag)
{
case'
a'
:
cout<
1"
endl;
b'
2"
break;
cout<
3"
default:
4"
3
4
3.
voidmain()
staticintb[][3]={{1,2,3},{4},{5,6}};
b[0][2]=12,b[1][2]=18;
**b<
\t"
**(b+1)<
*(*(b+1)+2)<
\n"
b[0][2]+b[1][2]+b[2][2]<
14418
30
4.
#include<
{
intx=5,y=8,z=9,v;
if(x>
y)v=x;
elsev=y;
if(v<
z)v=z;
v="
v<
v=9
5.
inti(0);
while(++i)
if(i==10)break;
if(i%3!
=1)continue;
cout<
i<
1
7
6.
voidff(intx)
{cout<
ff(int):
"
x<
voidff(doublex)
ff(double):
floata(88.18);
ff(a);
charb('
ff(b);
ff(double):
88.18
97。
7.
for(inti=1;
i<
i++)
for(intj=1;
j<
=5-i;
j++)
cout<
for(j=1;
=2*i-1;
#"
cout<
#
###
#####
#######
#########
8.
inta[6]={1,2,3,4,5};
voidfun(intb[],intn);
intm=6;
fun(a,m);
a[5]<
}
voidfun(intb[],intn)
for(intI=0;
I<
n-1;
I++)
b[5]+=b[I];
15
9.
classA
public:
A(){cout<
~A(){cout<
};
classB:
publicA
B(){cout<
~B(){cout<
Bb;
1342
intf(intx)
inty;
if(x<
=-1)
y=x-1;
if(x>
-1&
x<
=2)
y=2*x;
if(2<
=10)
y=x*(x+2);
returny;
f(5)<
f(-5)<
35-6
constintn=5;
inta[n][n]={{3,2,4,1,5},
{8,7,2,5,6},
{6,9,1,4,3},
{5,5,3,6,2},
{2,8,1,8,6}};
ints=0;
for(inti=0;
n;
i++)
s+=a[i][i]+a[i][n-i-1];
if(n%2==1)
s-=a[n/2][n/2];
s;
40
classs
inti,j;
voidsetij(inta,intb){i=a,j=b;
~s(){cout<
析构.."
intGetMul(){returni*j;
s*p;
p=news[3];
for(intj=0;
j<
3;
j++)
p[j].setij(j,j);
//j的平方
for(intk=0;
k<
k++)
积["
]="
p[k].GetMul()<
delete[]p;
积[0]=0
积[1]=1
积[2]=4
析构..2
析构..1
析构..0
13.
inta=10,*q;
if(q==NULL)
####"
else
q=&
*q<
10
14.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 复习题 参考答案