C++给学生习题第7章练习题
第七章综合练习题

第七章综合练习题一、单项选择题1.抽样调查的目的在于()①了解总体的基本情况②用样本指标推断总体指标③对样本进行全面调查④了解样本的基本情况2.抽样调查所特有的误差是()①由于样本的随机性而产生的误差②登记误差③系统性误差④①②③都错3.抽样调查和重点调查的主要区别是()①选取调查单位的方式不同②调查的目的不同③调查的单位不同④两种调查没有本质区别4当可靠度大于0.6827时,抽样极限误差()①大于抽样平均误差②小于平均误差③等于抽样平均误差④与抽样平均误差的大小关系依样本容量而定5.有一批灯泡共1000箱,每箱200个,现随机抽取20箱并检查这些箱中全部灯泡,此种检验属于()①纯随机抽样②类型抽样③整群抽样④等距抽样6.当总体单位不很多且各单位间差异较小时宜采用()①类型抽样②纯随机抽样③整群抽样④两阶段抽样7.在抽样推断中,抽样误差是()①可以避免的②可避免且可控制③不可且无法控制④不可避免但可控制8.在其他条件不变的情况下,抽样单位数越多,则()①系统误差越大②系统误差越小③抽样误差越大④抽样误差越小9.假定10亿人口大国和100万人口小国的居民年龄变异程度相同,现在各自用重复抽样方法抽取本国的1‰人口设计者,则抽样误差()①两者相等②前者大于后者③前者小于后者④不能确定10.某地有2万亩稻田,根据上年资料得知其中平均亩产的标准差为50公斤,若以95.45%的概率保证平均亩产的误差不超过10公斤,应抽选()亩地作为样本进行抽样调查。
①100 ②250 ③500 ④1000二、多项选择题1.抽样调查的特点有()①按随机原则抽取样本单位②把握程度大小③以样本指标推断总体指标④抽样误差可以计算和控制⑤以上都对2.抽样调查适用于下列哪些场合()①不宜进行全面调查而又要了解全面情况②工业产品质量检验③调查项目多、时效性强④只需了解一部分单位的情况⑤适用于任何调查3.确定样本容量时应考虑的因素有()①极限误差大小②全面性检验③取样方式④抽样的组织形式⑤被研究标志变异程度4.区间估计中总体指标所在范围()①是一个可能范围②是绝对可靠的范围③不是绝对可靠的范围④是有一定把握程度的范围⑤是毫无把握的范围5.概率度是指( )①置信概率 ②以抽样平均误差为单位 ③是样本指标与总体指标的绝对误差范围④表示极限误差是平均误差的几倍 ⑤是表明抽样估计可靠程度的一个参数三、计算题1.某地区为了解职工家庭的收入情况,从本地区3000户家庭中,按不重复抽样的方法抽取300户职工家庭进行调查,调查结果如表1:(1误差为多少?(2)若又从抽样资料知,月平均收入在800元以上的户数的比重为20%,故月收入在800元以上成数抽样平均误差为多少?2.已知某种球体直径服从x ~N (),未知,某位科学家测量到的一个球体直径的5次记录为:6.33,6.37,6.36,6.32和6.37厘米,试估计。
第七章和第八章补充练习题(答案)

7.3补充练习题及参考答案7.3.1单项选择题1.对于一棵具有n 个结点、度为4的树来说,_____________.A.树的高度最多是n-3B.树的高度最多是是n-4C.第i 层上最多有4(i-1)个结点D.至少在某一层上正好有4个结点答:这样的树中至少有一个结点的度为4,也就是说,至少有一层中有4个或以上的结点,因此树的高度最多是n-3。
本题的答案为A 。
2.度为4、高度为h 的树_____________.A.至少有h+3个结点B.最多有4h -1个结点C.最多有4h 个结点D.至少有h+4个结点答:与上小题分析相同,本题的答案为A 。
3.对于一棵具有n 个结点、度为4的树来说,树的高度至少是_____________.A.)]2([log 4nB.)]13([log 4-nC.)]13([log 4+nD.)]12([log 4+n答:由树的性质4可知,具有n 个结点的m 次树的最小高度为)]1)1(([log +-m n m 。
这里m=4,因此最小高度为)]13([log 4+n 。
本题的答案为C 。
4.在一棵3次树中度为3的结点数为两个,度为2的结点数为一个,度为1的结点数为两个,则度为0的结点数为_____________个。
A.4B.5C.6D.7答:3n =2,2n =1,1n =2,001235n n n n n n +=+++=,n=度之和+1=33n +22n +1n +1=11, 所以65110=-=n 。
本题的答案为C 。
5.若一棵有n 个结点的树,其中所有分支结点的度均为k,该树中的叶子结点个数 是_____________。
A.n(k 一1)/kB.n-kC.(n+1)/kD.(nk 一n+1)/k答:m=k,有k n n n +=0,度之和=n-1=k kn ,k n n k /)1(-=,所以0n =n-k n =n-(n-1)/k=(nk-n+1)/k.本题的答案为D 。
第七章 相关回归分析 思考题及练习题

实用价值越小。
13、在相关分析中,要求相关的两个变量( )
A、都是随机变量
B、都不是随机变量
C、其中因变量是随机变量 D、其中自变量是随机变量
14、在简单回归直线
中,
表示( ) A、当
增加一个单位时,
增加
的数量 B、当
增加一个单位时,
增加
的数量 C、当
增加一个单位时,
的平均增加值 D、当
增加一个单位时,
按一定数额变化时,变量
也随之近似地按固定的数额变化,那么,这时变量
和
之间存在着( )
A、正相关关系
B、负相关关系
C、直线相关关系 D、曲线相关关系
18、两个变量间的相关关系称为( )
A、单相关
B、无相关
C、复相关
D、多相关
19、如果两个变量之间的相关系数
,说明这两个变量之间存在( )。 A、低度相关关系 B、高度相关关系 C、完全相关关系 D、显著相关关系 20、已知
第七章 思考题及练习题
(一) 填空题
1、 1、 在相关关系中,把具有因果关系相互联系的两个变
量中起影响作用的变量称为_______,把另一个说明观察结果的
变量称为________。
2、 2、 现象之间的相关关系按相关的程度分有________相
关、________相关和_______相关;按相关的方向分有________
E、 E、回归方程实用价值大小的指标 10、现象之间相互联系的类型有( )
A、函数关系 B、回归关系 C、相关关系 D、随机关系 E、结构关系 11、相关关系种类( ) A、从相关方向分为正相关和负相关 B、从相关形态分为线性相关和非线性相关 C、从相关程度分为完全相关、不完全相关和零相关
C语言程序设计教程 第七章 课后习题参考答案

{
for(j=0;j<N;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
for(i=0;i<M;iபைடு நூலகம்+)
{
for(j=0;j<N;j++)
{
if(i==j)
m+=a[i][j];
}
}
printf("主对角线元素之和为:%d\n",m);
批注本地保存成功开通会员云端永久保存去开通
P198 3求主、副对角线元素之和
#include<stdio.h>
#define M 4
#define N 4
int main()
{
int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int i,j,m=0,n=0;
{
if(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
printf("\n");
printf("排序后的数组为:\n");
for(i=0;i<N;i++)
{
printf("%4d",a[i]);
}
}
P76 3成绩
#include<stdio.h>
void input(int cla[50][3],int n);
C语言程序设计-第1-7章选择、填空习题及答案

习题一一、选择题1.C程序的基本单位是(A)。
A.函数B.文件C.语句D.字符2.C程序中的变量(B)。
A.不用说明B.先说明后引用C.先引用后说明D.引用和说明顺序无关3.变量的说明在(B)。
A.执行语句之后B.执行语句之前C.执行语句当中D.位置无关4.C语言是一种(C)。
A.机器语言B.符号语言C.高级语言D.面向对象的语言二、填空题1.一个C程序总是从主函数开始执行。
2.结构化程序由顺序、选择、循环三种基本结构构成。
3.一个C程序只有一个名为main的主函数。
4.C程序中的每个语句以分号结束。
5.C程序中,函数由函数首部和函数体组成。
6.每个基本结构有一个入口和一个出口,没有死循环和死语句。
7.算法是计算机解决问题所依据的步骤。
习题二一、选择题1.下列数据中属于字符串常量的是( B)。
A.ABC B."ABC" C.'abc' D.'A'2.在计算机内存中,'\n'占用的字节数是( C)。
A.4 B.3 C.1 D.23.字符串"ABC"在内存中占用的字节数是( D)。
A.6 B.8 C.3 D.44.在C语言中,合法的长整型常数是( B)。
A.568701400 B.0L C.0.03546287 D.2.654e115.char型常量在内存中存放的是( A)。
A.ASCII代码值B.BCD代码值C.十进制代码值D.内码值6.下列各项中正确的标识符是( D)。
A.?bb B.a=8 C. b.βD.b_47.下列不正确的转义字符是( D)。
A.\\ B.\ 0 C.\" D.0x48.设整型变量a、b的值均为5,则表达式(m=n=a++)/(n=b-2)的值为( B)。
A.0 B.1 C.2 D.39.设a的值为5,执行下列语句后,b的值不为2的是( C)。
A.b=a/2 B.b=6-(--a) C.b=a%2 D.b=(float)a/2 10.执行语句x=(a=3,b=a--)后,x、a、b的值依次是( C)。
《数据结构(C语言版 第2版)》(严蔚敏 著)第七章练习题答案

《数据结构(C语言版第2版)》(严蔚敏著)第七章练习题答案第7章查找1.选择题(1)对n个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为()。
A.(n-1)/2B.n/2C.(n+1)/2D.n答案:C解释:总查找次数N=1+2+3+…+n=n(n+1)/2,则平均查找长度为N/n=(n+1)/2。
(2)适用于折半查找的表的存储方式及元素排列要求为()。
A.链接方式存储,元素无序B.链接方式存储,元素有序C.顺序方式存储,元素无序D.顺序方式存储,元素有序答案:D解释:折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
(3)如果要求一个线性表既能较快的查找,又能适应动态变化的要求,最好采用()查找法。
A.顺序查找B.折半查找C.分块查找D.哈希查找答案:C解释:分块查找的优点是:在表中插入和删除数据元素时,只要找到该元素对应的块,就可以在该块内进行插入和删除运算。
由于块内是无序的,故插入和删除比较容易,无需进行大量移动。
如果线性表既要快速查找又经常动态变化,则可采用分块查找。
(4)折半查找有序表(4,6,10,12,20,30,50,70,88,100)。
若查找表中元素58,则它将依次与表中()比较大小,查找结果是失败。
A.20,70,30,50B.30,88,70,50C.20,50D.30,88,50答案:A解释:表中共10个元素,第一次取⎣(1+10)/2⎦=5,与第五个元素20比较,58大于20,再取⎣(6+10)/2⎦=8,与第八个元素70比较,依次类推再与30、50比较,最终查找失败。
(5)对22个记录的有序表作折半查找,当查找失败时,至少需要比较()次关键字。
A.3B.4C.5D.6答案:B解释:22个记录的有序表,其折半查找的判定树深度为⎣log222⎦+1=5,且该判定树不是满二叉树,即查找失败时至多比较5次,至少比较4次。
(6)折半搜索与二叉排序树的时间性能()。
C语言习题答案1-7章
程序设计基础(C语言版)习题第01章绪论一.选择题1.以下叙述中正确的是________。
A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整参考答案:D【解析】程序设计通常分为问题建模、算法设计、编写代码和编译调试四个阶段。
所以选项A)、B)、C)说法都不完整。
2.以下关于简单程序设计的步骤和顺序的说法中正确的是。
A)确定算法后,整理并写出文档,最后进行编码和上机调试B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构参考答案:B【解析】设计一个能解决实际问题的计算机程序需要经过以下几个过程:①建立模型。
②算法设计:给出解决问题的步骤,即算法。
③算法表达:选择一种表达算法的工具,对算法进行清晰的表达。
④编写程序:选择一种程序设计语言,把以上算法程序化,这称为编写程序。
⑤程序调试:对编写好的程序进行调试,修改程序中的错误。
⑥程序文档编写与程序维护。
综上所述,B)选项是符合上述描述的,其他选项不恰当。
3.以下叙述中正确的是________。
A)C程序的基本组成单位是语句B)C程序中的每一行只能写一条语句C)简单C语句必须以分号结束D)C语句必须在一行内写完参考答案:C【解析】函数是C程序的基本组成单位;C语言书写风格很自由,不但一行可以写多个语句,还可以将一个语句写在多行中。
故本题答案为C)。
4.以下叙述中正确的是。
A)C程序中的注释只能出现在程序的开始位置和语句的后面B)C程序书写格式严格,要求一行内只能写一个语句C)C程序书写格式自由,一个语句可以写在多行上D)用C语言编写的程序只能放在一个程序文件中参考答案:C【解析】在C语言中,注释可以加在程序中的任何位置,选项A)错误。
c语言第7章函数练习题
4. C语言程序中,当函数调用时( )。 A. 实参和形参各占一个独立的存储单元 B. 实参和形参共用一个存储单元 C. 可以由用户指定是否共用存储单元 D. 计算机系统自动确定是否共用存储单元
fun(int x,int y,int z)
{ z=x*x+y*y;}
main()
{
int a=31;
fun(5,2,a);
printf("%d",a);
}
A.0
B.29
30.下列程序执行后的输出结果是( )。
voidfunc1(int i);
voidfunc2(int i);
charst[]="hello,friend!";
printf("%d\n",x);
}
上面程序的输出结果是( )。
A.720
B.120
C.24
39.下面程序的输出是( )。
main()
{
intt=1;
fun(fun(t));
}
fun(inth)
{
staticinta[3]={1,2,3};
intk;
for(k=0;k<3;k++) a[k]+=a[k]-h;
B. 不同函数中,可以使用相同名字的变量
C. 形式参数是局部变量
D. 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效
C++给学生习题第7章练习题
第7章练习题同步练习一、选择题1.在下列运算符中,不能重载的是()。
(A)! (B)sizeof (C)new (D)delete2.在下列关于运算符重载的描述中,()是正确的。
(A)可以改变参与运算的操作数个数(B)可以改变运算符原来的优先级(C)可以改变运算符原来的结合性(D)不能改变原运算符的语义3.运算符函数是一种特殊的()或友元函数。
(A)构造函数(B)析构函数(C)成员函数(D)重载函数4.设op表示要重载的运算符,那么重载运算符的函数名是()。
(A)operator op (B)op (C)函数标识符(D)函数标识符op5.用于类运算的运算符通常都要重载。
但有两个运算符系统提供默认重载版本,它们是()。
(A)->和. (B)++和--(C)=和& (D)new和delete 【解答】 B D C A C同步练习一、选择题1.在下列函数中,不能重载运算符的函数是()。
(A)成员函数(B)构造函数(C)普通函数(D)友元函数2.在下列运算符中,要求用成员函数重载的运算符是()。
(A)= (B)== (C)<= (D)++3.在下列运算符中,要求用友元函数重载的运算符是()。
(A)= (B)[] (C)<< (D)()4.如果希望运算符的操作数(尤其是第一个操作数)有隐式转换,则重载运算符时必须用()。
(A)构造函数(B)析构函数(C)成员函数(D)友元函数5.当一元运算符的操作数,或者二元运算符的左操作数是该类的一个对象时,重载运算符函数一般定义为()。
(A)构造函数(B)析构函数(C)成员函数(D)友元函数【解答】 B A C D C二、程序练习1.阅读程序,写出运行结果。
#include <iostream>using namespace std;class T{ public :T() { a = 0; b = 0; c = 0; }T( int i, int j, int k ) { a = i; b =j; c = k; }void get( int &i, int &j, int &k ) { i = a; j = b; k = c; }T operator* ( T obj );private:int a, b, c;};T T::operator* ( T obj ){ T tempobj;= a * ;= b * ;= c * ;return tempobj;}int main(){ T obj1( 1,2,3 ), obj2( 5,5,5 ), obj3;int a, b, c;obj3 = obj1 * obj2;( a, b, c );cout<<"( obj1*obj2 ): " <<"a = "<<a<<'\t'<<"b = "<<b<<'\t'<<"c = "<<c<<'\n';(obj2*obj3).get( a, b, c );cout<<"( obj2*obj3 ): " <<"a = "<<a<<'\t'<<"b = "<<b<<'\t'<<"c = "<<c<<'\n';}【解答】2.阅读程序,写出运行结果。
《第7章婴幼儿安全知识》练习题
《第七章婴幼儿安全知识》练习题一.单选题1. 婴幼儿在学前教育机构生活的主要空间是()。
A.班级B.社区C.户外活动场所D.大型玩具场所【参考答案】 A参考解析:学前教育机构中班级的环境是婴幼儿在园生活的主要空间,一定要注意消除环境的安全隐患。
2. 因大型玩具年久失修对婴幼儿造成的伤害属于()。
A.设施、设备伤害B.保育教育伤害C.婴幼儿自身伤害D.婴幼儿走失【参考答案】 A参考解析:该题目考核的是对婴幼儿常见事故类型的理解和掌握。
3. 婴幼儿意外伤害较多发生的季节是()。
A.春季B.夏季C.秋季D.冬季【参考答案】 A参考解析:春季天气转暖,儿童活动量增大,易冲动暴躁,汗液的刺激会导致其自控性、动作准确性降低,因此,学前教育机构中春季意外事故的发生率明显高于其他季节。
4. 婴幼儿人身伤害事故的处理应主要遵循()。
A.过错责任原则B.过错推定责任原则C.无过错责任原则D.公平责任原则【参考答案】 A参考解析:婴幼儿人身伤害事故主要是由于行为人因故意或过失不法侵害他人权利的行为造成的,因此其处理应主要遵循过错责任原则,而兼顾其他归责原则。
5. 学前教育机构中具体全面负责婴幼儿安全的人是()。
A.园长B.教研组长C.保教人员D.炊事员【参考答案】 C参考解析:保教人员是具体负责婴幼儿全面安全工作的人,应确保婴幼儿在园一日生活的安全。
6. 学前教育机构承担民事责任的主要方式是()。
A.侵权损害赔偿B.人身损害赔偿C.精神损害赔偿D.财产损害赔偿【参考答案】 B7. 在根据法律不能适用“无过错责任原则”,而适用“过错责任原则”又会使受害人遭受的重大损害得不到赔偿,在显然有失公平的情况下,法院即可根据双方当事人的实际情况,按“公平合理负担”的原则判定,由双方分担损失的一种责任是指()。
A.过错责任原则B.过错推定责任原则C.无过错责任原则D.公平责任原则【参考答案】 D8. 一天当中,婴幼儿意外伤害多发的时间段是()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第7章练习题同步练习7.1一、选择题1.在下列运算符中,不能重载的是()。
(A)! (B)sizeof (C)new (D)delete2.在下列关于运算符重载的描述中,()是正确的。
(A)可以改变参与运算的操作数个数(B)可以改变运算符原来的优先级(C)可以改变运算符原来的结合性(D)不能改变原运算符的语义3.运算符函数是一种特殊的()或友元函数。
(A)构造函数(B)析构函数(C)成员函数(D)重载函数4.设op表示要重载的运算符,那么重载运算符的函数名是()。
(A)operator op (B)op (C)函数标识符(D)函数标识符op5.用于类运算的运算符通常都要重载。
但有两个运算符系统提供默认重载版本,它们是()。
(A)->和. (B)++和--(C)=和& (D)new和delete 【解答】 B D C A C同步练习7.2一、选择题1.在下列函数中,不能重载运算符的函数是()。
(A)成员函数(B)构造函数(C)普通函数(D)友元函数2.在下列运算符中,要求用成员函数重载的运算符是()。
(A)= (B)== (C)<= (D)++3.在下列运算符中,要求用友元函数重载的运算符是()。
(A)= (B)[] (C)<< (D)()4.如果希望运算符的操作数(尤其是第一个操作数)有隐式转换,则重载运算符时必须用()。
(A)构造函数(B)析构函数(C)成员函数(D)友元函数5.当一元运算符的操作数,或者二元运算符的左操作数是该类的一个对象时,重载运算符函数一般定义为()。
(A)构造函数(B)析构函数(C)成员函数(D)友元函数【解答】 B A C D C二、程序练习1.阅读程序,写出运行结果。
#include <iostream>using namespace std;class T{ public :T() { a = 0; b = 0; c = 0; }T( int i, int j, int k ) { a = i; b =j; c = k; }void get( int &i, int &j, int &k ) { i = a; j = b; k = c; }T operator* ( T obj );private:int a, b, c;};T T::operator* ( T obj ){ T tempobj;tempobj.a = a * obj.a;tempobj.b = b * obj.b;tempobj.c = c * obj.c;return tempobj;}int main(){ T obj1( 1,2,3 ), obj2( 5,5,5 ), obj3;int a, b, c;obj3 = obj1 * obj2;obj3.get( a, b, c );cout<<"( obj1*obj2 ): " <<"a = "<<a<<'\t'<<"b = "<<b<<'\t'<<"c = "<<c<<'\n';(obj2*obj3).get( a, b, c );cout<<"( obj2*obj3 ): " <<"a = "<<a<<'\t'<<"b = "<<b<<'\t'<<"c = "<<c<<'\n';}【解答】2.阅读程序,写出运行结果。
#include <iostream>using namespace std;class Vector{ public:Vector(){ }Vector(int i,int j) { x = i; y = j; }friend Vector operator+ ( Vector v1, Vector v2 ){ Vector tempVector;tempVector.x = v1.x + v2.x;tempVector.y = v1.y + v2.y;return tempVector;}void display(){ cout << "( " << x << ", " << y << ") "<< endl; }private:int x, y;};int main(){ Vector v1( 1, 2 ), v2( 3, 4 ), v3;cout << "v1 = ";v1.display();cout << "v2 = ";v2.display();v3 = v1 + v2;cout << "v3 = v1 + v2 = ";v3.display();}【解答】同步练习7.3一、选择题1.设有类A的对象Aobject,若用成员函数重载前置自增表达式,那么++Aobject被编译器解释为()。
(A)Aobject.operator++() (B)operator++(Aobject)(C)++(Aobject) (D)Aobject :: operator++()2.运算符++,=,+和[]中,只能用成员函数重载的运算符是()。
(A)+和= (B)[]和后置++(C)=和[] (D)前置++和[]3.在C++中,如果在类中重载了函数调用运算符(),那么重载函数调用的一般形式为()。
(A)(表达式)对象(B)(表达式表)对象(C)对象(表达式)(D)对象(表达式表)4.设有类A的对象Aobject,若用友元函数重载后置自减表达式,那么Aobject--被编译器解释为()。
(A)Aobject.operator-- () (B)operator-- (Aobject,0)(C)-- (Aobject,0) (D)-- (Aobject,0)5.如果表达式++j*k中的++和*都是重载的友元运算符,则采用运算符函数调用格式,该表达式还可以表示为()。
(A)operator*(j.operator++(),k) (B)operator*(operator++(j),k)(C)operator++(j).operator*(k) (D)operator*(operator++(j),)6.如果类A要重载插入运算符<<,那么重载函数参数表的形式一般定义为()。
(A)(constA&) (B)(ostream&)(C)(constA&, ostream&) (D)(ostream&, constA&)【解答】 A C D B B D同步练习7.4一、选择题1.类型转换函数只能定义为一个类的()。
(A)构造函数(B)析构函数(C)成员函数(D)友元函数2.具有一个非默认参数的构造函数一般用于实现从()的转换。
(A)该类类型到参数类型(B)参数类型到该类类型(C)参数类型到基本类型(D)类类型到基本类型3.假设ClassX是类类型标识符,Type为类型标识符,可以是基本类型或类类型,Type_Value为Type类型的表达式,那么,类型转换函数的形式为()。
(A)ClassX :: operator Type(Type t) { … return Type_Value;}(B)friendClassX :: operator Type() { … return Type_Value;}(C)Type ClassX :: operator Type() { … return Type_Value; }(D)ClassX :: operator Type() { … return Type_Value;}4.在下列关于类型转换的描述中,错误的是()。
(A)任何形式的构造函数都可以实现数据类型转换。
(B)带非默认参数的构造函数可以把基本类型数据转换成类类型对象。
(C)类型转换函数可以把类类型对象转换为其他指定类型对象。
(D)类型转换函数只能定义为一个类的成员函数,不能定义为类的友元函数。
5.C++中利用构造函数进行类类型转换时的构造函数形式为()。
(A)类名::类名(arg); (B)类名::类名(arg,arg1=E1,…,agrn=En);(C)~类名(arg); (D)~类名(arg,arg1=E1,…,agrn=En);【解答】 C B D A B二、程序练习1.阅读下面程序,按注释位置指出语句的性质。
#include<string.h>#include<iostream>using namespace std;//定义String类class String{ friend ostream &operator<<(ostream & output,String &s); //(1)什么语句friend istream &operator>>(istream & input,String &s); //(2)什么语句public:String(const char *m=""); //(3)什么语句~String(); //(4)什么语句operator int() const; //(5)什么语句operator char* ()const; //(6)什么语句private:char *str;int size;};//(7)什么定义String::String(const char *m){ size=strlen(m);str=new char[size+1];strcpy_s(str,size+1,m);}//(8)什么定义String::~String(){ delete [] str;size=0;}//(9)什么定义ostream &operator<<(ostream &output,String &s){ output<<s.str;return output;}//(10)什么定义istream &operator>>(istream &input,String &s){ char temp[1000];input>>temp;delete [] s.str;s.size=strlen(temp);s.str=new char[s.size+1];strcpy_s(s.str,s.size+1,temp);return input;}//(11)什么定义String::operator int()const{ return size; }//(12)什么定义String::operator char* () const{ static char temp[1000];strcpy_s(temp,"\"");strcat_s(temp,str);strcat_s(temp,"\"");return temp;}int main(){ char s[100];String s1,s2; //(13)调用什么函数cout<<"Please input two strings:"<<endl;cin>>s1>>s2; //(14)调用什么函数cout<<"output is:"<<endl;cout<<"s1 as String--"<<s1<<endl; //(15)调用什么函数cout<<"sizeof(s1) -sizeof(s2)="<<((int)s1- (int)s2)<<endl; //(16)调用什么函数cout<<"s1 as char * --"<<(char*)s1<<endl; //(17)调用什么函数cout<<"s2 as char * --"<<(char*)s2<<endl; //(18)调用什么函数strcpy(s,s2); //(19)调用什么函数cout<<"After strcpy(s,s2); s="<<s<<endl; //(20)调用什么函数return 0; //(21)调用什么函数}【解答】#include<string.h>#include<iostream>using namespace std;//定义String类class String{ friend ostream &operator<<(ostream & output,String &s); //(1)运算符<<重载函数声明friend istream &operator>>(istream & input,String &s); //(2)运算符>>重载函数声明public:String(const char *m=""); //(3)构造函数声明~String(); //(4)析构函数声明operator int() const; //(5)类型转换函数声明operator char* ()const; //(6)类型转换函数声明private:char *str;int size;};//(7)定义构造函数String::String(const char *m){ size=strlen(m);str=new char[size+1];strcpy_s(str,size+1,m);}//(8)定义析构函数String::~String(){ delete [] str;size=0;}//(9)定义运算符<<重载函数ostream &operator<<(ostream &output,String &s) { output<<s.str;return output;}//(10)定义运算符>>重载函数istream &operator>>(istream &input,String &s) { char temp[1000];input>>temp;delete [] s.str;s.size=strlen(temp);s.str=new char[s.size+1];strcpy_s(s.str,s.size+1,temp);return input;}//(11)定义int类型转换函数String::operator int()const{return size;}//(12)定义char*类型转换函数String::operator char* () const{static char temp[1000];strcpy_s(temp,"\"");strcat_s(temp,str);strcat_s(temp,"\"");return temp;}int main(){char s[100];String s1,s2; //(13)调用构造函数cout<<"Please input two strings:"<<endl;cin>>s1>>s2; /(14)/调用operator>>函数cout<<"output is:"<<endl;cout<<"s1 as String--"<<s1<<endl; //(15)调用operator<<函数cout<<"sizeof(s1)-sizeof(s2)="<<((int)s1-(int)s2)<<endl; //(16)调用operator int类型转换函数cout<<"s1 as char * --"<<(char*)s1<<endl; //(17)调用operator char*类型转换函数cout<<"s2 as char * --"<<(char*)s2<<endl; //(18)调用operator char*类型转换函数strcpy(s,s2); //(19)对参数s2调用类型转换函数operator char*,然后调用库函数cout<<"After strcpy(s,s2); s="<<s<<endl; //(20)调用库函数输出串return 0; //(21)调用析构函数}综合练习一、思考题1.一个运算符重载函数被定义为成员函数或友元函数后,在定义方式、解释方式和调用方式上有何区别?可能会出现什么问题?请用一个实例说明之。