C++习题集.docx

上传人:b****5 文档编号:4918195 上传时间:2022-12-11 格式:DOCX 页数:30 大小:48.15KB
下载 相关 举报
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++习题集

9.编写完成下列任务的C++语句:

A.将变量sum和x声明为int类型。

B.将变量x初始化为1。

C.将变量sum初始化为0。

D.将x加进sum中,并将结果赋给sum。

E.打印"Thesumis:

"加上sum的值。

10.将练习9的语句合并为一个程序计算和打印从1到10的整数的和。

利用while结构在计算和递增语句之间循环,循环在x为11时终止。

11.确定计算完成后每个变量的值。

假设每个语句开始执行时,所有变量为整数值5。

A.product*=x++;

B.quotient/=++x;

12.编写一条C++语句:

A.用cin和>>输入整型变量x。

B.用cin和>>输入整型变量y。

C.将整型变量i初始化为1。

D.将整型变量power初始化为1。

E.将变量power乘以x并将结果赋给power。

F.将变量i加1。

G.测试i是否小于或等于y。

H.用cout和<<输出整型变量power。

13.编写一个C++程序,用练习12的语句计算x的y次方。

程序采用while重复控制结构。

14.判断下列语句的对错,并纠正其中的错误。

A.while(c<=5){

procuct*=c;

++c

B.cin<

C.if(gwnder==1)

cout<<"Woman"<

else

cout<<"Man"<

15.下列while结构错在哪里:

while(z>=0)

sun+=z;

16.判断下列各题是否正确。

如果不正确,请说明原因。

A.switch选择结构中必须有default。

B.awitch选择结构的default中必须有break语句才能正确退出这个结构。

C.如果表达式x>y为true或ay&&a

D.如果至少有一个操作数为true,则包含||运算符的表达式为true。

17.编写一条或一组C++语句,完成下列任务:

A.用for结构求1到99的奇数和。

假设已经声明整型变量sum和count。

B.在域宽为15个字符、精度分别为1、2、3的输出域中打印数值333.546372。

在同行打印每个值,在输出域中左对齐每个值。

C.用pow函数计算2.5的3次方。

在域宽为10个字符、精度分别为2的输出域中打印计算结果。

D.用while循环的计数器变量x打印1到10的整数。

假设变量x已经声明,但还没有初始化。

每行只打印5个整数。

提示:

用算数x%5。

数值为0时,打印换行符,否则打印制表符。

18.寻找下列代码中的错误并说明如何纠正:

A.x=1;

while(x<=10);

x++;

}

B.for(y=.1;y!

=1.0;y+=.1)

cout<

C.switch(n){

case1:

cout<<"Thenumberis1"<

case2:

cout<<"Thenumberis2"<

break;

default:

cout<<"Thenumberisnot1or2"<

break;

}

D.下列代码打印1到10的值:

n=1;

while(n<10)

cout<

19.填空:

A.C++中的程序组件为_____和_______。

B.只在函数中定义和访问的变量称为_______。

C.被调函数中的_______语句将表达式返回调用函数。

D.函数首部用关键字_______表示函数不返回值或函数不包含参数。

E.标识符的_______是程序中可以使用该标识符的部分。

F.将控制从被调用函数返回调用者的三种方法是______、______和______。

G._______使编译器可以检查传入函数的参数个数、类型和顺序。

H._______函数用于生产随机数。

I._______函数设置将程序随机化的随机数种子。

J.块和函数之外宿命变量是_______变量。

K.要让函数中的局部变量在函数调用之间保持其数值,则要用存储类说明符______声明。

L.标识符的四种作用域是_____、______、______和______。

M.直接或间接矫勇自己的函数是_______函数。

N.递归函数通常有两个组件:

一个提供测试_______情况以终止递归的方法;另一将问题表示为比原问题简化的问题。

O.在C++中,可以有多个同名而处理不同参数类型或个数的函数,称为函数_______。

P._______可以在局部变量范围中访问与局部变量同名的全局变量。

Q._______限定符声明只读变量。

R.函数_______使一个函数可以定义成许多不同数据类型完成同一个任务。

20.对于如下程序,指出下列元素的作用域(函数范围、文件范围、块范围或函数原型范围):

A.main中的变量x。

B.cube中的变量y。

C.函数cube。

D.函数main。

E.cube的函数原型。

F.cube函数原型中的标识符y。

1//ex03_02.cpp

2#include

3

4intcube(inty);

5

6intmain()

7{

8intx;

9

10for(x=1;x<=10;x++)

11cout<

12

13return0;

14}

15

16intcube(inty)

17{

18returny*y*y;

19}

21.指定下列函数的函数首部:

A.函数hypotenuse取两个双精度浮点数参数side1和side2,返回一个双精度浮点数结果。

B.函数smallest取三个整数x、y、z并返回一个整数。

C.函数instructions不取参数也不返回数值(注意:

这种函数通常用于想用户显示指令)。

D.函数intToFloat取整数参数number,返回浮点数结果。

22.编写下列声明:

A.整数count,放在寄存器中,将count初始化为0。

B.浮点变量lastVal,在所定义函数调用之间保持其数值。

C.外部变量number,其

23.寻找下列程序中的错误并说明如何纠正:

A.intg(void){

cout<<"Insidefunctiong"<

inth(void){

cout<<"Insidefunctionh"<

}

}

B.intsum(intx,inty){

intresult;

result=x+y;

}

C.intsum(intn){

if(n==0)

return0;

else

n+sum(n-1);

}

D.voidf(flosta);{

floata;

cout<

}

E.voidproduct(void){

inta,b,c,result;

cout<<"Enterthreeintagers:

";

cin>>a>>b>>c;

result=a*b*c;

cout<<"Resultis"<

returnresult;

}

24.编写一个完整的C++程序,用内联函数sphereVolume提示用户输入球半径,计算和打印球的体积,公式为volume=(4/3)*3.14159*pow(radius,3)。

25.填空:

A.用于引用数组中特定元素的数字称为数组的_______。

B._______用于声明数组长度,使程序伸缩性更强。

C.将数组元素按顺序排列的过程称为数组_______。

D.确定数组中是否包含某个键值的过程称为数组_______。

E.使用两个下标的数组称为_______数组。

26.判断下列各题是否正确。

如果不正确,请说明原因。

A.数组可以存放许多不同类型的数值。

B.数组下标通常我为float数据类型。

C.如果初始化值列表中的初始化值少于数组元素个数,则其余元素自动初始化为初始化值列表中的最后一个。

D.初始化值列表中的初始化值多于数组元素个数是个错误。

E.将每个数组元素传给函数并修改该元素值,那么在被调用函数执行结束时仍保留修改后的值。

27.回答下列关于数组flactions的问题:

A.定义常变量arraySize,初始化为10。

B.声明数组的arraySize元素类型为float,并将元素初始化为0.

C.数组开头第4个元素的名称。

D.引用数组元素4.

E.将数值1.667赋给数组元素9.

F.将3.333赋给数组第7个元素。

G.打印数组元素6和9,小数点后面为两位精度,并显示屏幕输出。

H.用for重复结构打印数组的所有元素。

定义整型变量x为循环控制变量。

显示输出。

28.回答下列关于数组table的问题:

A.声明3行3列的整型数组。

假设定义常量变量arraySize为3。

B.数组包含多少元素。

C.用for重复结构初始化数组每个元素为该元素下标的和。

假设声明整型变量x和y为循环控制变量。

D.编写一个程序段,以3行3列的表格形式打印每个数组元素值。

假设用下列声明初始化数组:

inttable[arraySize][arraySize]={{1,8},{2,4,6},{5}};

并声明整型变量x和y为循环控制变量。

显示输出。

29.找出下列语句中的错误并说明纠正:

A.#include;

B.arraySIze=10;//arraySizewasdeclaredconst

C.假设intb[10]={0};

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

b[i]=1;

D.假设inta[2][2]={{1,2},{3,4}};

a[1][1]=5;

30.填空:

A.指针变量包含另一变量的______值。

B.可以初始化指针的值有______、______或______。

C.可以赋给指针的唯一整数是_______。

31.判断下列各题是否正确。

如果不正确,请说明原因。

A.地址运算符&只能用于常量、表达式和register存储类声明的变量。

B.声明为void的指针可以复引用。

C.不同类型的指针不必进行强制类型转换操作即可相互赋值。

32.回答下列问题。

假设单精度浮点数放在4字节中,数组在内存中的开始地址为1002500.每道习题尽量使用前面的结果。

A.声明float类型数组numbers,含有10个元素,初始化为0.0、1.1、2.2...9.9。

假设符号化常量SIZE定义为10.

B.声明指针nPtr,指向float类型对象。

C.用数组下标符号打印数组numbers的元素。

使用for结构,假设声明了整形控制变量i。

打印每个数,小数点后面的精度为1.

D.用两条不同语句将数组numbers的开始地址赋给指针变量nPtr.

E.用指针nPtr和指针/偏移量符号打印数组numbers的元素。

F.用数组名作为指针和指针/偏移量符号打印数组numbers的元素。

G.用指针nPtr的下标打印数组numbers的元素。

H.用数组下标符号、数组名作为指针和指针/偏移量符号、nPtr与指针下标符号和nPtr与指针/偏移量符号打印数组numbers的元素4.

I.假设nPtr指向数组numberrs开头,nPtr+8指哪个地址?

这个地址存放什么值?

J.假设nPtr指向numbers[5],执行nPtr-=4之后nPtr引用哪个地址?

这个地址存放什么值?

33.对下列各题,各编写一条语句。

假设已声明浮点数变量number1和number2,number1初始化为7.3.并假设变量ptr为char*类型,数组是[100]和s2[100]为char*类型。

A.声明变量fPtr为float类型对象的指针。

B.将变量number1的地址赋给指针变量fPtr。

C.打印fPtr所指的对象值。

D.指定fPtr所指对象值变量为变量number2。

E.打印number2的值。

F.打印number1的地址。

G.打印fPtr中存在的地址,打印的值是否与number1的地址相同?

H.将数组s2中存放的字符串复制到数组s1中的字符串中。

I.比较s1中的字符串与s2的字符串并打印结果。

J.将s2中的字符串中的10个字符添加到s1中的字符串中。

K.确定s1中的字符串的长度。

L.将s2中第一个标记的地址赋给ptr。

s2中的标记用逗号(,)分开。

34.根据题目要求编写语句。

A.编写函数exchange的函数首部,取两个浮点数x和y的指针为参数,不返回数值。

B.编写A中函数的函数原型。

C.编写函数evaluate的函数首部,返回整数,取整数x和函数poly的指针参数。

函数poly取一个整数参数并返回一个是整数。

D.编写C中函数的函数原型。

E.显示用元音字符串"AEIOU"初始化字符串数组vowel的两种不同方法。

35.幸好出下列程序段智能光的错误。

假设:

int*zPtr;//zPtrwillreferencearrayz

intaPtr=0;

void*sPtr=0'

intnumber,i;

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

sPtr=z;

A.++zPtr

B./Usepointertogetfirstvalueofarray

number=zPtr;

C.//assignarrayelement2(thevalue3)tonumber

number=*zPtr[2];

D.//printentirarrayz

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

cout<

E.//assignthevaluepointedtobysPtrtonumber

number=sPtr;

F.++z;

G.chars[10];

cout<

H.chars[12];

strcpy(s,"WelcomeHome");

I.if(strcpy(string1,string2))

cout<<"Thestringsareequal"<

36.执行下列语句时打印什么(如果有)?

如果语句中有错,说明错误及纠正方法。

假设声明下列变量:

chars1[50]="jack",s2[50]="jill",s3[50],*sptr;

A.cout<

B.cout<

C.cout<

D.cout<

37.运行下列程序,查看输出结果。

请问这个程序的作用是什么?

//lx01_37.cpp

//查找三个整数的最大值

#include

intmaximum(int,int,int);

intmain()

{

inta,b,c;

cout<<"Enterthereintgers:

";

cin>>a>>b>>c;

//a,b和c是maximum函数调用的参数

cout<<"Maximumis:

"<

return0;

}

//maximum函数定义

//x,y和z是maximum函数定义的参数

intmaximum(intx,inty,intz)

{

intmax=x;

if(y>max)

max=y;

if(z>max)

max=z;

returnmax;

}

输出结果:

Enterthreeintegers:

123517

Maximumis:

35

Enterthreeintegers:

733511

Maximumis:

73

Enterthreeintegers:

252968

Maximumis:

68

//----------------------------------------第二单元-----------------------------------------------

1.填空:

A.每一条预处理指令都必须用______开头。

B.可以用____和____指令扩展条件编辑结构来测试多种条件。

C.______指令建立宏和符号常量。

D.同一行的预处理指令前只能出现____字符。

E.______指令取消符号常量和宏名的作用。

F.______和______指令是#ifdefined()和#if!

deined()的缩写。

G.______使程序员能够控制预处理指令的执行和程序代码的编译。

H.如果宏______计算出的表达式的值等于0,那么它就打印出一条消息并终止程序的执行。

I.______指令把文件插入到另一个文件中。

J.运算符______连接它的两个参数。

K.运算符______把其操作数转换为一个字符串。

L.字符______表示符号常量或宏的替换文本继续到下一行。

M.预处理指令______使源代码行从指定的常量整数值开始重编行号。

2.写出完成如下要求的预处理指令。

A.定义符号常量YES的值为1。

B.定义符号常量NO的值为0。

C.包含头文件commom.h,该文件和被编译的文件在用一个目录中。

D.对文件中剩下的行从行号3000开始编号。

E.如果定义了符号常量TRUE,则取消其定义并重新定义为1。

不使用#ifdef。

F.如果定义了符号常量TRUE,则取消其定义并重新定义为1。

使用#ifdef。

G.如果符号常量ACTIVE不等于0,定义符号常量INACTIVE为0,否则定义INACTIVE为1。

H.定义计算正方体体积的太有一个参数的宏CUBE_VOLUME。

3.填空:

A.结构定义用关键字______引入。

B.类成员通过______运算符和类对象名或通过______运算符和类对象指针访问。

C.指定为______的类成员只能由类的成员函数和友元访问。

D.______是个特殊成员函数,用于初始化类的数据成员。

E.类成员的默认访问模式为______。

F.______函数用于向类的private数据成员赋值。

G.______可以将一个类对象赋值给相同类的另一个对象。

H.类的成员函数通常指定为______,类的数据成员通常指定为______。

I.______函数用于读取类的private数据值。

J.类的public成员函数集称为类的______。

K.类的实现方式对客户隐藏,也称为______。

L.关键字______和______可以引入类定于。

M.指定为______的类成员可以在类对象所在范围中的任何位置访问。

4.寻找下列各题的错误并说明如何纠正。

A.假设Time类中声明下列原型:

void~Time(int);

B.下面是Time类的部分定义:

classTime{

public:

//functionprototypes

private:

inthour=0;

intminute=0;

intsecond=0;

};

C.假设Employee类中声明下列原型:

intEmployee(constchar*,constchar*);

第三单元练习

1、填空:

A.语法用于初始化类的常量成员。

B.成员函数应声明为类的才能访问这个类的private数据成员。

C.运算符对指定类型对象动态分配内存和返回类型的。

D.常量对象应,不能在生成之后修改。

E.数据成员表示类范围信息。

F.对象成员函数能访问对象的“自我指针”,称为指针。

G.关键字指定对象或变量初始化之后不可修改。

H.如果类的成员对象不能提供成员初始化值,则调用该对象的。

I.如果成员函数不访问类成员,则可以声明为static.

J.成员对象在所在类对象之构造。

K.运算符删除前面用new分配内存。

2、找出下列各题的错误并说明如何纠正:

A.classExample{

Public:

Example(inty=10){data=y;}

IntgetIncrementedDat()const{return++data;}

Staticintgetcount()

{

Cout<<”Datais“<

returncount;

}

Private:

Intdata;

Staticintcount;

}

B.char*string;

string=newchar[20];

free(string);

3.填空:

A.设a和b是两个整型变量,我们用a+b的形式求这两个变量的和;设c和d为浮点型变量,我们用c+d的形式求这丙个变量的和。

显然,运算符+具有不同的用途,这是的例子。

B.关键字引出了重载运算符数的定义。

C.要在类的对象上使用运算符,除了运算符和以外,其他的必须都要被重载。

D.重载不能改变运算符的、和。

4.解释C++中的运算符<<和>>的多层含义。

5.C++中,在什么时候可以使用名字operator/?

6.判断对错)在C++中,只能重载已有的运算符。

7.在C++中,重载运算符的优先级和原先未重载的运算符的优先级相比,哪一个优先级高?

8.填空:

A.如果类Alpha继承了类Beta,则类Alpha称为类,类Beta称为类。

B.C++提供的机制允许一个派生类继承多个基类,即使这些基类是相互无关的。

C.利用继承能够实现。

这种实现缩短了程序的开发时间,促进开发人员复用已经测试和调试好的高质量软件。

D.类的对象可作为类的对象处理。

E.为了将基类指针转换为派生类指针,由于编译器认为这种操作是危险的,所以要使用。

F.三种成员访问说明符分别是、和。

G.当用public继承从基类派生一个类时,基类的public成员成为派生类的成员,protected成员成为派生类的成员。

H.当用protected继承从基类派生一个类时,基类的public成员成为派生类的成员,基类的protected成员成为派生类的成员。

I.类之间的“有”关系代表,“是”关系表示。

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

当前位置:首页 > 高等教育 > 军事

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

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