C++习题集Word文档格式.docx
《C++习题集Word文档格式.docx》由会员分享,可在线阅读,更多相关《C++习题集Word文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
=0)
sun+=z;
16.判断下列各题是否正确。
如果不正确,请说明原因。
A.switch选择结构中必须有default。
B.awitch选择结构的default中必须有break语句才能正确退出这个结构。
C.如果表达式x>
y为true或a<
b为true,则表达式(x>
y&
&
a<
b)为true。
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)
y<
C.switch(n){
case1:
Thenumberis1"
case2:
Thenumberis2"
break;
default:
Thenumberisnot1or2"
}
D.下列代码打印1到10的值:
n=1;
while(n<
10)
n++<
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<
iostream>
3
4intcube(inty);
5
6intmain()
7{
8intx;
9
10for(x=1;
x<
=10;
x++)
11cout<
cube(X)<
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){
Insidefunctiong"
inth(void){
Insidefunctionh"
B.intsum(intx,inty){
intresult;
result=x+y;
C.intsum(intn){
if(n==0)
return0;
n+sum(n-1);
D.voidf(flosta);
{
floata;
E.voidproduct(void){
inta,b,c,result;
Enterthreeintagers:
"
;
cin>
a>
b>
c;
result=a*b*c;
Resultis"
result;
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<
iostream.h>
B.arraySIze=10;
//arraySizewasdeclaredconst
C.假设intb[10]={0};
for(inti=0;
i<
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++)
zPtr[i]<
E.//assignthevaluepointedtobysPtrtonumber
number=sPtr;
F.++z;
G.chars[10];
strncpy(s,"
hello"
5)<
H.chars[12];
strcpy(s,"
WelcomeHome"
);
I.if(strcpy(string1,string2))
Thestringsareequal"
36.执行下列语句时打印什么(如果有)?
如果语句中有错,说明错误及纠正方法。
假设声明下列变量:
chars1[50]="
jack"
s2[50]="
jill"
s3[50],*sptr;
A.cout<
strcpy(s3,s2)<
B.cout<
strcat(strcatstrcpy(s3,s1),"
and"
),s2)<
C.cout<
strlen(s1)+strlen(s2)<
D.cout<
strlen(s3)<
37.运行下列程序,查看输出结果。
请问这个程序的作用是什么?
//lx01_37.cpp
//查找三个整数的最大值
#include<
intmaximum(int,int,int);
intmain()
{
inta,b,c;
Enterthereintgers:
//a,b和c是maximum函数调用的参数
Maximumis:
maximum(a,b,c)<
//maximum函数定义
//x,y和z是maximum函数定义的参数
intmaximum(intx,inty,intz)
intmax=x;
if(y>
max)
max=y;
if(z>
max=z;
returnmax;
输出结果:
Enterthreeintegers:
123517
35
733511
73
252968
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“<
data<
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.类之间的“有”关系代表,“是”关系表示。