《C++程序设计教程 第2版》教学素材习题05答案.docx
《《C++程序设计教程 第2版》教学素材习题05答案.docx》由会员分享,可在线阅读,更多相关《《C++程序设计教程 第2版》教学素材习题05答案.docx(15页珍藏版)》请在冰豆网上搜索。
《C++程序设计教程第2版》教学素材习题05答案
习题5答案
1.参考答案
#include
floataverage(floata,floatb,floatc,floatd)
{return(a+b+c+d)/4;}
voidmain()
{
floata,b,c,d;
cout<<"请输入四个数:
"<cin>>a>>b>>c>>d;
cout<<"四个数的平均值为:
";
cout<}
2.参考答案
#include
intodd(inta)
{
if(a%2)return1;
elsereturn0;
}
voidmain()
{
inta,oddsum=0,evensum=0;
cout<<"请输入正整数,以-1作为结束:
"<cin>>a;
while(a!
=-1)
{
if(odd(a))oddsum++;
elseevensum++;
cin>>a;
}
cout<<"奇数个数为:
"<cout<<"偶数个数为:
"<}
3.参考答案
#include
#include
#definePI3.1415926
floatdistance(floatx1,floatx2,floaty1,floaty2)
{
floatdist=0;
returnsqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
voidfun(floatx1,floatx2,floaty1,floaty2,float&r,float&d,float&c,float&area)
{
r=distance(x1,x2,y1,y2);
d=2*r;
c=2*PI*r;
area=PI*r*r;
}
voidmain()
{
floatx1,x2,y1,y2,r,d,c,area;
cout<<"请输入圆心和圆上一点的坐标:
"<cin>>x1>>y1>>x2>>y2;
fun(x1,x2,y1,y2,r,d,c,area);
cout<<"圆的半径为:
"<"<<<"圆的周长为:
"<"<
}
4.参考答案
#include
doublefact(intn)
{
inti;
doublef=1;
for(i=1;i<=n;i++)
f*=i;
return(f);
}
doublecom(intn,intk)
{
return(fact(n)/(fact(k)*fact(n-k)));
}
voidmain()
{
intn,k;
cout<<"请输入n和k的值(n>k):
"<cin>>n>>k;
cout<<"C("<}
5.参考答案
#include
#include
doubleex(doublex,doubleeps)
{
inti=1;
doublee=1,t=1;
while(fabs(t)>eps)
{
t=t*x/i;
e=e+t;
i++;
}
return(e);
}
voidmain()
{
doublex,eps;
cout<<"请输入x和eps的值:
"<cin>>x>>eps;
cout<<"e**x"<}
6.参考答案
#include
#include
intisprime(intx)
{
intk,i;
k=sqrt(x);
for(i=2;i<=k;i++)
if(x%i==0)break;
if(i>=k+1)return
(1);
elsereturn(0);
}
voidmain()
{
intn,k=0;
for(n=2;n<=1000;n++)
if(isprime(n))
{
cout<k++;
if(k%5==0)cout<}
cout<}
7.参考答案
#include
voidprint(intn)
{
for(inti=1;i<=n/2;i++)
if(n%i==0)cout<
cout<}
voidwanshu(intn)
{
inta,s=0;
a=n/2;
for(inti=1;i<=a;i++)
if(n%i==0)s+=i;
if(s==n)
{
cout<print(n);
}
}
voidmain()
{
for(inti=1;i<=1000;i++)
wanshu(i);
}
8.参考答案
#include
intmin(intx,inty)//重载函数1
{
return(xx:
y);
}
floatmin(floatx,floaty)//重载函数2
{
return(xx:
y);
}
doublemin(doublex,doubley)//重载函数3
{
return(xx:
y);
}
voidmain()
{
intm=6,n=8;
cout<"<floata=4.8f,b=6.3f;
cout<"<doublex=7.87,y=9.24;
cout<"<}
9.参考答案
#include
inlinefloatmax(floatx,floaty,floatz)
{
floatt=x>y?
x:
y;
return(t>z?
t:
z);
}
voidmain()
{
floatm,n,k;
cout<<"请输入三个实数:
";
cin>>m>>n>>k;
cout<"<}
10.参考答案
#include
#include
floatfac(floatn=10)
{
floatf=1;
if(n<0)
{
cout<<"n<0,dataerror!
"<exit(-1);
}
elseif(n==0||n==1)
f=1;
else
f=n*fac(n-1);
return(f);
}
voidmain()
{
floatn,y;
cout<<"inputarealnumber:
"<cin>>n;
y=fac(n);
cout<="<y=fac();//没有参数缺省为10
cout<<10<<"!
="<}
11.参考答案
#include
voidprdrev(intx)//反向输出
{
if(x>0)
{
cout<prdrev(x/10);
}
}
voidmain()
{
intx;
cout<<"请输入一个整数:
";
cin>>x;
cout<<"反向输出:
";
prdrev(x);
cout<}
12.参考答案
#include
intfib(intn)
{
intf;
if(n==1||n==2)
f=1;
else
f=fib(n-1)+fib(n-2);
returnf;
}
voidmain()
{
intn;
cout<<"请输入n的值:
"<cin>>n;
cout<<"Fibonacci数列的前"<"<for(inti=1;i<=n;i++)
cout<}
13.参考答案
#include
voidmain()
{
intx,n;
floatp(int,int);
cout<<"Pleaseinputn&x:
\n";
cin>>n>>x;
cout<<"n="<cout<<"P("<}
floatp(intn,intx)
{
floatf;
if(n==0)
f=1;
elseif(n==1)
f=x;
else
f=((2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x))/n;
returnf;
}
14.参考答案
#include
#include
voiddec_to_bin(intnum,intbase);
voidmain()
{
intdecnum,base=2;
cout<<"请输入一个十进制数:
";
cin>>decnum;
cout<cout<<"十进制"<dec_to_bin(decnum,base);
cout<<"二进制"<}
voiddec_to_bin(intnum,intbase)
{
if(num>0)
{
dec_to_bin(num/base,base);
cout<}
}
15.参考答案
#include
voidPrintTriangle_1(intn)
{
for(inti=1;i<=n;i++)
{for(intj=1;j<=i;j++)
cout<<"*";
cout<}
}
voidPrintTriangle_2(intn)
{
for(inti=1;i<=n;i++)
{
for(intj=1;j<=(n-i);j++)
cout<<"";//两个空格
for(intk=1;k<=(2*i-1);k++)
cout<<"*";//*前有一个空格
cout<}
}
voidmain()
{
intn;
cout<<"请输入要打印的三角形图形的行数:
";
cin>>n;
PrintTriangle_1(n);
PrintTriangle_2(n);
}
16.参考答案
#include
doublef(doublex)
{
return(x*(x+1));
}
doubleintegral(doublea,doubleb,doublen)
{
doubleh=(b-a)/n,sum=0,i;
for(i=a;i
sum+=f(i);
return(sum*h);
}
voidmain()
{
doublen,sum,a,b;
cout<<"请输入积分的上限a、下限b及划分的矩形块数n:
"<cin>>a>>b>>n;
sum=integral(a,b,n);
cout<<"积分值为:
"<}