《c++程序设计》谭浩强课后习题答案_第1页
《c++程序设计》谭浩强课后习题答案_第2页
《c++程序设计》谭浩强课后习题答案_第3页
《c++程序设计》谭浩强课后习题答案_第4页
《c++程序设计》谭浩强课后习题答案_第5页
已阅读5页,还剩126页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章

1.5题

#include<iostream>

usingnamespacestd;

intmain()

(

coutvv”This“vv”is”;

cout«,,a',«,,C-H-H-

cout«Hprogram.H;

return0;

1.6题

#include<iostream>

usingnamespacestd;

intmain()

(

inta,b,c;

a=10;

b=23;

c=a+b;

cout«na+b=n;

cout«c;

cout«endl;

return0;

}

1.7七题

#include<iostream>

usingnamespacestd;

intmain()

(

inta,b,c;

intf(intx,inty,intz);

cin»a»b»c;

c=fifa,b,c);

cout«c«endl;

return0;

}

intf(intx,inty,intz)

(

intm;

if(x<y)m=x;

elsem=y;

if(z<m)m=z;

retum(m);

}

1.8题

#include<iostream>

usingnamespacestd;

intmain()

(

inta,b,c;

cin»a»b;

c=a+b;

cout«,,a4-b="«a+b«endl;

return0;

}

1.9题

#include<iostream>

usingnamespacestd;

intmain()

{

inta,b,c;

intadd(intx,inty);

cin»a»b;

c=add(a,b);

cout«na+b=n«c«endl;

return0;

)

intadd(intx,inty)

{intz;

z=x+y;

return(z);

}

2.3题

#include<iostream>

usingnamespacestd;

intmain()

{charcl='a',c2='b',c3='c',c4='\10r,c5='\l16;

cout«c1<<c2«c3«,\n,;

cout«,,\t\bn«c4«,\t'«c5«'\n,;

return0;

}

2.4题

#include<iostream>

usingnamespacestd;

intmain()

{charcl='C,c2='+',c3='+';

cout«nIsay:\HH«cl«c2«c3«,\n,;

cout«n\t\tH«"Hesays:\"C++isveryinteresting!\""«

return0;

}

2.7题

#include<iostream>

usingnamespacestd;

intmain()

{inti,j,m,n;

i=8;

j=10;

m=++i+j++;

n=(++i)+("Hj)+m;

cout«i«,\t,«j«'\t,«m«,\t,«n«endl;

return0;

)

2.8题

#include<iostream>

usingnamespacestd;

intmain()

{charcl-C,c2-h\c3-i\c4='n\c5-a*;

c1+=4;

c2+=4;

c3+=4;

c4+=4;

c5+=4;

cout«npasswordis:n«c1«c2«c3«c4«c5«end1;

return0;

}

3.2题

#include<iostream>

#include<iomanip>

usingnamespacestd;

intmain()

{floath,r,l,s,sq,vq,vz;

constfloatpi=3.1415926;

cout«npleaseenterr,h:n;

cin»r»h;

l=2*pi*r;

s=r*r*pi;

sq=4*pi*r*r;

vq=3.0/4.0*pi*r*r*r;

vz=pi*r*r*h;

cout«setiosflags(ios::fixed)«setiosflags(ios::right)

«setprecision(2);

cout«nl=H«setw(lO)«l«endl;

cout«Ms=H«setw(10)«s«endl;

cout«nsq="«setw(lO)«sq«endl;

cout«nvq=n«setw(10)«vq«endl;

cout«nvz=n«setw(10)«vz«endl;

return0;

}

3.3题

#include<iostream>

usingnamespacestd;

intmain()

{floatc,f;

coutw”请输入一个华氏温度:“;

cin»f;

c=(5.0/9.0)*(A32);〃注意5和9要用实型表示,否则5/9值为0

cout«"摄氏温度为:"wcwendl;

return0;

};

3.4题

#include<iostream>

usingnamespacestd;

intmain()

{charcl,c2;

coutw”请输入两个字符cl,c2:M;

cl=getchar();〃将输入的第一个字符赋给cl

c2=getchar();〃将输入的第二个字符赋给c2

coutvv”用putchar函数输出结果为:";

putchar(c1);

putchar(c2);

cout«endl;

cout«"用cout语句输出结果为:";

cout«c1«c2«endl;

return0;

}

3.4题另一•解

#include<iostream>

usingnamespacestd;

intmain()

{charcl,c2;

cout«”请输入两个字符cl,c2:M;

cl=getchar();〃将输入的第一个字符赋给cl

c2=getchar();〃将输入的第二个字符赋给c2

coutvv”用putchar函数输出结果为:“;

putchar(cl);

putchar(44);

putchar(c2);

cout«endl;

coutvv”用cout语句输出结果为:“;

cout«c1«H,H«c2«endl;

return0;

}

3.5题

#include<iostream>

usingnamespacestd;

intmain()

{charcl,c2;

intil,i2;〃定义为整型

coutvv”请输入两个整数il,i2:n;

cin»il»i2;

cl=il;

c2=i2;

coutw”按字符输出结果为:“vvclw",”v〈c2vvendl;

return0;

}

3.8题

#include<iostream>

usingnamespacestd;

intmain()

{inta=3,b=4,c=5,x,y;

cout«(a+b>c&&b==c)«endl;

cout«(a||b+c&&b-c)«endl;

cout«(!(a>b)&&!c||l)«endl;

cout«(!(x=a)&&(y=b)&&0)«endl;

cout«(!(a+b)+c-l&&b+c/2)«endl;

return0;

}

3.9题

include<iostream>

usingnamespacestd;

intmain()

{inta,b,c;

cout«npleaseenterthreeintegernumbers:";

cin»a»b»c;

if(a<b)

ifi[b<c)

cout«Hmax=H«c;

else

cout«nmax=H«b;

elseif(a<c)

cout«Hmax=H«c;

else

cout«nmax=M«a;

cout«endl;

return0;

}

3.9题另一解

#include<iostream>

usingnamespacestd;

intmain()

{inta,b,c,temp,max;

cout«npleaseenterthreeintegernumbers:";

cin»a»b»c;

temp=(a>b)?a:b;/*将a和b中的大者存入temp中*/

max=(temp>c)?temp:c;/*将a和b中的大者与c比较,最大者存入max

*/

cout«nmax=,,«max«endl;

return0;

|

3.10题

#include<iostream>

usingnamespacestd;

intmain()

{intx,y;

cout«nenterx:n;

cin»x;

if(x<l)

{y=x;

cout«Hx="«x«n,y=x=H«y;

}

elseif(x<10)//l<x<10

{y=2*x-l;

cout〈v”x="vvxvv”,y=2*x-1=H«y;

)

else//x>10

{y=3*x-ll;

cout«nx="«x«n,y=3*x-ll-*«y;

cout«endl;

return0;

}

3.11题

#include<iostream>

usingnamespacestd;

intmain()

{floatscore;

chargrade;

cout«npleaseenterscoreofstudent:";

cin»score;

while(score>100||score<0)

{cout«Hdataerror,enterdataagain.";

cin»score;

}

switch(int(score/l0))

{case10:

case9:grade=,A,;break;

case8:grade-B';break;

case7:grade-C*;break;

case6:grade='D';break;

default:grade-E';

}

cout«nscoreisn«score«n,gradeis"«grade«endl;

return0;

}

3.12题

#include<iostream>

usingnamespacestd;

intmain()

{longintnum;

intindiv,ten,hundred,thousand,tenthousand,place;

/*分别代表个位,十位,百位,千位,万位和位数

*/

cout«nenteraninteger(0-99999):u;

cin»num;

if(num>9999)

place=5;

elseif(num>999)

place=4;

elseif(num>99)

place=3;

elseif(num>9)

place=2;

elseplace=l;

cout«nplace=,,«place«endl;

〃计算各位数字

ten_thousand=num/10000;

thousand=(int)(num-ten_thousand*10000)/1000;

hundred=(int)(num-ten_thousand*l0000-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);

cout«noriginalorder:

switch(place)

{case

5:cout«ten_thousand«H,"«thousand«,,;,«hundred«,,,"«ten«";,«indiv«en

dl;

cout«"reverseorder:n;

cout«indiv«ten«hundred«thousand«ten_thousand«endl;

break;

case4:cout«thousand«,,,''<<hundred«,,,,,«ten«*7,«indiv«endl;

cout«"reverseorder:";

cout«indiv«ten«hundred«thousand«endl;

break;

case3:cout«hundred«,,,',<<ten«",,,<<indiv«endl;

cout«"reverseorder:n;

cout«indiv«ten«hundred«endl;

break;

case2:cout«ten«H,"«indiv«endl;

cout«"reverseorder:";

cout«indiv«ten«endl;

break;

caseI:cout«indiv«endl;

cout«"reverseorder:H;

cout«indiv«endl;

break;

}

return0;

}

313题

#include<iostream>

usingnamespacestd;

intmain()

{longi;//i为利润

floatbonus,bon1,bon2,bon4,bon6,bon10;

bonl=100000*0.1;〃利润为10万元时的奖金

bon2=bon1+100000*0.075;//利润为20万元时的奖金

bon4=bon2+100000*0.05;〃利润为40万元时的奖金

bon6=bon4+100000*0.03;〃利润为60万元时的奖金

bonl0=bon6+400000*0.015;〃利润为100万元时的奖金

cout«"enteri:H;

cin»i;

if(i<=100000)

bonus=i*0.1;〃利润在10万元以内按10%提成奖金

elseif(i<=200000)

bonus=bon1+(i-l00000)*0.075;〃利润在10万元至20万时的奖金

elseif(i<=400000)

bonus=bon2+(i-200000)*0.05;〃利润在20万元至40万时的奖金

elseif(i<=600000)

bonus=bon4+(i-400000)*0.03;〃利润在40万元至60万时的奖金

elseif(i<=1000000)

bonus=bon6+(i-600000)*0.015;〃利润在60万元至100万时的奖金

else

bonus=bon10+(i-1000000)*0.01;〃利润在100万元以上时的奖金

cout«nbonus=M«bonus«endl;

return0;

}

3.13题另解

#include<iostream>

usingnamespacestd;

intmain()

{longi;

floatbonus,bon1,bon2,bon4,bon6,bon10;

intc;

bonl=100000*0.1;

bon2=bon1+100000*0.075;

bon4=bon2+200000*0.05;

bon6=bon4+200000*0.03;

bon10=bon6+400000*0.015;

cout«nenteri:";

cin»i;

c=i/100000;

if(c>10)c=10;

switch(c)

{case0:bonus=i*0.1;break;

case1:bonus=bonl+(i-100000)*0.075;break;

case2:

case3:bonus=bon2+(i-200000)*0.05;break;

case4:

case5:bonus=bon4+(i-400000)*0.03;break;

case6:

case7:

case8:

case9:bonus=bon6+(i-600000)*0.015;break;

case10:bonus=bon10+(i-1000000)*0.01;

)

cout«nbonus="«bonus«endl;

return0;

)

3.14题

#include<iostream>

usingnamespacestd;

intmain()

(intt,a,b,c,d;

cout«nenterfournumbers:H;

cin»a»b»c»d;

cout«na=n«a«n,b=H«b«H,c=,,«c«,,,d=,,«d«endl;

if(a>b)

{t=a;a=b;b=t;}

if(a>c)

{t=a;a=c;c=t;}

if(a>d)

{t=a;a=d;d=t;}

if(b>c)

{t=b;b=c;c=t;}

if(b>d)

{t=b;b=d;d=t;}

if(c>d)

{t=c;c=d;d=t;}

cout«nthesortedsequence:H«endl;

cout«a«H,H«b«M,H«c«n,n«d«endl;

return0;

)

3.15题

#include<iostream>

usingnamespacestd;

intmain()

{intp,r,n,m,temp;

cout«npleaseentertwopositiveintegernumbersn,m:,r

cin»n»m;

if(n<m)

{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;

cout«uHCF="«n«endl;

cout<<uLCD=n«p/n«endl;//p是原来两个整数的乘积

return0;

3.16题

#include<iostream>

usingnamespacestd;

intmain()

{charc;

intletters=0,space=0,digit=0,other=0;

cout«nenteroneline::H«endl;

while((c=getchar())!=,\n,)

{if(c>=fa'&&cv=N||c>=A&&c<='Z,)

letters-H-;

elseif(c=**)

space++;

elseif(c>=O&&c<=9)

digit++;

else

other++;

)

cout«,,letter:n«letters<<",space:n«space«n,digit:n«digit«H,

other:"«other«endl;

return0;

}

3.17题

#include<iostream>

usingnamespacestd;

intmain()

{inta,n,i=1,sn=0,tn=0;

cout«na,n=:H;

cin»a»n;

while(i<=n)

{tn=tn+a;〃赋值后的tn为i个a组成数的值

sn=sn+tn;〃赋值后的sn为多项式前i项之和

a=a*10;

++i;

cout«na+aa+aaa+...=,,«sn«endl;

return0;

)

3.18题

#include<iostream>

usingnamespacestd;

intmain()

{floats=0,t=l;

intn;

fbr(n=l;n<=20;n++)

(

t=t*n;〃求n!

s=s+t;//将各项累加

)

cout«H1!+2!+...+20!-,«s«endl;

return0;

)

3.19题

#include<iostream>

usingnamespacestd;

intmain()

{intij,k,n;

cout«Hnarcissusnumbersare:n«endl;

for(n=100;n<1000;n++)

{i=n/100;

j=n/10-i*10;

k=n%10;

if(n=i*i*i+j*j*j+k*k*k)

cout«n«MM;

)

cout«endl;

return0;

}

3.20题

#include<iostream>

usingnamespacestd;

intmain()

(constintm=1000;//定义寻找范围

intkI,k2,k3,k4,k5,k6,k7,k8,k9,k10;

inti,a,n,s;

fbr(a=2;a<=m;a++)〃a是2-1000之间的整数,检查它是否为完数

{n=0;〃n用来累计a的因子的个数

s=a;〃s用来存放尚未求出的因子之和,开始时等于a

for(i=l;i<a;i++)//检查i是否为a的因子

if(a%i=0)//如果i是a的因子

{n++;〃11加1,表示新找到一个因子

s=s-i;〃s减去已找到的因子,s的新值是尚未求出的因子

之和

switch(n)//将找到的因子赋给kl,..”kl0

{case1:

kl=i;break;//找出的笫1个因子赋给kl

case2:

k2=i;break;//找出的笫2个因子赋给k2

case3:

k3=i;break;//找出的笫3个因子赋给k3

case4:

k4=i;break;//找出的笫4个因子赋给k4

case5:

k5=i;break;//找出的笫5个因子赋给k5

case6:

k6=i;break;//找出的笫6个因子赋给k6

case7:

k7=i;break;//找出的笫7个因子赋给k7

case8:

k8=i;break;//找出的笫8个因子赋给k8

case9:

k9=i;break;//找出的笫9个因子赋给k9

case10:

kl0=i;break;//找出的笫10个因子赋给klO

}

if(s==O)//s=0表示全部因子都已找到了

{cout«a«"isa完数”vvendl;

cout«'*itsfactorsare:“;

if(n>l)cout«kl«",n«k2;//n>l表示a至少有2个因子

if(n>2)cout«H,"«k3;//n>2表示至少有3个因子,故应再输出一个因子

if(n>3)cout<v","vvk4;〃n>3表示至少有4个因子,故应再输出•个因子

if(n>4)coutvv”,”vvk5;//以下类似

if(n>5)cout«\"«k6;

if(n>6)cout«n,"«k7;

if(n>7)cout«H,n«k8;

if(n>8)cout«,,,,,«k9;

if(n>9)cout«M,M«klO;

cout«endl«endl;

return0;

}

3.20题另一解

#include<iostream>

usingnamespacestd;

intmain()

{intm,s,i;

for(m=2;m<1000;m-H4-)

{s=0;

for(i=l;i<m;i++)

if((m%i)==0)s=s+i;

if(s==m)

{cout«m«"isa完数”vvendl;

cout«nitsfactorsare:";

for(i=l;i<m;i++)

if(m%i==0)cout«i«nM;

cout«endl;

}

)

return0;

}

3.20题另一解

#include<iostream>

usingnamespacestd;

intmain()

{intk[ll];

inti,a,n,s;

for(a=2;a<=1000;a-H-)

{n=0;

s=a;

for(i=l;i<a;i++)

if((a%i)==0)

{n++;

s=s-i;

k[n]=i;//将找到的因子赋给k[l]—k[10]

)

if(s=0)

{cout«a«Misa完数”vvendl;

cout«"itsfactorsare:";

for(i=l;i<n;i++)

cout«k[i]«nH;

cout«k[n]«endl;

return0;

3.21题

#include<iostream>

usingnamespacestd;

intmain()

{inti,t,n=20;

doublea=2,b=l,s=0;

for(i=];iv=n;i++)

{s=s+a/b;

t=a;

a=a+b;//将前一项分子与分母之和作为下一项的分子

b=t;//将前一项的分子作为下一项的分母

}

cout«nsum=H«s«endl;

return0;

)

3.22题

#include<iostream>

usingnamespacestd;

intmain()

{intday,xl,x2;

day=9;

x2=l;

while(day>0)

{x1=(x2+1)*2;//第1天的桃子数是第2天桃子数加1后的2倍

x2=xl;

day—;

}

cout«ntotal=,,«x1«endl;

return0;

)

3.23题

#include<iostream>

#include<cmath>

usingnamespacestd;

intmain。

{floata,x0,xl;

cout«nenterapositivenumber:";

cin»a;//输入a的值

x0=a/2;

xl=(x0+a/x0)/2;

do

{xO=xl;

xl=(x0+a/x0)/2;

}

while(fabs(xO-xl)>=le-5);

cout«nThesquarerootofn«a«His"«xl«endl;

return0;

)

3.24题

#include<iostream>

usingnamespacestd;

intmain()

{inti,k;

for(i=0;i<=3;i-H-)//输出上面4行*号

{for(k=0;k<=2*i;k++)

cout«M*M;//输出*号

cout«endl;〃输出完一行*号后换行

)

for(i=0;i<=2;i-H-)//输出下面3行*号

{for(k=0;k<=4-2*i;k++)

cout«M*H;//输出*号

cout«endl;//输出完一行*号后换行

}

return0;

}

3.25题

#includev沁stream〉

usingnamespacestd;

intmain()

{chari,j,k;/*i是a的对手;j是b的对手;k是c的对手*/

for(i=,X,;i<=,Z,;i++)

for0=X;jv='Z;j")

if(i!=j)

for(k=,X,;k<='Z';k++)

if(i!=k&&j!=k)

if(i!=X&&k!='X'&&k!='Z')

cout«nA-n«i«HB-n<<j«HC-M«k«endl;

return0;

4.1题

#include<iostream>

usingnamespacestd;

intmain()

{inthcf{int,int);

intlcd(int,int,int);

intu,v,h,l;

cin»u»v;

h=hcf{u,v);

cout«nH.C.F="«h«endl;

l=lcd(u,v,h);

cout«,,L.C.D=n«K<endl;

return0;

)

inthcfifintu,intv)

{intt,r;

if(v>u)

{t=u;u=v;v=t;}

while((r=u%v)!=O)

{u=v;

v=r;}

retum(v);

}

intlcd(intu,intv,inth)

{retum(u*v/h);

4.2题

#include<iostream>

#include<math.h>

usingnamespacestd;

floatxl,x2,disc,p,q;

intmain()

{voidgreater_than_zero(float,float);

voidequal_to_zero(float,float);

voidsmaller_than_zero(float,float);

floata,b,c;

cout«ninputa,b,c:";

cin»a»b»c;

disc=b*b-4*a*c;

cout«nroot:H«endl;

if(disc>0)

greater_than_zero(a,b);

cout«nx1=n«x1«,,,x2=,,«x2«endl;

}

elseif(disc==O)

{equal_to_zero(a,b);

cout«nxl=n«xK<n,x2=n«x2«endl;

}

else

{smaller_than_zero(a,b);

cout«,,xl=,'«p«n+,,«q«"i,,«endl;

cout«,,x2-,«p«,,-,,«q«"i"«endl;

}

return0;

)

voidgreater_than_zero(floata,floatb)/*定义-个函数,用来求disc>0时方

程的根*/

{xl=(-b+sqrt(disc))/(2*a);

x2=(-b-sqrt(disc))/(2*a);

}

voidequal_to_zero(floata,floatb)/*定义,个函数,用来求disc=0时方程

的根*/

{

x1=x2=(-b)/(2*a);

}

voidsmaller_than_zero(floata,floatb)/*定义个函数,用来求disc〈0时方

程的根*/

{

p=-b/(2*a);

q=sqrt(-disc)/(2*a);

}

4.3题

#include<iostream>

usingnamespacestd;

intmain()

(intprime(int);/*函数原型声明*/

intn;

cout«ninputaninteger:M;

cin»n;

if(prime(n))

cout«n«Hisaprime."«endl;

else

cout«n«Misnotaprime.u«endl;

return0;

|

intprime(intn)

{intflag=l,i;

for(i=2;i<n/2&&flag==l;i++)

if(n%i=0)

flag=0;

retum(flag);

)

4.4题

#include<iostream>

usingnamespacestd;

intmain()

{intfac(int);

inta,b,c,sum=0;

cout«nentera,b,c:M;

cin»a»b»c;

sum=sum+fac(a)+fac(b)+fac(c);

cout«a«M!+"«b«,,!+"«c«H!=,,«sum«endl;

return0;

}

intfac(intn)

{intf^l;

for(inti=l;i<=n;i++)

f=f*i;

returnf;

)

4.5题

#include<iostream>

#include<cmath>

usingnamespacestd;

intmain()

{doublee(double);

doublex,sinh;

cout«nenterx:H;

cin»x;

sinh=(e(x)+e(-x))/2;

cout«nsinh("«x«M)=H«sinh«endl;

return0;

}

doublee(doublex)

{returnexp(x);}

4.6题〃牛顿迭代法

#include<iostream>

#include<cmath>

usingnamespacestd;

intmain()

{doublesolut(double,double,double,double);

doublea,b,c,d;

cout«ninputa,b,c,d:n;

cin»a»b»c»d;

cout«,,x-,«solut(a,b,c,d)«endl;

return0;

}

doublesolut(doublea,doubleb,doublec,doubled)

{doublex=l,x0,f,fl;

do

{x0=x;

f=((a*xO+b)*xO+c)*xO+d;

fl=(3*a*x0+2*b)*x0+c;

x=x0-f7fl;

}

while(fabs(x-xO)>=le-5);

retum(x);

|

intGcd_2(inta,intb)//欧儿里德算法求a,b的最大公约数{if(a<=0||b<=0)//预防

错误return0;inttemp;while(b>0)//b总是表示较小的那个数,若不是则交

换a,b的值{temp=a%b;〃迭代关系式a=b;〃a是那个胆小鬼,始终跟在

b的后面b=temp;//b向前冲锋占领新的位置}returna;}

4.7题

#include<iostream>

#include<cmath>

usingnamespacestd;

intmain()

{voidgodbaha(int);

intn;

cout«ninputn:";

cin»n;

godbaha(n);

return0;

)

voidgodbaha(intn)

{intprime(int);

inta,b;

fbr(a=3;a<=n/2;a=a+2)

{if(prime(a))

{b=n-a;

if(prime(b))

cout«n«n=M«a«**+n«b«endl;}

intprime(intm)

{inti,k=sqrt(m);

fbr(i=2;i<=k;i4-+)

if(m%i==0)break;

if(i>k)return1;

elsereturn0;

}

4.8题//递归法

#include<iostream>

usingnamespacestd;

intmain()

{intx,n;

floatp(int,int);

cout«ninputn&x:n;

cin»n»x;

cout«nn=n«n«H,x=M«x«endl;;

cout«uPH«n«H(x)=H«p(n,x)«endl;

return0;

}

floatp(intn,intx)

{if(n==0)

retum(l);

elseif(n==l)

retum(x);

else

retum(((2*n-1)*x-p((n-1),x)-(n-1)*p((n-2),x))/n);

}

4.9题〃汉诺塔问题

#include<iostream>

usingnamespacestd;

intmain()

{voidhanoi(intn,charone,chartwo,charthree);

intm;

cout«ninputthenumberofdiskes:";

cin»m;

cout«nThestepsofmoving"«m«"disks:n«endl;

hanoi(m/A,,,B,;C,);

return0;

}

voidhanoi(intn,charone,chartwo,charthree)

〃将n个盘从one座借助two座,移到three座

{voidmove(charx,chary);

if{n==l)move(one,three);

else

{hanoi(n-1,one,three,two);

move(one,three);

hanoi(n-1,two,one,three);

}

}

voidmove(charx,chary)

{cout«x«n—>n«y«endl;}

4.10题

#include<iostream>

usingnamespacestd;

intmain()

{voidconvert(intn);

intnumber;

cout«ninputaninteger:";

cin»number;

cout«noutput:H«endl;

if(number<0)

{cout«H-H;

number=-number;

)

convert(number);

cout«endl;

return0;

)

voidconvert(intn)〃感觉根本想不出的么

{inti;

charc;

if((i=n/10)!=0)

convert(i);

c=n%10+'0';

cout«nH«c;

)

4.11题

#include<iostream>

usingnamespacestd;

intmain()

{intf(int);

intn,s;

cout«ninputthenumbern:";

cin»n;

s=f(n);

cout«nTheresultis"«s«endl;

return0;

}

intfifintn)

(;

if(n=l)

return1;

else

return(n*n+f(n-l));

4.12题

#include<iostream>

#include<cmath>

usingnamespacestd;

#defineS(a,b,c)(a+b+c)/2

#defineAREA(a,b,c)sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(S(a,b,c)-c))

intmain()

{floata,b,c;

cout«ninputa,b,c:";

cin»a»b»c;

if(a+b>c&&a+c>b&&b+c>a)

cout«narea=M«AREA(a,b,c)«endl;

else

cout«nItisnotatriangle!n«endl;

return0;

)

4.14题

#include<iostream>

usingnamespacestd;

//#defineLETTER1

intmain()

{charc;

cin»c;

#ifLETTER

iRc>=n&&c<=,z,)

c=c-32;

#else

iRc>=A&&c<=Z)

c=c+32;

#endif

cout«c«endl;

return0;

)

4.15题

#include<iostream>

usingnamespacestd;

#defineCHANGE1

intmain()

{charch[40];

cout«ninputtext:**«endl;;

gets(ch);

#if(CHANGE)

{for(inti=0;i<40;i++)

{if(ch[i]!士\0’)

if(ch[i]>=,a'&&ch[i]<'z,||ch[i]>'A,&&ch[i]<,Z,)

ch[i]+=l;

elseif(ch[i]=,z*||ch[i]=,Z,)

ch[i]-=25;

}

}

#endif

cout«noutput:n«endl«ch«endl;

return0;

}

4.16题file

#include<iostream>

usingnamespacestd;

inta;

intmain()

{externintpower(int);

intb=3,c,d,m;

cout«nenteranintegeraanditspowerm:u«endl;

cin»a»m;

c=a*b;

cout«a«H*n«b«H="«c«endl;

d=power(m);

cout«a«n**,,«m«*-"«d«endl;

return0;

}

416题file

externinta;

intpower(intn)

{inti,y=l;

fbr(i=l;i<=n;iH-4-)

y*=a;

returny;

5.1题

#include<iostream>

usingnamespacestd;

intmain()

{cout〈v2vv-;

for(inti=3;i<=100;i++)

{boolt=true;

fbr(inta=2;a<i;a++)if(i%a=0){t=false;break;}

if(t)cout«i«f

return0;

}

#include<iostream>

#include<iomanip>

usingnamespacestd;

#include<math.h>

intmain()

{inti,j,n,a[101];

for(i=l;i<=100;i++)

a[i]=i;

a[l]=O;

for(i=2;i<sqrt(100);i-»-+)

for(j=i+l;j<=100;j++)

{if(a[i]!=O&&a[j]!=O)

if(a[j]%a[i]=O)

aU]=O;}

cout«endl;

for(i=1,n=O;i<=1()0;i++)

{if(a[i]!=O)

{cout<<setw(5)«a[i]«M**;

n++;}

if(n=10)

{cout«endl;

n=0;}

}

cout«endl;

return0;

)

5.2题

#include<iostream>

usingnamespacestd;

//#include<math.h>

intmain()

{inti,j,min,temp,a[l1];

cout«nenterdata:,,«endl;

fbr(i=l;i<=10;i++)

{cout«,,a[M«i«,,]=M;

cin»a[i];〃输入10个数

)

cout«endl«nTheoriginalnumbers:"«endl;;

fbr(i=1;i<=10;i-H-)

cout«a[i]«n//输出这10个数

cout«endl;;

fbr(i=l;i<=9;i++)//以下8行是对•10个数排序

{min=i;

for(j=i+1;j<=10;j++)

if(a[min]>a[j])min=j;

temp=a[i];〃以下3行将a[i+l]〜a[10]中最小者与a[i]对换

a[i]=a[min];

a[min]=temp;

}

cout«endl«nThesortednumbers:"«endl;

for(i=l;i<=10;i++)〃输出已排好序的10个数

cout«a[i]«"M;

cout«endl;

return0;

}

#include<iostream>

usingnamespacestd;

intmain()

{inta[10],e,k,t;

for(inti=0;i<10;i++){cin»a[i];}

fbr(inti=0;i<9;i++){k=i;for(t=i+l;t<10;t+4-){if(a[i]<a[t])k=t;}e=a[i];a[i]=a[k];a[k]=e;}

for(inti=0;i<10;i++){cout«a[i]«,

return0;

)

#include<iostream>

#include<iomanip>

usingnamespacestd;

intmain()

{inta[10][10];

fbr(inti=0;i<10;i++){fbr(intt=0;t<10;t++)a[i][t]=0;}

fbr(inti=0;i<10;i++)a[i][i]=l;

for(inti=0;i<10;i++)a[i][0]=l;

fbr(inti=2;i<10;i++){fbr(intt=1;t<=i-1;t++)a[i][t]=a[i-1][t-1]+a[i-1][t];}

fbr(inti=0;i<10;i++){for(intt=0;t<10;t++){if(a[i][t]!=0)cout«a[i][t]«,*;}cout«endl;}

return0;

}

我的第一个带指针的C++程序,呵呵〜〜

#include<iostream>

usingnamespacestd;

intmain()

{char*p;inti=0;

charc[100];

gets(c);

P=C;

while(*p!='\0'){i++;p++;}

cout«i;

return0;

}

5.3题

#include<iostream>

usingnamespacestd;

intmain()

{inta[3][3],sum=0;

intij;

cout«nenterdata:"«endl;;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

cin»a[i][j];

for(i=0;i<3;i++)

sum=sum+a[i][i];

cout«Hsum=M«sum«endl;

return0;

}

5.4题

#include<iostream>

usingnamespacestd;

intmain()

{inta[l1]={1,4,6,9,13,16,19,28,40,100};

intnum,ij;

cout«narraya:n«endl;

for(i=0;i<10;i++)

cout«a[i]«"**;

cout«endl;;

cout«ninsertdata:";

cin»num;

if(num>a[9])

a[10]=num;

else

{for(i=0;i<10;i++)

{if(a[i]>num)

{for(j=9;j>=i;j-)

a[j+l]=a[j];

a[i]=num;

break;

cout«nNow,arraya:n«endl;

for(i=O;i<ll;i-H-)

cout«a[i]«n

cout«endl;

return0;

}

5.5题

#include<iostream>

usingnamespacestd;

intmain()

{constintn=5;

inta[n],i,temp;

cout«nenterarraya:"«endl;

fbr(i=0;i<n;i++)

cin»a[i];

cout«narraya:H«endl;

fbr(i=0;i<n;i4-+)

cout«a[i]«nn;

for(i=0;i<n/2;i++)〃循环的作用是将对称的元素的值互换

{temp=a[i];

a[i]=a[n-i-l];

a[n-i-l]=temp;

)

cout«endl«MNow,arraya:n«endl;

fbr(i=0;i<n;i4-+)

cout«a[i]«n

cout«endl;

return0;

)

5.6题

#include<iostream>

#include<iomanip>

usingnamespacestd;

intmain()

{constintn=ll;

inti,j,a[n][n];

fbr(i=l;i<n;i++)

{a[i][i]=l;

a[i][l]=l;

}

fbr(i=3;i<n;i++)

for(j=2;j<=i-l;j++)

a[i]U]=a[i-l]U-l]+a[i-l]U];

for(i=l;i<n;i-H-)

{fbr(j=l;j<=i;j-H-)

cout«setw(5)«a[i][j]«M

cout«endl;

)

cout«endl;

return0;

}

5.7题

#include<iostream>

usingnamespacestd;

intmain()

{constintn=4,m=5;〃假设数组为4行5列

inti,j,a[n][m],max,maxj;

boolflag;

fbr(i=0;i<n;i++)〃输入数组

for(j=O;j〈m;j++)

cin»a[i]|j];

fbr(i=0;i<n;i++)

{max=a[i][0];maxj=0;

for(j=0;j<m;j4-+)〃找出第i行中的最大数

if(a[i][j]>max)

{max=a[i][j];〃将本行的最大数存放在max中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论