C++面向对象程序设计课后习题答案1~14章.pdf

上传人:文*** 文档编号:88949451 上传时间:2023-05-04 格式:PDF 页数:68 大小:8.42MB
返回 下载 相关 举报
C++面向对象程序设计课后习题答案1~14章.pdf_第1页
第1页 / 共68页
C++面向对象程序设计课后习题答案1~14章.pdf_第2页
第2页 / 共68页
点击查看更多>>
资源描述

《C++面向对象程序设计课后习题答案1~14章.pdf》由会员分享,可在线阅读,更多相关《C++面向对象程序设计课后习题答案1~14章.pdf(68页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第一章1-5#include using namespace std;int main()(coutThisis;coutaHC+;coutHprogram.;return 0;)1-6#include using namespace std;int main()(int a,b,c;a=10;b=23;c=a+b;couta+b=;1-8、include using namespace std;int main()int a,b,c;cinab;c=a+b;couta+b=a+bendl;return 0;)1-9、include using namespace std;int main()

2、(int a,b,c;int add(int x,int y);cinab;c=add(a,b);coutc;coutendl;return 0;)couta+b=cendl;return 0;l-7#include using namespace std;int main()(int a,b,c;int f(int x,int y,int z);cin abc;c=f(a,bzc);coutcendl;return 0;)int f(int xjnt y,int z)(int m;if(xy)m=x;else m=y;int add(int xjnt y)int z;z=x+y;return

3、(z);)第 一 早2-3、#include using namespace std;int main()charcl=,a,/c2=b,/c3=,c,/c4=,101,c5=,116,;coutclc2c3,n,;couttbc4t,c5,n;return 0;)2-4、#include if(z ttinclude using namespace std;int main()int i,j,m,n;i=8;j=io;m=+i+j+;n=(+i)+(+j)+m;co u t i,t j,t,m tnendl;return 0;2-8 include using namespace std;i

4、nt main()char cl=C/c2=hz c3=iz c4=n,c5=a;cl+=4;c2+=4;c3+=4;c4+=4;c5+=4;coutpasswordis:,clc2 c3 c4 c5 en d l;setprecision(2);coutl=setw(10)lendl;couts=setw(10)sendl;coutsq=setw(10)sqendl;coutvq=setw(10)vqendl;cout,vz=setw(10)vzendl;return 0;)3-3、include using namespace std;int main()float c,f;cout“请输

5、入一个华氏温度:“;cinf;c=(5.0.0)*(f-32);注意 5 和 9 要用实型表示,否则5/9值为0coutvv摄氏温度为:cendl;return 0;;3-4、#include using namespace std;int main()char cl,c2;coutv”请输入两个字符01,02:;cl=getchar();将输入的第一个字return 0;第三章3-2、#include#include using namespace std;int main()float h,rj,szsq,vq,vz;const float pi=3.1415926;coutplease

6、enter r,h:u;符赋给C1c2=getchar();将输入的第二个字符赋给C2cout”用 putchar函数输出结果为:“;putchar(cl);putchar(c2);coutendl;cout(“用 cout语句输出结果为:“;coutclc2endl;return 0;cinrh;l=2*pi*r;s=r*r*pi;sq=4*pi*r*r;vq=3.O/4.O*pi*r*r*r;vz=pi*r*r*h;)3-4-1、#include using namespace std;int main()char cl,c2;cout请输入两个字符d,c2:;cl=getchar();将

7、输入的第一个字coutsetiosflags(ios:fixed)setiosflags(ios:符赋给clright)c2=getchar();将输入的第二个字符赋给c2coutffl putchar函数输出结果为:“;putchar(cl);putchar(44);putchar(c2);coutendl;cout“用 cout语句输出结果为:;cou t cl/c2endl;return 0;)3-5、#include using namespace std;int main()char cl,c2;int ilJ2;定义为整型cout“请输入两个整数il,i2:;cin ili2;cl

8、=il;c2=i2;cout按 字 符 输 出 结 果 为:,c2endl;return 0;)3-8、include using namespace std;int main()int a=3,b=4zc=5zx,y;cout(a+bc&b=c)endl;cout(a|b+c&b-c)endl;cout(!(ab)&c|l)endl;cout(!(x=a)&(y=b)&0)endl;cout(!(a+b)+c-l&b+c/2)endl;return 0;3-9-1#include using namespace std;int main()int a,b,c;coutplease enter

9、 three integernumbers:;cin abc;if(ab)if(bc)coutmax=c;elsecoutmax=b;else if(ac)coutmax=c;elsecoutmax=a;coutendl;return 0;)39-2、#include using namespace std;int main()int a,b,c,tempzmax;coutplease enter three integernumbers:;cin abc;temp=(ab)?a:b;/*将 a 和 b 中的大者存入temp中*/max=(tempc)?temp:c;/*将 a 和 b 中的大

10、者与c 比较,最大者存入max*/coutmax=#include using namespace std;int main()int x,y;coutenter x:;cinx;if(xl)y=x;coutx=x/y=x=y;else if(x10)/110y=3*x-ll;coutx=x,y=3*x-ll=y;coutendl;return 0;)3-ll#include using namespace std;int main()float score;char grade;coutplease enter score of student:;cinscore;while(score10

11、0|score#include using namespace std;int main()long int num;intindiv,ten,hundredzthousand,ten_thousand,place;/*分别代表个位,十位,百位,千位,万位和位数*/coutenter an integer(099999):;cinnum;if(num9999)place=5;else if(num999)place=4;else if(num99)place=3;else if(num9)place=2;else place=l;coutplace=placeendl;计算各位数字ten_th

12、ousand=num/10000;thousand=(int)(num-ten_thousand*10000)/l000;hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);coutoriginal order:;switch(place)case5:coutten_thou

13、sand,7,thousand7,#include using namespace std;int main()long i;/i 为利润floatbonus,bonLbon2,bon4,bon6,bonlO;bonl=100000*0.1;利润为 10万元时的奖金bon2=bonl+100000*0.075;利润为 20万元时的奖金bon4=bon2+100000*0.05;利润为 40万元时的奖金bon6=bon4+100000*0.03;利 润为 60万元时的奖金bonl0=bon6+400000*0.015;利润为 100万元时的奖金coutenter i:;cini;if(i=100

14、000)bonus=i*0.1;利润在10万元以内按10%提成奖金else if(i=200000)bonus=bonl+(i-100000)*0.075;/利润在10万元至20万时的奖金else if(i=400000)bonus=bon2+(i-200000)*0.05;/利润在20万元至4 0 万时的奖金else if(i=600000)bonus=bon4+(i-400000)*0.03;/利润在40万元至60万时的奖金else if(i=1000000)bonus=bon6+(i-600000)*0.015;/利润在60万元至100万时的奖金elsebonus=bonl0+(i-10

15、00000)*0.01;/利润在100万元以上时的奖金coutbonus=bonusendl;return 0;)3-13-2、#include using namespace std;int main()long i;float bonus,bonl,bon2,bon4,bon6,bonl0;int c;bonl=100000*0.1;bon2=bonl+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bonl0=bon6+400000*0.015;coutenter i:;cini;c=i/100000;if(O10)c=1

16、0;switch(c)case 0:bonus=i*0.1;break;case 1:bonus=bonl+(j-100000)*0.075;break;case 2:case 3:bonus=bon2+(i-200000)*0.05;break;case 4:case 5:bonus=bon4+(i-400000)*0.03;break;case 6:case 7:case 8:case 9:bonus=bon6+(i-600000)*0.015;break;case 10:bonus=bonl0+(i-1000000)*0.01;)coutnbonus=bonusendl;return 0

17、;3-14#include using namespace std;int main()int t,a,b,c,d;coutenter four numbers:;cin a b c d;couta=a,b=b,c=,c,/d=dendl;if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(ad)t=a;a=d;d=t;if(bc)t=b;b=c;c=t;if(bd)t=b;b=d;d=t;if(cd)t=c;c=d;d=t;coutthe sorted sequence:endl;couta,b,c,dendl;return 0;)3-15#include usin

18、g namespace std;int main()int pj,n,m,temp;coutplease enter two positive integernumbers n,m:;cinnm;if(nm)temp=n;n=m;m=temp;把大数放在n 中,小数放在m 中)p=n*m;先将n和m 的乘积保存在p 中,以便求最小公倍数时用while(m!=0)求 n 和 m的最大公约数r=n%m;n=m;m=r;coutHCF=nendl;coutLCD=p/nendl;P 是原来两个整数的乘积return 0;)3-16、#include using namespace std;int m

19、ain()char c;int letters=0,space=0,digit=0,other=0;coutenter one line:Hendl;while(c=getchar()!=n)if(c=a&c=A&c=0&c=9)digit+;elseother+;)coutletter:,letters/space:space,/digit:,d igit/other:otherendl;return 0;)3-17、#include using namespace std;int main()int a,n,i=l/sn=0,tn=0;couta,n=:;cinan;while(i=n)t

20、n=tn+a;赋值后的tn 为 i 个 a组成数的值sn=sn+tn;赋值后的s n 为多项式前i 项之和a=a*10;+i;couta+aa+aaa+.=snendl;return 0;)3-18、#include using namespace std;int main()float s=0,t=l;int n;for(n=l;n=20;n+)(t=t*n;求 n!s=s+t;/将各项累加)coutl!+2!+.+20!=nsendl;return 0;)3-19、#include using namespace std;int main()int i,j,k,n;coutnarcissu

21、s numbers are:endl;for(n=100;n1000;n+)i=n/100;j=n/10-i*10;k=n%10;if(n=i*i*i+j*j*j+k*k*k)coutn)coutendl;return 0;)3-20-1、#include using namespace std;int main()const int m=1000;/定义寻找范围int kl,k2,k3,k4,k5,k6,k7,k8,k9,kl0;int i,a,n,s;for(a=2;a=m;a+)a 是 21000 之间的整数,检查它是否为完数n=0;/n 用来累计a 的因子的个数s=a;/s 用来存放尚

22、未求出的因子之和,开始时等于afor(i=l;ia;i+)/检查 i 是否为 a的因子if(a%i=0)/如果 i 是 a 的因子n+;11加 1,薪:新找到一个因子s=s-i;到s 减去已找:的因子,s 的新值是尚未求出的因子之和switch(n)/将找到的因子赋给case 1:kl=i;个因子赋给klcase 2:break;/找出的笫 1k2=i;个因子赋给k2case 3:break;/找出的笫 2k3=i;个因子赋给k3case 4:break;/找出的笫 3k4=i;个因子赋给k4case 5:break;/找出的笫 4k5=i;个因子赋给k5case 6:break;/找出的笫

23、5k6=i;个因子赋给k6case 7:break;/找出的笫 6k7=i;个因子赋给k7case 8:break;/找出的笫 7k8=i;个因子赋给k8case 9:break;/找出的笫 8k9=i;个因子赋给k9case 10:break;/找出的笫 9kl0=i;break;10个因子赋给klO)/找出的笫if(s=0)/s=0 表示全部因子都已找到了couta is a 完数l)coutklzl l表示a 至少有2 个因子if(n2)coutzk3;/n2 表示至少有3 个因子,故应再输出一个因子if(n3)cout,”3 表示至少有4 个因子,故应再输出一个因子if(n4)cout

24、zk5;/以下类似if(n5)coutzk6;if(n6)cout,k7;if(n7)coutzk8;if(n8)cout,k9;if(n9)coutzHklO;coutendlendl;)return 0;)3-20-2#include using namespace std;int main()int m,s,i;for(m=2;m1000;m+)s=0;for(i=l;im;i+)if(m%i)=0)s=s+i;if(s=m)coutm is a 完数ench;coutits factors are:;for(i=l;im;i+)if(m%i=0)couticoutendl;)retur

25、n 0;)3-2 0-3#include using namespace std;int main()int kll;int i,azn,s;for(a=2;a=1000;a+)n=0;s=a;for(i=l;ia;i+)if(a%i)=0)n+;s=s-i;kn=i;/将找到的因子赋给 kl k10)if(s=0)couta is a 完数endl;coutHits factors are:;for(i=l;in;i+)coutkiH;coutknendl;)return 0;)3-21N#include using namespace std;int main()int i,t,n=20;

26、double a=2,b=lzs=0;for(i=l;i=n;i+)s=s+a/b;t=a;a=a+b;/将前一项分子与分母之和作为下一项的分子b=t;/将前一项的分子作为下一项的分母)coutsum=sendl;return 0;)3-22N#include using namespace std;int main()int day,xl,x2;day=9;x2=l;while(day0)xl=(x2+l)*2;第 1 天的桃子数是第2 天桃子数加1 后的2 倍x2=xl;day-;couttotal=xlendl;return 0;)for(i=X;i#include for(j=X;j=

27、,Z;j+)#include if(i!=j)using namespace std;for(k=X,;k=Z,;k+)int main()if(i!=k&j!=k)float azxOzxl;if(i!=X&k!=X&k!=Z)coutenter a positive number:;coutA-icina;/输入 a 的值 C-kendl;x0=a/2;return 0;xl=(x0+a/x0)/2;do第四章xO=xl;4-1 include xl=(x0+a/x0)/2;using namespace std;)int main()while(fabs(x0-xl)=le-5);int

28、 hcf(intjnt);coutThe square rootof a is int lcd(intzintjnt);xlendl;intreturn 0;cinuv;)h=hcf(u,v);3-24、#include coutH.C.F=hendl;using namespace std;l=lcd(u,v,h);int main()coutL.C.D=lendl;int i,k;return 0;for(i=0;i=3;i+)4 行*号/输出上面 for(k=0;ku)行*号后换行t=u;u=v;v=t;)while(r=u%v)!=0)for(i=0;i=2;i+)输出下面3 u=v;

29、行*号v=r;for(k=0;k=4-2*i;k+)return(v);cout*;/输出*号 coutendl;/输出完一行*号后换行int lcd(int ujnt yjnt h)return(u*v/h);return 0;)4-2、include 3-25#include#include using namespace std;using namespace std;int main()float xl,x2,disc,p,q;char ijzk;/*i 是 a 的对 int main()手;j 是 b 的对手;k 是 c 的对手*/void greater_than_zero(flo

30、at,float);void equal_to_zero(floatzfloat);void smaller_than_zero(float,float);float a,b,c;coutinput azb,c:;cin abc;disc=b*b-4*a*c;coutroot:endl;if(disc0)(greater_than_zero(a,b);cou txl=xlzx2=x2endl;)else if(disc=0)equal_to_zero(a,b);coutxl=xl/x2=x2endl;)elsesmaller_than_zero(a,b);coutxl=p+,qiendl;co

31、utx2=p-q,i,endl;return 0;void greater_than_zero(float a,float b)/*定义一个函数,用来求disc0时方程的根*/xl=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);)void equal_to_zero(float ajloat b)/*定义一个函数,用来求disc=0时方程的根*/(xl=x2=(-b)/(2*a);)void smaller_than_zero(float a,float b)/*定义一个函数,用来求disc#include using namespace std;i

32、nt main()int prime(int);/*函数原型声明7int n;coutHinput an integer:;cinn;if(prime(n)coutn is a prime.endl;elsecoutn is not a prime,endl;return 0;int prime(int n)int flag=lj;for(i=2;in/2&flag=l;i+)if(n%i=0)flag=0;return(flag);4-4、#include using namespace std;int main()int fac(int);int a,b,c,sum=0;coutenter

33、 a,b,c:“;cin abc;sum=sum+fac(a)+fac(b)+fac(c);couta!+b!+c!=sum endl;return 0;)int fac(int n)int f=l;for(int i=l;i=n;i+)f=f*i;return f;4-5、include include using namespace std;int main()double e(double);double x,sinh;coutenter x:;cinx;sinh=(e(x)+e(-x)/2;coutsinh(x)=sinhendl;return 0;)double e(double x

34、)return exp(x);4-6、include#include using namespace std;int main()doublesolut(double,double,double,double);double a,b,c,d;coutinput a,b,c,d:”;cin ab c d;coutx=solut(a,b/c,d)endl;return 0;)double solut(double a,double b,doublec,double d)double x=l,xO,f,fl;dox0=x;f=(a*xO+b)*xO+c)*xO+d;fl=(3*a*x0+2*b)*x

35、0+c;x=xO-f/fl;)while(fabs(x-x0)=le-5);return(x);)4-7#include include using namespace std;int main()void godbaha(int);int n;coutHinput n:;cinn;godbaha(n);return 0;void godbaha(int n)int prime(int);int a,b;for(a=3;a=n/2;a=a+2)if(prime(a)b=n-a;if(prime(b)coutn=a+bendl;)int prime(int m)int i,k=sqrt(m);f

36、or(i=2;ik)return 1;else return 0;)4-8、#include using namespace std;int main()int x,n;float p(intjnt);coutinput n&x:;cinnx;coutn=n,x=xendl;coutPn n ,(x)=,p(n,x)endl;return 0;float p(int njnt x)if(n=0)return(l);else if(n=l)return(x);elsereturn(2*n-l)*x*p(n-l)/x)-(n-l)*p(n-2),x)/n);4-9、#include using n

37、amespace std;int main()void hanoi(int n,char one,char two,charthree);int m;coutinput the number of diskes:;cinm;coutThe steps of moving,m disks:endl;hanoifm/A/B/C);return 0;void hanoi(int n,char one,char twozchar three)将n 个盘从one座借助tw o座,移到 three座void move(char x,char y);if(n=l)move(onezthree);elseha

38、noi(n-Lone,three,two);move(one,three);hanoi(n-lztwo,onezthree);)void move(char x,char y)coutx-,yend I;4-10、#include using namespace std;int main()void convert(int n);int number;coutinput an integer:*;cinnumber;coutoutput:endl;if(number0)cout-;number=-number;)convert(number);coutendl;return 0;)void c

39、onvert(int n)int i;chare;if(i=n/10)!=0)convert(i);c=n%10+0;cout c;4-11、#include using namespace std;int main()int f(int);int n,s;coutinput the number n:;cinn;s=f(n);coutThe result is sendl;return 0;)int f(int n);if(n=l)return 1;elsereturn(n*n+f(n-l);)4-12#include#include using namespace std;#define

40、S(a,b,c)(a+b+c)/2#define AREA(a,bzc)sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,bzc)-b)*(S(a,b,c)-C)int main()float a,b,c;coutinput a,b,c:;cin abc;if(a+bc&a+cb&b+ca)coutarea=,AREA(a,b/c)endl;elsecoutHlt is not a triangle!endl;return 0;4-14#include using namespace std;/#define LETTER 1int main()char c;cinc;#if L

41、ETTERif(c=a&c=A&c#include using namespace std;#define CHANGE 1int main()char ch40;coutinput text:endl;gets(ch);#if(CHANGE)for(int i=0;i=a&chi,A&chiZ)chi+=l;else if(chi=z,|chi=Z)chi-=25;)#endifcoutoutput:endlchendl;return 0;4-16-1 N#include using namespace std;int a;int main()extern int power(int);in

42、t b=3,c,d,m;coutenter an integer a and its powerm:endl;cinam;c=a*b;couta,*b=cendl;d=power(m);couta*m n=dendl;return 0;4-16-2、extern int a;int power(int n)int izy=l;for(i=l;i=n;i+)y*=a;return y;)第五章51、#include include using namespace std;include int main()int i,j,n 间 101;for(i=l;i=100;i+)ai=i;al=0;fo

43、r(i=2;isqrt(100);i+)for(j=i+l;j=100;j+)if(ai!=0&aj!=O)if(aj%ai=0)aj=O;coutendl;for(i=l,n=0;i=100;i+)if(ai!=0)coutsetw(5)ain+;if(n=10)coutendl;n=0;)coutendl;return 0;)52、#include using namespace std;/include int main()int i,j,min,temp,coutenter data:endl;for(i=l;i=10;i+)coutai=;cinai;输入10个数int numjj;

44、)coutarray a:Hendl;coutendlTheoriginalfor(i=0;i10;i+)numbers:Hendl;coutaifor(i=l;ia9)for(i=l;i=9;i+)以下8 行a10=num;是 对 10个数排序elsemin=i;for(i=0;i10;i+)for(j=i+l;jnum)if(aminaj)min=j;for(j=9;j=i;j-)temp=ai;以下3aj+l=aU;行将ai+la10中最小者与a i对换ai=num;ai=amin;break;amin=temp;)coutendlThesorted)numbers:Hendl;cout

45、Now,array a:endl;for(i=l;i=10;i+)/输出已for(i=0;ill;i+)排好序的10个数coutaicoutaicoutendl;coutendl;return 0;return 0;)5-5、#include 5-3、#include using namespace std;using namespace std;int main()int main()const int n=5;int a33,sum=0;int an,i,temp;int ij;coutenter array a:endl;coutenter data:endl;for(i=0;in;i+

46、)for(i=0;i3;i+)cinai;for(j=0;j3;j+)coutHarray a:endl;cinaij;for(i=0;in;i+)for(i=0;i3;i+)coutaisum=sum+aii;for(i=0;in/2;i+)循环的coutsum=sumendl;作用是将对称的元素的值互换return 0;temp=ai;)ai=an-i-l;5-4、#include an-i-l=temp;using namespace std;)int main()coutendlNow,array a:endl;intall=l,4,6,9,13,16,19,28,40,100;for

47、(i=0;i#include#include using namespace std;int main()const int n=ll;int i,jzann;for(i=l;in;i+)aii=l;ail=l;for(i=3;in;i+)for(j=2;j=i-l;j+)aiD=ai-lU-l+ai-lU;for(i=l;in;i+)for(j=l;j=i;j+)coutsetw(5)aij#include using namespace std;int main()const int n=4,m=5;假设数组为 4行 5 列int i,j,anm,max,maxj;bool flag;fo

48、r(i=0;in;i+)输入数组for(j=O;jm;j+)cinaij;for(i=0;in;i+)max=ai0;maxj=0;for(j=O;jmax)max=aij;将本行的最大数存放在max中maxj=j;将最大数所在的列号存放在maxj中)flag=true;先假设是鞍点,以flag为真代表for(int k=0;kakmaxj)将最大数和其同列元素相比flag=false;如果 max 不是同列最小,表示不是鞍点令flag为假continue;if(flag)如果 flagl 为真表示是鞍点coutaim axj=maxendl;输出鞍点的值和所在行列号break;)if(!fl

49、ag)如果flag为假表示鞍点不存在coutHlt does not exist!endl;return 0;)5-8、#include using namespace std;int main()const int n=7;int i,numbei;top,bott,mid,loca,am;bool flag=true,sign;char c;coutenter data:endl;cina0;i=l;while(i=ai-l)i+;elsecoutenter this data again:;)coutendl;for(i=0;in;i+)coutaicoutendl;while(flag

50、)coutinput number to look for:;cinnumber;sign=false;top=0;/top是查找区间的起始位置bott=n-l;/bott是查找区间的最末位置if(numberan-l)要查的数不在查找区间内loca=-l;/表示找不到while(!sign)&(top=bott)mid=(bott+top)/2;if(number=amid)loca=mid;coutFind number/itsposition is loca+lendl;sign=true;)else if(numberamid)bott=mid-l;elsetop=mid+l;)if(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁