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.类之间的“有”关系代表,“是”关系表示。