C++程序设计复习题及参考答案.docx

上传人:b****7 文档编号:10982516 上传时间:2023-02-24 格式:DOCX 页数:30 大小:28.02KB
下载 相关 举报
C++程序设计复习题及参考答案.docx_第1页
第1页 / 共30页
C++程序设计复习题及参考答案.docx_第2页
第2页 / 共30页
C++程序设计复习题及参考答案.docx_第3页
第3页 / 共30页
C++程序设计复习题及参考答案.docx_第4页
第4页 / 共30页
C++程序设计复习题及参考答案.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

C++程序设计复习题及参考答案.docx

《C++程序设计复习题及参考答案.docx》由会员分享,可在线阅读,更多相关《C++程序设计复习题及参考答案.docx(30页珍藏版)》请在冰豆网上搜索。

C++程序设计复习题及参考答案.docx

C++程序设计复习题及参考答案

《C++程序设计》课程复习资料

一、单项选择题:

1.下列字符串中可以用作C++标识符的是[]

A.gotoB.StudentC.123D.k-ld

2.定义变量inta=6,则a++的值是[]

A.7B.6C.5D.4

3.已知字母A的ASCII码为65,则表示字符常量A错误的是[]

A.'\101'B.'\x41'C.65D.“A”

4.结构化程序由三种基本结构组成,不包括[]

A.顺序结构B.选择结构C.控制结构D.循环结构

5.己知有定义:

constintD5;

inti=1;

doublef=0.32;

charc=15;

则下列选项错误的是[]

A.++i;B.D--;C.c++;D.--f;

6.若有定义为“int*r=newint[10];”,则释放指针所指存空间的操作是[]

A.delete[]r;B.delete*rC.deleter;D.deleter[];

7.下列哪个是C++语言的不正确的标识符?

[]

A._No1B.Ab1C.bgcD.int

8.下列哪个是C++语言的合法的字符常量?

[]

A.”\0”B.'054'C.'\x89'D.'\092'

9.定义整型变量x,y,z并赋初始值6的正确语句是[]

A.intx=y=z=6;B.intx=6,y=6,z=6;C.x=y=z=6;D.intx,y,z=6;

10.用C++语言编写的代码程序[]

A.可立即执行B.是一个源程序

C.经过编译即可执行D.经过解释才能执行

11.将两个字符串连接起来组成一个字符串时,选用的函数是[]

A.strlen()B.strcpy()C.strcat()D.strcmp()

12.在程序中,预处理命令开头的字符都是[]

A.*B.#C.&D.@

13.在C++语言中,表示一条语句结束的符号是[]

A.“#”B.“;”C.“}”D.“//”

14.在下面的循环语句中循环体执行的次数为[]

for(inti=0;i

if(i>n/2)break;

A.n/2B.n/2+1C.n/2-1D.n-1

15.在下面的一维数组定义中,有语法错误的语句是[]

A.inta[]={1,2,3};B.inta[10]={0};

C.inta[];D.inta[5];

16.下面的保留字中,不能作为函数的返回类型[]

A.voidB.intC.newD.long

17.下面的函数声明中,“voidBC(inta,intb);”的重载函数是[]

A.intBC(intx,inty);B.voidBC(inta,charb);

C.floatBC(inta,intb,intc=0);D.intBC(inta,intb=0);

18.假定AB为一个类,则该类的复制构造函数的声明语句为[]

A.AB&(ABx);B.AB(ABx);C.AB(AB*x);D.AB(AB&);

19.表达式(1,2,3,4)的结果是[]

A.1B.2C.3D.4

20.在函数中如果不说明变量的存储类型,则默认的存储类型是[]

A.autoB.staticC.externD.register

21.下面字符序列中,合法的C++常量是[]

A.078B.5LC.9e7.5D.'AB'

22.inta声明的自动型变量a在没有赋值的情况下,其值为[]

A.0B.-1C.1D.随机数

23.设“intf(int);”和“intg(int);”是函数f和g的原形,以下将f作为语句调用的是[]

A.g(f(3))B.f(g(3))C.g(f(3)+2)D.p=f(g(3)+1)

24.下面对构造函数和析构函数正确定义的项是[]

A.X:

:

X(参数),X:

:

~X()B.voidX:

:

X(),voidX:

:

~X()

C.X:

:

X(参数),X:

:

~X(参数)D.voidX:

:

X(参数),voidX:

:

~X(参数)

25.变量生存期是指[]

A.变量定义B.变量在存中分配存储单元到被释放期间

C.程序的运行D.可执行代码的生存期

26.以下选项中C++表达式不能正确表示的数学关系a<x≤b为[]

A.a

C.!

(a>=x)&&!

(x>b)D.a

27.下列定义中,定义指向数组的指针p的是[]

A.int*p[5]B.int(*p)[5]C.(int*)p[5]D.int*p[];

28.设有以下定义:

voidf1(int*m,long&n);

inta;

longb;

则以下调用合法的是[]

A.f1(a,b)B.f1(&a,b)C.f1(a,&b)D.f1(&a,&b)

29.下列各类变量中,不是局部变量的是[]

A.registerintx;B.voidf(intw)

C.intz;D.staticinty;(定义在函数外)

30.已知p是一个指向类A数据成员m的指针,A1是类A的一个对象。

如果要给m赋值为5,

()正确的语句。

[]

A.A1.p=5B.A1->p=5C.A.*p=5D.*A1.p=5

31.以下选项中,决定函数的返回值的类型是[]

A.调用该函数的主调函数类型B.return语句中的表达式类型

C.定义函数时所指定的返回值类型D.调用函数时临时决定

32.下面for语句的循环次数为[]

for(inti=0,x=0;!

x&&i<=5;i++);

A.无穷次B.5C.6D.7

33.在下面的字符数组定义中,有语法错误的语句是[]

A.chara[20]="abcdefg"B.chara[]="x+y=55"

C.chara[15]={'1','2'}D.chara[10]='5'

34.若用数组名作为函数调用的实参,传递给形参的是[]

A.数组的首地址B.数组中第一个元素的值

C.数组全部元素的值D.数组元素的个数

35.假定AB为一个类,则执行“ABa(4),b[5],*p[2];”语句时,自动调用该类构造函数的次数为[]

A.6B.7C.9D.11

36.当使用fstream流类定义一个流对象,并打开一个磁盘文件时,文件的隐含打开方式为[]

A.ios:

:

inB.ios:

:

outC.ios:

:

in|ios:

:

outD.没有

二、填空题:

1.若a是一个字符数组,则使用输入输出流对象cout向屏幕输出数组a中所存字符串的语句为_________。

2.当一个对象定义时,C++编译系统自动调用__________函数建立该对象并进行初始化。

3.C++语言的参数传递机制包括值传递和____________传递两种。

4.假定p是一个指针,则(*p)++运算首先访问__________,然后使p的值增1。

5.假定对二维数组a[3][4]进行初始化的数据为{{2,5,6},{2,8},{7}},则a[1][1]被初始化为_______。

6.设px指向一个类的动态分配的对象,则执行“deletepx;”语句时,将自动调用该类的_______________。

7.变量的基本类型有、实型、字符型和枚举型。

8.语法的三种基本结构为顺序结构、选择结构和结构。

9.一个指针指向一个Data类对象,它保存着该对象的__________,相应的指针类型为Data类。

10.若do循环的“尾”为“while(++i<10)”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被重复执行__________次后正常结束。

11.假定用户没有给一个名为AB的类定义构造函数,则系统为其隐含定义的构造函数为________________。

12.当在程序中执行到__________________语句时,就立即结束本层循环类语句或switch语句的执行。

13.字符和字符串常数的定界符分别为_________和双引号(")。

14.应用程序hello.cpp中只有一个函数,这个函数的名称是__________。

15.在switch语句中,每个语句标号所含关键字case后面的表达式必须是__________表达式。

16.假定p所指对象的值为25,p+1所指对象的值为46,则*p++的值为__________。

17.假定要动态分配一个类型为Worker的具有n个元素的数组,并由r指向这个动态数组,则使用的语句为Worker*r=__________________。

18.设有如下程序结构:

classBox

{…};

voidmain()

{BoxA,B,C;}

该程序运行时,分别调用构造函数和析构函数________次。

19.若有语句inta=6;,则计算表达式a+=a-=a*a后,a的值为__________。

20.在进行函数调用时,将把实参的__________传递给值参数,把实参数的地址传递给引用参数。

21.关系表达式x+y>5的相反表达式为__________________。

22.假设在程序中a、b、c均被定义成整型,所赋值都大于1,则能正确表示数学式

的表达式是__________________(不使用强制类型转换)。

23.假定a是一个一维数组,则a[i]的指针访问方式为__________________。

24.对一个类中的数据成员的初始化可以通过构造函数中的初始化表实现,也可以通过构造函数中的__________________实现。

25.C++中的标识符只能由字母、数字和__________组成。

26.C++语句cout<<__________<<120;可以用8进制数表示(输出)120。

27.利用“对象名.成员变量”形式访问的对象成员仅限于被声明为_____________的成员。

28.C++在调用一个函数的过程中,可以直接或间接地调用该函数本身,这种调用称为__________调用。

29.在C++程序中包含一个头文件或程序文件的预编译命令为________________。

30.假定一维数组的定义为“inta[8];”,则该数组所含元素的个数为________。

31.十六进制常量前面应该加__________为前缀。

32.变量一般需要先赋初值再参与运算,__________变量没有赋初值时,将由系统自动置为0。

33.当程序中执行到__________________语句时,将结束所在循环语句中循环体的一次执行。

34.C++中规定,数组元素的下标从_________开始。

35.假定有定义int*p,则指向p变量的指针变量pp定义语句为________________。

36.类test的析构函数名是________________。

三、判断题:

1.在C++中,自减运算符“--”可以用于变量,也可以用于常量。

[]

2.switch语句中必须有break语句,否则无法退出switch语句。

[]

3.若S表示一条C++语句,while

(1)S必定是无限循环。

[]

4.若有说明:

int*p1,*p2,m=3,n;则p1=&m;p2=p1;是正确的赋值语句。

[]

5.在C++语言中,类中的成员函数能存取类中的私有数据。

[]

6.控制格式输入输出的操作子oct不是设置域宽的。

[]

7.在C++中,0127是一个合法的整数,最高位的0实际上是不必要,其值就是127。

[]

8.如果x是一个整型变量,则语句“int*p=newint[x];”是正确的。

[]

9.数组是若干相同类型的数据的集合。

[]

10.在C++语言中,可以使用new运算符创建的对象或对象数组,可以使用运算符delete删除之。

[]

11.若类A是类B的友元类,且类B是类C的友元类,则类A也是类C的友元类。

[]

12.对于ofstream类对象file,feof成员函数的返回值为真表示打开文件失败。

[]

13.在switch语句中,switch后面的表达式可以为任意类型。

[]

14.'\n'、'\x6A'、'\101'均是C++的字符常量。

[]

15.一个变量的地址就称为该变量的“指针”。

[]

16.如果(x==y),则(*x==*y)。

[]

17.函数体声明的静态变量,至多只会被初始化一次。

[]

18.构造函数和析构函数都不能重载。

[]

19.在C++语言中,while语句的循环体有可能一遍都不执行,而do—while语句的循环体至少执行一遍。

[]

20.在C++的命名标识符中,大小写字母是不加区分的。

[]

21.引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。

[]

22.在C++中,二维数组中元素排列的顺序是按行存放的,即在存中先顺序存放第一行的元素,再存放第二行的元素。

[]

23.constchar*p说明了p是指向字符串的常量指针。

[]

24.说明或定义对象时,类名前面不需要加class关键字。

[]

25.在C++中,空语句表示什么都不做,因此毫无意义。

[]

26.预处理命令是在进行编译前执行的,然后再进行正常编译。

[]

27.语句“charc='c';charp=&c;”是错误的。

[]

28.在一个被调用函数中,一个return语句可返回多个值给调用函数。

[]

29.静态成员变量是整个类的所有对象共用的。

[]

30.write函数只能按规定向文件写入所指定的字符数。

[]

31.C++中,任何一个表达式加上一个分号就构成一个语句。

[]

32.在说明语句“inta(15),&b=a,*p=&a;”中,b的值与*p的值是相等的。

[]

33.在C++中,函数声明时要用函数原型,即定义函数时的函数头部分。

[]

34.for循环中,循环变量的作用域是该循环的循环体。

[]

35.在传值调用中,要参与形参的类型完全一致并且个数相等。

[]

36.使用class定义的类成员默认的访问权限是私有的(private)。

[]

37.在C++中,条件运算符的结合方向为从左到右。

[]

四、写出程序的运行结果:

1.

#include

voidmain()

{

inta=10,b=15;

{

a*=3;

intb=a+20;

cout<

}

cout<

}

运行结果:

2.

#include

intSD(inta,intb,charop)

{

switch(op)

{

case'+':

returna+b;

case'-':

returna-b;

}

}

voidmain()

{

intx=20,y=8;

cout<

}

运行结果:

3.

#include

voidmain()

{

staticintb[][3]={{1,2,3},{4},{5,6}};

b[0][2]=12,b[1][2]=18;

cout<<**b<<"\t"<<**(b+1)<<"\t"<<**(b+1)<<"\t"<<*(*(b+1)+2)<<"\n";

cout<

}

运行结果:

4.

#include

voidmain()

{

charch;

cin>>ch;

switch(ch)

{

case'A':

case'a':

cout<<"1"<<'';break;

case'B':

case'b':

cout<<"2"<<'';break;

case'C':

case'c':

cout<<"3"<<'';break;

default:

cout<<"bad!

";break;

}

}

以上程序运行时,分别输入Acb,则

运行结果:

5.

#include

voidmain()

{

ints1=0,s2=1;

for(inti=2;i<5;i++)

{

s1+=i;

s2*=i;

}

cout<

}

运行结果:

6.

#include

voidff(intx)

{cout<<"ff(int):

"<

voidff(doublex)

{cout<<"ff(double):

"<

voidmain()

{

floata(88.18);

ff(a);

charb('a');

ff(b);

}

运行结果:

7.

#include

voidmain()

{

ints=0;

for(inti=1;i<7;i+=2)

s+=i*i;

cout<<"s="<

}

运行结果:

 

8.

#include

voidmain()

{

inta[9]={3,5,7,9,11,13,15,17,25};

int*p=a;

for(inti=0;i<9;i++)

if((i+1)%3==0)

cout<<*(p+i)<<'';

cout<

}

运行结果:

9.

#include

classA

{

public:

A(){cout<<"1";}

~A(){cout<<"2";}

};

classB:

publicA

{

public:

B(){cout<<"3";}

~B(){cout<<"4";}

};

voidmain()

{

Bb;

}

运行结果:

 

10.

#include

#include

intSC(inta,intb,intc)

{

if(a>b)a=b;

if(a>c)a=c;

returna;

}

voidmain()

{

intx,y,z;

x=5,y=15,z=25;

cout<

}

运行结果:

11.

#include

constintn=5;

voidmain()

{

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;i

s+=a[i][i]+a[i][n-i-1];

if(n%2==1)

s-=a[n/2][n/2];

cout<

}

运行结果:

12.

#include

classs

{

inti,j;

public:

voidsetij(inta,intb){i=a,j=b;}

intGetMul(){returni*j;}

};

voidmain()

{

s*p;

p=news[3];

for(intj=0;j<3;j++)

p[j].setij(j,j);//j的平方

for(intk=0;k<3;k+=2)

cout<

delete[]p;

}

运行结果:

13.

#include

intc;

voidf1(intx,int*sum)

{

staticinty;

x++;y++;c=c+y;

*sum=(x+y)/c;

}

voidmain()

{

intb=100;

f1(1,&b);

cout<

f1(2,&b);

cout<

}

运行结果:

14.

#include

voidmain()

{

inti,*d=newint[5];

for(i=0;i<5;i++)

{

d[i]=2*i+1;

cout<

}

delete[]d;

}

运行结果:

15.

#include

classAB

{

inta;

public:

AB(intaa=0){a=aa;}

~AB(){cout<

};

classB:

publicAB

{

intb;

public:

B(intaa=0,intbb=0):

AB(aa){b=bb;}

~B(){cout<

};

voidmain()

{

Bx(5),y(6,7);

}

运行结果:

 

16.

#include

intLB(int*a,intn)

{

ints=1;

for(inti=0;i

{

s*=*a;

a++;

}

returns;

}

voidmain()

{

inta[5]={1,2,3,4,5};

cout<

}

运行结果:

17.

#include

intf(inta)

{

intb=0;

staticintc=3;

b++,c++;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1