大学c习题答案习题13答案

合集下载

大物书后习题答案整理(杨晓峰版)-习题13

大物书后习题答案整理(杨晓峰版)-习题13

习题 13-9 解答: 两个圆环形导体垂直放置,a 导体产生的磁场与 b 导体所在线圈的法线相互
垂直,即 b 中的磁通量为零,同理 a 中的磁通量也为零,两个线圈中不会产生互 感电动势,因此没有互感。但是由于自身电流的变化,在每个线圈中产生自感电 流。
习题 13-10 解答: 电流和电压的均方根值等于它们瞬时值的平方在一个周期内的积分的平均
0 2π (x + d )
负号表示棒上动生电动势的方向与 dx 的方向相反,即由 B 到 A 。
习题 13-13 解答: 金属线框平面的法线和磁场方向相互垂直,因此金属框在旋转过程中通过它
的磁通量没有变化,因此回路中的感应电动势为零。a、c 两点间的电势差只要 通过求解 ac 棒中的感应电动势即可得到。
习题 13-5 解答: 感应电场电场线是闭合的,感生电场是非保守力场,且在闭合曲线上 EK 不
一定相等,故(A)、(B)、(C)排除,又由于电势的概念是根据静电场力是保守力而 引入,故答案为(D)。
习题 13-6 解答: 联结 OA 、OB ,构成闭合回路 OBAO(三角型)或 OBCAO(扇型),由于 OA
t2 t1
Iidt
1 R
2 d
1
1 R
(2
1 )
可知,线圈中通过的电荷与时
间无关,又2
1
BS
cos 60
BS
1 2
BS
,则电荷与线圈面积成正比。
习题 13-3 解答:
当 aOc 以速度v 沿 x 轴正向运动时, 选定 aoc 为正方向,根据动生电动势的
定义 i
b (v
a
B) dl
,可得 co
得到金属棒上产生的动生电动势。

大学C语言程序设计(编程题)

大学C语言程序设计(编程题)

⼤学C语⾔程序设计(编程题)C语⾔程序设计习题(编程题 C语⾔程序设计习题(编程题习题1(编程题)[知识点:基础知识编制程序,要求输⼊整数a和b,若a2+b2⼤于100,则输出a2+b2百位以上的数字,否则输出两数之和。

习题1-参考答案 main() printf("Input a & b:"); if(a*a+b*b>100) printf("%d\n",(a*a+b*b)/100); elseprintf("%d\n",a+b); } 习题2(编程题)[知识点:基础知识试编程判断输⼊的正整数是否既是5⼜是7的整数倍,若是输出yes,否则输出no。

习题2-参考答案 main() printf("Input a:"); if(a%5==0&&a%7==0) printf("yes\n"); else printf("no\n"); } 习题3(编程题)[知识点:选择结构输⼊⼀个整数,判断它能否被3,5,7整除,并输出以下信息之⼀: (1)能同时被3,5,7整除 (2)能被其中两数整除(要指出哪两个)。

(3)能被其中⼀个数整除(要指出哪⼀个)。

(4)不能被任何⼀个整除。

习题3-参考答案 main()printf("Input a number:"); if(m%3==0&&m%5==0&&m%7==0)printf("能同时被3,5,7整除 elseif((m%3==0&&m%5==0)||(m%3==0&&m%7==0)||(m%5==0&&m%7==0)) {printf("能被其中两数整除 if(m%3==0&&m%5==0) printf("(3,5)"); else if(m%3==0&&m%7==0) printf("(3,7)");else printf("(5,7)"); else if(m%3==0||m%5==0||m%7==0) {printf("能被其中⼀个数整除 C语⾔程序设计习题(编程题if(m%3==0) printf("(3)"); else if(m%5==0) printf("(5)"); else printf("不能被任何⼀个整除"); } 习题4(编程题)[知识点:选择结构将以下程序段改⽤⾮嵌套的if语句实现。

昆明理工大学C语言程序设计课后习题答案

昆明理工大学C语言程序设计课后习题答案

昆明理工大学C语言程序设计课后习题答案第1章认识C语言(一)、是非题1.程序是指挥计算机进行各种信息处理任务的一组指令序列。

A.对B.错2.机器语言与硬件平台相关,但汇编语言和硬件平台无关。

A.对B.错3.编译型高级语言明显优于解释型高级语言。

A.对B.错4.C语言把高级语言的基本结构和低级语言的实用性紧密结合起来,不仅适合编写应用软件,而且适于编写系统软件。

A.对B.错5.面向对象的程序设计方法明显优于面向过程的程序设计方法。

A.对B.错6.计算机算法要有一个明确的起点和确定的步骤序列。

A.对B.错7.main函数是C程序的入口,由计算机系统负责调用。

A.对B.错8.在C语言中,同一行上可以写一条或多条语句,但一条语句不能写在多行上。

A.对B.错9.在C语言中,扩展名为.h的文件称为头文件,常用于组织C标准函数库中的函数。

A.对B.错10.注释语句会增加编译结果的复杂性,因此要尽量减少注释语句的数量。

A.对B.错11.声明变量的含义是通知编译系统为变量分配合适大小的存储空间。

A.对B.错12.C语言不允许使用关键字作为变量的名称,但可以使用保留字为变量命名。

A.对B.错13.符号常量提高了程序的可读性,但降低了程序维护的方便性。

A.对B.错14.变量声明把一个具体的标识符名称和计算机内存中的一个特殊的位置联系起来,同时确定了该位置存储的信息类型。

A.对B.错15. C语言允许在同一条语句中定义多个相同类型的变量,其间用分号进行分隔。

A.对B.错16.在ISO/ANSI 1999规定中,允许将变量声明放在程序中的任何位置。

A.对B.错17.不同类型的数据在内存中所占存储单元的大小不同,内部存储方式不同,取值范围不同,甚至能够参与的运算种类也不相同。

A.对B.错18.有符号和无符号整数的区别仅在于对数据最高位的解释不同。

若最高位解释为数据位,则为signed类型;若最高位解释为符号位,则为unsigned类型。

大学物理课后习题答案13电磁感应习题

大学物理课后习题答案13电磁感应习题
结束 目录
(2) v = at
(3)
e =0.2t(V)
e
=0
0.2 (4) I = = =0.1 t (A) 2 R
e
结束 目录
13-5 在两平行导线的平面内,有一矩 形线圈,如图所示。如导线中电流I随时间 变化,试计算线圈中的感生电动势。
l2 I I d1
l1
d2
结束 目录
已知: I, I1, I2, d1, d2 。 求:ei 解: Φ =Φ 1 Φ 2 m I I1 d1+ I2 m I I1 d2+ I2 ln ln = 2 2 π π d1 d2 m I I1 d1+ I2 d2+ I2 ln ln = 2 π d1 d2 m I I1 ( d1+ I2 )d2 ln = 2 ( d2+ I2 )d1 π m I1 ( d1+ I2 )d2 d I d Φ ln ei = d t = 2 ( d2+ I2 )d1 d t π
结束 目录
已知:Φ = 6t2+7t+1(Wb) 求:e (t =2s) 解: Φ e= d = -(12 t +7) ×10-3 dt
t =2
× × × × × × × × × × × × × × × × × × ×
e = -(12×2+7)×10
=-3.1×10 (V)
-2
-3
× × ×

×
0 0 0 0
目录
2 dy 2 r m I π R 3 e dt 2y 4 y d 将 y=NR 及 v = 代入得到: dt 2 r m I π e = 32R2N 4 v
d Φ = dt =

大学C语言程序设计(填空题)

大学C语言程序设计(填空题)

C 语言程序设计习题-填空题
x=7; x+=x-=x+x; 习题 33-参考答案 -14 习题 34(填空题)[知识点:表达式] 若 a 和 b 均为 int 型变量,则以下语句的功能是______。 a+=b;b=a-b;a-=b; 习题 34-参考答案 交换 a、b 变量的值 习题 35(填空题)[知识点:顺序结构] 有一输入函数 scanf("%d",k);则不能使 float 类型变量 k 得到正确数值的原因是______。 习题 35-参考答案 格式字符不正确, 缺少&符号 习题 36(填空题)[知识点:顺序结构] 若有以下定义和语句,为使变量 c1 得到字符'A',变量 c2 得到字符'B',正确的格式输入形式是______。 char c1,c2; scanf("%4c%4c",&c1,&c2); 习题 36-参考答案 A□□□B□□□ 习题 37(填空题)[知识点:顺序结构] 执行以下程序时,若从第一列开始输入数据,为使变量 a=3,b=7,x=8.5, y=71.82, c1='A',c2='a',正确的数据输入形式是 ______。 int a,b;float x,y;char c1,c2; scanf("a=%d b=%d",&a,&b); scanf("x=%f y=%f",&x,&y; scanf("c1=%c c2=%c",&c1,&c2); 习题 37-参考答案 a=3□b=7x=8.5□y=71.82c1=A□c2=a<CR> 习题 38(选择题)[知识点:表达式] 若 int a=3,b=2,c=1,f;表达式 f=a>b>c 的值是______。 习题 38-参考答案 0 习题 39(填空题)[知识点:顺序结构] 以下程序的运行结果是______。 #include <stdio.h> main() {int x=1,y,z; x*=3+2; printf("%d\t",x); x*=y=z=5; printf("%d\t",x); x=y==z; printf("%d\n",x); } 习题 39-参考答案 5□□□□□□□25□□□□□□1(制表符为 7 个) 习题 40(填空题)[知识点:表达式] 设 y 为 int 型变量,请写出描述“y 是奇数”的表达式______。 习题 40-参考答案 y%2==1、y%2!=0、y%2、(y-1)%2==0、!(y%2==0) 4 / 25

大学_C语言程序设计教程课后习题答案下载

大学_C语言程序设计教程课后习题答案下载

C语言程序设计教程课后习题答案下载C语言程序设计教程内容简介第1章C语言概述11.1简单的C语言程序11.2C语言的发展历史与特点31.2.1C语言的发展历史31.2.2C语言的'特点41.3C程序的开发步骤和上机调试流程51.3.1C程序的开发步骤51.3.2C程序的上机开发过程6习题112第2章基本数据类型的输入/输出132.1C语言的输入/输出132.2整型数据的输入/输出132.3浮点型数据的输入/输出142.4字符数据的输入/输出152.5字符串数据的输入/输出152.6格式化输入/输出举例172.7阅读材料182.7.1格式化输出函数printf的格式说明和使用182.7.2格式化输入函数scanf的格式说明和使用19习题221第3章流程控制223.1算法223.1.1算法的概念223.1.2算法的表达方式233.1.3基本流程控制结构253.1.4案例3.1 求1+1/2+…+1/100的和263.2选择语句263.2.1案例3.2 求三个整数的最大值(if语句)263.2.2案例3.3 百分制成绩转换成五分制成绩(多分支if语句)293.2.3案例3.4 判断所输入的一个字符是数字、空白符还是其他字符(switch语句)313.2.4案例3.5 百分制成绩转换成五分制成绩(switch语句)333.3循环语句343.3.1案例3.6 求1+1/2+…+1/100的和(while语句)343.3.2案例3.7 求1+1/2+…+1/100的和(do...while语句)353.3.3案例3.8 求1+1/2+…+1/100的和(for语句)373.4转向语句393.4.1案例3.9 判断所输入的一个大于1的正整数是否是素数(break语句)393.4.2案例3.10 输出100~200之间能被3整除的数(continue语句)413.5应用举例423.5.1案例3.11 计算1! + 2! + … + 10!(并讨论溢出问题)423.5.2案例3.12 计算级数1-1/3+1/5-1/7+…的和443.5.3案例3.13 统计输入的数字字符、字母字符和其他字符的个数453.5.4案例3.14 求两个正整数的最大公约数和最小公倍数453.5.5案例3.15 将一个正整数逆序输出463.5.6案例3.16 输入日期并检查其合理性,直到输入合理为止473.6阅读材料483.6.1C语言的语句483.6.2goto语句简介493.6.3exit()函数493.6.4程序调试简介50习题351C语言程序设计教程目录本书定位于将C语言作为计算机编程入门语言,以帮助读者树立计算机程序设计的思想,培养学生程序设计基本能力为目标的教材。

大学C 语言练习题答案

return 0;
}
2..输入:输入两个整数,两个整数之间用空格分隔,如输入 20 30
输出:输出两个数中的较小数
#include <stdio.h>
int min(int x,int y)
{ return(x<y?x:y);
}
int main()
int main()
{
float c,f;
scanf("input F:");
scanf("%f",&f); c=5.0/9.0Fra bibliotek(f-32);
printf("c:%1.2f\n",c);
return 0;
}
7..输入三角形的三条边的边长,编写求其面积的程序。
提示:三角形面积公式:area=sqrt(s*(s-a)*(s-b)*(s-c)),s=1/2*(a+b+c)
#include <stdio.h>
#include <math.h>
{i=i+1;
scanf("%d",&x);
scanf(" ");
if(min>x)
min=x;
if(max<x)
max=x;
}
scanf("%d,%d",&h,&f);
chick=(4*h-f)/2;
rabbit=(f-2*h)/2;
printf("rabbit:%d\nchick:%d\n",rabbit,chick);

大学C语言复习题_附答案


(A)字节 (B)位 (C)字 (D)记录 12. 因特网中某主机的二级域名为“edu” ,表示该主机属于______。C (A)赢利性商业机构 (B)军事机构 (C)教育机构 (D)非军事性政府组织机构 13. 下列字符中,其 ASCII 码值最大的是______。D (A)9 (B)D (C)a (D)y 14. 语句 printf(“%%d%d”, 123); 将输出: A、%123%d B、%%d123 √C、%d123 D、上述语句语法有错 15. 对于 int x, y; 语句 if (x<0) y= -1; else if (!x) y=0; else y=1; 等价于: A、 y=0; if (x>=0) if (x) y=1; else y= -1; √B、 if (x!=0) if (x>0) y=1; else y= -1; else y=0; C、 if (x<0) y= -1; if (x!=0) y=1; else y=0; D、 y= -1; if (x!=0) if (x>0) y=1; else y=0; 16. 语句 if (a>b) k=0; else k=1;等价于: A、k=(a>b)?1:0; B、k=a>b; √C、k=a<=b; D、以上均不是 17. 执行下列程序段: int i, j; i = 3/2 + 7/2 == 5; j = 45 % 11 + (((7>8) ? 14:21) == 14); 后变量 i,j 的值应为: √A、i=0 j=1 B、i=1 j=1 C、i=0 j=2 D、i=1 j=2 18. 如果 int i=16, j=23 ; 执行 printf("%x--%o",i, j)后输出为: A、10—23 √B、10--27 C、16--23 D、16—27 19. 若 x 是 double 型变量,n 是 int 型变量,执行 ,并输入 3 1.25 后,x=1.25, n=3。 √A、scanf("%d%lf", &n, &x); B、scanf("%lf%d", &x, &n); C、scanf("%lf%d", &n, &x); D、scanf("%d,%lf", &n, &x); 20. 若变量已经被正确定义,为表示“变量 x 和 y 都能被 3 整除” ,应使用的 C 表达式 是 。 A、(x%3 != 0) || (y%3 != 0) B、(x%3 != 0) && (y%3 != 0) C、(x%3 == 0) || (y%3 == 0) √D、(x%3 == 0) && (y%3 == 0) 21. while( ) 等价于 while(x)。 A、x == 0 √B、x != 0 C、x == 1 D、x != 1 22. 下列程序段的输出结果是 。 int count = 0, x, y, z; for(x = 1; x <= 2; x++) for(y = 1; y <= 3; y++) for(z = 1; z <= 4; z++) count++; printf("%d", count); A、10 B、9 √C、24 D、0 23. 判断变量 ch 是英文字母的表达式为 。 A、( 'a' <= ch <= 'z') || ( 'A' <= ch <= 'Z')

大学C语言程序设计(填空题)


C 语言程序设计习题-填空题
若 s 是 int 型变量,则表达式 s%2+(s+1)%2 的值为______。 习题 11-参考答案 1 习题 12(填空题)[知识点:数据类型] 若 a 是 int 型变量,则表达式(a=4*5,a*2),a+6 的值为______。 习题 12-参考答案 26 习题 13(填空题)[知识点:数据类型] 若 x 和 a 均是整型变量,则计算表达式 x=(a=4,6*2)后的 x 值为______。 习题 13-参考答案 12 习题 14(填空题)[知识点:数据类型] 若 x 和 a 均是整型变量,则计算表达式 x=a=4,6*2)后的 x 的值为______。 习题 14-参考答案 4 习题 15(填空题)[知识点:数据类型] 若 a、b 和 c 均是 int 型变量,则计算表达式 a=(b=4)+(c=2)后,a、b、c 的值分别为______。 习题 15-参考答案 6,4,2 习题 16(填空题)[知识点:数据类型] 若 a 是 int 型变量,且 a 的初值为 6,则计算表达式 a+=a-=a*a 后 a 的值为______。 习题 16-参考答案 -60 习题 17(填空题)[知识点:数据类型] 若 a 是 int 型变量,则计算表达式 a=25/3%3 后 a 的值为______。 习题 17-参考答案 2 习题 18(填空题)[知识点:数据类型] 若 x 和 n 均是 int 型变量,且 x 和 n 的初值均为 5,则计算表达式 x+=n++后 x、n 的值分别为______。 习题 18-参考答案 10,6 习题 19(填空题)[知识点:数据类型] 若有定义:int b=7;float a=2.5,c=4.7;则表达式 a+(int)(b/3*(int)(a+c)/2)%4 的值为______。 习题 19-参考答案 5 .5 习题 20(填空题)[知识点:数据类型] 若有定义:int a=2,b=3;float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y 的值为______。 习题 20-参考答案 3 .5 习题 21(填空题)[知识点:数据类型] 若有定义:char c='\010';则变量 c 中包含的字符个数为______。 习题 21-参考答案 1 习题 22(填空题)[知识点:数据类型] 若有定义:int x=3,y=2;float a=2.5,b=3.5;则表达式(x+y)%2+(int)a/(int)b 的值为______。 2 / 25

《C语言程序设计教程》习题参考答案

《C语言程序设计教程》习题参考答案《C语言程序设计教程》习题参考答案祝胜林主编华南理工大学出版社【习题1】 (1)【习题2】 (2)【习题3】 (3)【习题4】 (5)【习题5】 (8)【习题6】 (11)【习题7】 (14)【习题8】 (17)【习题9】 (17)【习题10】 (20)一、简答题(在课本中寻找答案,略)1.1C程序的基本结构包括哪些内容?1.2如何定义标识符?1.3输入格式、输出格式的组成包括哪些内容?1.4C语言函数分为哪两类?1.5计算表达式的值应该考虑哪些方面?1.6上机调试程序的步骤如何?二、判断并改错1.7C程序执行的入口是main()函数,所以main函数必须放在程序的开头。

错误:main函数可以放在程序的任何位置。

并不限定在程序的开头。

1.8定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。

错误:不可以交叉出现,数据说明部分在执行语句部分的前面。

1.9编辑与编译不是一回事。

错误:不是一回事。

编辑完成源程序的输入和修改;编译是对源程序进行语法检查,如果无语法错误,则生成目标程序。

1.10scanf("%d,%d",&x,&y);的正确输入格式:3,4<回车>。

正确1.11注释内容太多会影响程序的执行效率。

错误:不会影响程序的执行效率。

因为在编译时,编译系统将注释内容删除或用空格代替,所以注释内容不会编译到目标程序中。

1.12所有的数学公式可以直接出现在源程序中。

错误:数学公式需要转换成C语言能够接受的公式才能出现在源程序中。

三、编程题1.13在屏幕上输出自己名字的拼音。

提示:中文名字叫?张三?,对应的拼音为?Zhang San?,输出用printf()函数。

1.14 输入圆的半径,求圆的周长,并将结果保留两位小数输出到屏幕上。

提示:定义圆的半径r,圆的周长:2*3.14*r,输出结果保留2位小数可以用%.2f1.15输入两个整数,输出其中最大者。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

习题13答案一、简答题1.什么是运算符重载?实现运算符重载有几种方法?如何实现?答案:C++提供的运算符重载机制能够实现将已有运算符应用到新的数据类型变量上,赋予运算符新的含义。

C++对运算符重载有一些限制,见有两种方法可以实现运算符重载,它们是:类的成员函数方式和有友元函数方式。

定义友元的目的是在友元函数中直接访问类的私有成员。

实际上,可以通过类的公有函数接口访问类的私有成员,所以实现运算符重载,可以使用非成员、非友元实现运算符的重载。

但是这种实现方法增加了访问私有数据成员的公有函数的调用时间,不值得提倡。

见2.如何实现本类对象与其它类对象之间的相互类型转换?答案:可以使用“类型转换函数”将本类对象转换成其他类对象。

而“类型转换函数”本质上就是运算符的重载。

另外,可以使用“构造函数”将其他类对象转换成本类对象。

3.什么是虚函数?什么是纯虚函数?它们的作用是什么?答案:多态性是面向对象程序设计的重要特性,它与前面讲的封装性和继承性构成面向对象程序设计的三大特性。

这三大特性是互相关联的,封装性是基础,继承性是关键,而多态性是补充。

多态分为静态多态和动态多态。

函数重载和运算符重载属于静态多态。

动态多态是运行时的多态,如某些函数的调用关系在运行阶段才能确定。

为了实现函数调用关系的动态多态,可以将函数定义成虚函数。

将一个成员函数定义成虚函数的方法是,在函数定义的返回值类型前加virtual。

在抽象类中,有时无法实现某一功能(即无法决定某一函数的具体实现),只能将函数定义成纯虚函数。

虚函数具有函数实现的函数体,而纯虚函数没有函数体,即没有函数实现。

对纯虚函数,只能在其派生类中实现该函数的功能。

4.试比较虚函数与虚基类的概念及作用。

答案:虚函数用于实现动态多态。

而虚基类用于实现在多重继承情况下,基类数据成员在派生类中保留一个副本,见12.6节。

二、选择题答案:1. C2. D3. A4. D5. B6. C7. D8. C三、运行结果、完善程序1.运行结果:n=4n=32, 32.答案:先看虚线框中的程序,运行结果为:D::show( ) called. 8若将A行的virtual去掉,则结果为:B::show( ) called. 5对本题,若将虚线框中的fun( )和main( )函数同时修改成右侧实线框中的对应函数,则若A行有virtural时,结果为:D::show( ) called. 8 ;若A行无virtual时,结果为:B::show( ) called. 5 。

3.运行结果为:The B version BThe D1 info: 4 version 1The D2 info: 100 version BThe D3 info: -25 version 3去掉A行的virtual,则运行结果为:The B version BThe B version 1The B version BThe B version 34.答案:(1)operator char *( )(2)return s;(3)str = num;四、编程题1.答案:// 实现1,赋值运算符重(=和+=)载函数的返回值为对象的引用。

// 缺点:不可实现对象的连续赋值,只能c1= c2#include<iostream.h>class Complex{float Real, Image;public:Complex(float r=0,float i=0){Real=r;Image=i;}void show( ){cout<<"("<<Real<<','<<Image<<")\n";}void operator=(Complex &); //用成员实现,注意:=不能用友元实现void operator+=(Complex &); //用成员实现,+=可以用友元实现friend Complex operator+(Complex &,Complex &); //用友元实现friend Complex operator-(Complex &,Complex &); //用友元实现};void Complex:: operator=(Complex &c) //返回值void{Real=c.Real;Image=c.Image;}void Complex:: operator+=(Complex &c) //返回值void{Real=Real+c.Real;Image=Image+c.Image;}Complex operator+(Complex &c1, Complex &c2){Complex t;t.Real=c2.Real+c1.Real;t.Image=c2.Image+c1.Image;return t;}Complex operator-(Complex &c1, Complex &c2){Complex t;t.Real=c1.Real-c2.Real;t.Image=c1.Image-c2.Image;return t;}void main( ){Complex c1(1,2),c2(3,4),c3;c3=c1; c3.show( );c3=c1+c2; c3.show( );c3+=c2; c3.show( );c3=c1-c2; c3.show( );}// 实现2,赋值运算符重(=和+=)载函数的返回值为对象的引用。

// 优点:可实现对象的连续赋值,如c1=c2=c3#include<iostream.h>class Complex{float Real, Image;public:Complex(float r=0,float i=0){Real=r;Image=i;}void show( ){cout<<"("<<Real<<','<<Image<<")\n";}Complex & operator=(Complex &); //用成员实现,注意:=不能用友元实现Complex & operator+=(Complex &); //用成员实现,+=可以用友元实现friend Complex operator+(Complex &,Complex &); //用友元实现friend Complex operator-(Complex &,Complex &); //用友元实现};Complex & Complex:: operator=(Complex &c) //返回值为对象的引用{Real=c.Real;Image=c.Image;return *this;}Complex & Complex:: operator+=(Complex &c) //返回值为对象的引用{Real=Real+c.Real;Image=Image+c.Image;return *this;}Complex operator+(Complex &c1, Complex &c2){Complex t;t.Real=c2.Real+c1.Real;t.Image=c2.Image+c1.Image;return t;}Complex operator-(Complex &c1, Complex &c2){Complex t;t.Real=c1.Real-c2.Real;t.Image=c1.Image-c2.Image;return t;}void main( ){Complex c1(1,2),c2(3,4),c3;c3=c2=c1; c3.show( );c3=c1+c2; c3.show( );c3+=c2; c3.show( );c3=c1-c2; c3.show( );}2.答案:#include <iostream.h>#include <math.h>class Fraction{int m, n; // m 是分子,n 是分母public:Fraction(int im=0,int in=1){int t=gcd(im,in);m=im/t; n=in/t;if(m*n>0) // 若分子和分母同号{ m=abs(m); n=abs(n); }else // 若分子和分母异号{ m=-abs(m); n=abs(n); };}int gcd(int x,int y);Fraction & operator= ( Fraction b ){m=b.m; n=b.n;return *this;}Fraction operator+ ( Fraction b ){ return Fraction(m*b.n+n*b.m,n*b.n); }Fraction operator- ( Fraction b ){ return Fraction(m*b.n-n*b.m,n*b.n); }friend Fraction operator* ( Fraction a, Fraction b );friend Fraction operator/ ( Fraction a, Fraction b );void Show(){ cout<<m<<'/'<<n<<endl; }};int Fraction::gcd(int x,int y ) //返回的最大公约数是正数{int r;if(x<0) x= -x;if(y<0) y= -y;while( r=x%y ){ x=y; y=r; }return y;}Fraction operator* ( Fraction a, Fraction b ){ return Fraction(a.m*b.m, a.n*b.n); }Fraction operator/ ( Fraction a, Fraction b ){ return Fraction(a.m*b.n, a.n*b.m); }void main( ){Fraction a(1,3),b(3,-12),c;cout<<"a="; a.Show( );cout<<"b="; b.Show( );c=a+b;cout<<"a+b="; c.Show();c=a-b;cout<<"a-b="; c.Show();c=a*b;cout<<"a*b="; c.Show();c=a/b;cout<<"a/b="; c.Show();}3.答案:#include<iostream.h>class Point{float x,y;public:Point(float a=0,float b=0){ x=a;y=b; }void show( ){ cout<<"x="<<x<<'\t'<<"y="<<y<<'\n'; }Point & operator++( ); //用成员函数实现前置,返回引用Point operator++(int); //用成员函数实现后置,返回对象friend Point & operator--(Point &); //用友元函数实现前置,返回引用friend Point operator--(Point & ,int);//用友元函数实现后置,返回对象// 前置或后置,一般应返回对象或引用,否则只能单独使用// 既a++ 合法,而b=a++; 非法};Point & Point::operator++( )//前置,成员实现{x++;y++;return *this;}Point Point::operator++(int)//后置,成员实现{Point t=*this;x++;y++;return t;}Point & operator--(Point &p)//前置,友元实现{p.x--; p.y--;return p;}Point operator--(Point &p,int)//后置,友元实现{Point temp=p;p.x--;p.y--;return temp;}void main( ){Point m(1,2), c;c=m++; // 如果只写m++; m.show( ); 则无法测出是前置还是后置c.show( );m.show( );c=++m;c.show( );m.show( );c=m--;c.show( );m.show( );c=--m;c.show( );m.show( );}4.答案:#include<iostream.h>#include<string.h>class string{char *str;int len;public:string(char *s=0)//构造函数,含缺省构造函数{if(s) //此处必须判断s是否为空指针。

相关文档
最新文档