习题答案C++程序设计教程第三版朱红清华大学出版社.docx

上传人:b****2 文档编号:24495320 上传时间:2023-05-28 格式:DOCX 页数:83 大小:35.90KB
下载 相关 举报
习题答案C++程序设计教程第三版朱红清华大学出版社.docx_第1页
第1页 / 共83页
习题答案C++程序设计教程第三版朱红清华大学出版社.docx_第2页
第2页 / 共83页
习题答案C++程序设计教程第三版朱红清华大学出版社.docx_第3页
第3页 / 共83页
习题答案C++程序设计教程第三版朱红清华大学出版社.docx_第4页
第4页 / 共83页
习题答案C++程序设计教程第三版朱红清华大学出版社.docx_第5页
第5页 / 共83页
点击查看更多>>
下载资源
资源描述

习题答案C++程序设计教程第三版朱红清华大学出版社.docx

《习题答案C++程序设计教程第三版朱红清华大学出版社.docx》由会员分享,可在线阅读,更多相关《习题答案C++程序设计教程第三版朱红清华大学出版社.docx(83页珍藏版)》请在冰豆网上搜索。

习题答案C++程序设计教程第三版朱红清华大学出版社.docx

习题答案C++程序设计教程第三版朱红清华大学出版社

练习题

(1)

一、选择题

(1)D

(2)C(3)A(4)C(5)A

(6)B(7)D(8)B(9)D(10)D

一、问答题

练习题

(2)

一、选择题

(1)C

(2)D(3)D(4)D(5)D

(6)A(7)A(8)B(9)A(10)C

(11)D(12)C(13)D(14)B(15)A

(16)D(17)A(18)C(19)A(20)A

二、填空题

(1)22

(2)2(3)1(4)101(5)float

(6)double(7)true或1(8)1(9)n%10n/10%10n/100%10n/1000%10

(10)(a)sin(x)/(x-y)(b)sqrt(s*(s-a)*(s-b)*(s-c))(c)(a-b)*(a+b)(d)(x+y)/fabs(x-y)

练习题(3)

一、选择题

(1)A

(2)D3.C4.A5.C

6.A7.C8..D9.B10.D

11.D12.B13.A14.C

二、填空题

(1)5(4).133(3)235(4)1//1//3//default(5)20

三、编程题

//1.根据下面函数表达式编写一个程序,实现输入x的值后,能计算并输出相应的函数值y:

#include

usingnamespacestd;

intmain()

{doublex,y;

cout<<"请输入x:

";

cin>>x;

if(x<0)

y=x*x;

elseif(x>=0&&x<1)

y=2.5*x-1;

else

y=3*x+1;

cout<<"x="<

return0;

}

//2.设计一个程序,要求:

对从键盘输入的一个不多于5位的正整数,能输出它的位数并输出它的各位数字之和。

#include

usingnamespacestd;

intmain()

{

intx,count=0,sum=0;

cout<<"请输入x:

";

cin>>x;

cout<

while(x)

{

sum=sum+x%10;

x=x/10;

count++;

}

cout<

"<

return0;

}

//编程计算s=1!

+2!

+3!

+...+n!

,n的值从键盘输入,要求输出n和s的值。

#include

usingnamespacestd;

intmain()

{

intn;

doublet=1,s=0;

cout<<"请输入n:

";

cin>>n;

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

{

t=t*i;

s=s+t;

}

cout<<"n="<

return0;

}

//4.编程求之值,其中是一个数字,n表示的项数和其最后一项的位数。

例如:

2+22+222+2222+22222(此时n=5)。

#include

usingnamespacestd;

intmain()

{

intn,a;

doubles=0,t=0;

cout<<"请输入a和n:

";

cin>>a>>n;

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

{

t=t*10+a;

s=s+t;

}

cout<<"s="<

return0;

}

//5.利用公式:

编程计算的近似值,要求计算到最后一项的绝对值小于为止。

#include

#include

usingnamespacestd;

intmain()

{

intn=1,flag=1;

doublepi=1,t=1;

while(fabs(t)>1e-5)

{

flag=-flag;

t=flag*1.0/(2*n+1);

pi=pi+t;

n++;

}

cout<<"pi="<<4*pi<

return0;

}

//6.编程求出所有的"水仙花数"。

所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。

例如,153是水仙花数,因为。

#include

usingnamespacestd;

intmain()

{

inta,b,c;

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

{

a=i/100;

b=i/10%10;

c=i%10;

if(i==a*a*a+b*b*b+c*c*c)

cout<

}

return0;

}

//7.编程求满足以下条件的三位整数n,它除以11所得到的商等于n的各位数字的平方和,且其中至少有两位数字相同。

例如,131除以11的商为11,各位数字的平方和为11,所以它是满足条件的三位数。

#include

usingnamespacestd;

intmain()

{

inta,b,c;

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

{

a=i/100;

b=i/10%10;

c=i%10;

if(i/11==a*a+b*b+c*c&&(a==b||b==c||a==c))

cout<

}

return0;

}

//8.设计一个求两正整数m和n的最大公约数的程序。

m和n的值由键盘输入。

#include

usingnamespacestd;

intmain()

{

intm,n;

cout<<"请输入两个整数:

";

cin>>m>>n;

for(inti=m;i>=1;i--)

if(m%i==0&&n%i==0)

break;

cout<

"<

return0;

}

练习题(4)

一、选择题

(1)C2.B3.B4.B5.C

6.C7.B8.C9.D10.D

二、填空题

(1)23572.答案:

theresultis:

365

3.cmathfabs(term)(-1)*x*x/(n)/(n+1)

4.答案:

x=x/10n<=0n!

=invert(n)

5.first:

33//second:

515//third:

1815

6.答案:

37..-9//-18

三、编程题

//1.设计一个程序,要求输入三个整数,能求出其中的最大数并输出。

程序中必须用函数实现求两数中大数的功能

#include

usingnamespacestd;

intmax(inta,intb)

{

returna>b?

a:

b;

}

intmain()

{

inta,b,c,maxnumber;

cout<<"请输入三个整数:

";

cin>>a>>b>>c;

maxnumber=max(a,b);

maxnumber=max(maxnumber,c);

cout<

"<

return0;

}

//2.设计一个程序,求出100~200之间的所有素数,要求每行输出5个素数。

判断一个整数是否为素数用一个函数来实现。

#include

usingnamespacestd;

intprime(intx)

{

for(inti=2;i<=x/2;i++)

if(x%i==0)

return0;

return1;

}

intmain()

{

intk=0;

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

if(prime(i))

{

cout<

k++;

if(k%5==0)

cout<

}

return0;

}

//3.回文数是指其各位数字左右对称的整数,例如12321是回文数。

定义一个判断回文数的函数,并打印1000~2000之间的所有回文数。

#include

usingnamespacestd;

intfun(intx)

{

ints=0;

inti=x;

while(i)

{

s=s*10+i%10;

i=i/10;

}

if(s==x)

return1;

elsereturn0;

}

intmain()

{

intk=0;

for(inti=1000;i<=2000;i++)

if(fun(i))

{cout<

k++;

if(k%5==0)

cout<

}

return0;

}

//4.用函数实现求两正整数的最大公约数的功能,并在主函数中调用该函数求出两正整数的最小公倍数。

#include

usingnamespacestd;

intgys(inta,intb)

{

for(inti=a;i>=1;i--)

if(a%i==0&&b%i==0)

returni;

returni;

}

intmain()

{

inta,b,t;

cout<<"请输入两个正整数:

";

cin>>a>>b;

t=gys(a,b);

cout<

"<<(a*b/t)<

return0;

}

//5.用递归函数实现Hermite多项式求值。

当x>1时,Hermite多项式定义为输入实数x和整数n后,求出Hermite多项式前n项的值

#include

usingnamespacestd;

doublehermite(doublex,intn)

{

doubley;

if(n==0)

y=1;

elseif(n==1)

y=2*x;

else

y=2*x*hermite(x,n-1)-2*(n-1)*hermite(x,n-2);

returny;

}

intmain()

{

doublex,y;

intn;

cout<<"请输入n和x:

";

cin>>n>>x;

y=hermite(x,n);

cout<<"y="<

return0;

}

//6.分别设计两个函数,一个实现整数的正序输出,另一个则实现反序输出。

如输人一个整数3456,则输出3456和6543。

#include

usingnamespacestd;

voidfun1(intn)

{

if(n==0)

return;

else

fun1(n/10);

cout<

}

voidfun2(intn)

{

if(n==0)

return;

else

{

cout<

fun2(n/10);

}

}

intmain()

{

intn;

cout<<"请输入n:

";

cin>>n;

fun1(n);

cout<

fun2(n);

cout<

return0;

}

练习题(5)

一、选择题

1.D2.C3.D4.C5.B6.B7.B8.C

二、填空题

(1)cb

(2)3(3)9(4)3

三、编程题

//1.编写一个宏MAX(a,b,c),求a,b,c中的最大值。

a,b,c从键盘输入。

#include

usingnamespacestd;

#definemax(a,b,c)(a>b?

a:

b)>c?

(a>b?

a:

b):

c

intmain()

{

inta,b,c;

intmaxnumber;

cout<<"请输入三个数:

";

cin>>a>>b>>c;

maxnumber=max(a,b,c);

cout<<"最大数为:

"<

return0;

}

//2.已知三角形的三条边a,b,c,则三角形的面积为

#include

#include

usingnamespacestd;

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

#definearea(a,b,c)s(a,b,c)*(s(a,b,c)-a)*(s(a,b,c)-b)*(s(a,b,c)-c)

intmain()

{

doublea,b,c;

doubless;

cout<<"请输入三角形的三边:

";

cin>>a>>b>>c;

ss=area(a,b,c);

ss=sqrt(ss);

cout<<"三角形的面积为:

"<

return0;

}

练习题(6)

一、选择题

1.C2.C3.A4.D5.B6.B7.D

8.B(D未有'\0'结束)9.A10.D11.D12.B

二、填空题

(1).182215

(2)3040(3)123//456

(4)321678(5)3,6,9,(6)GDABC(7)62(8)13001101

三、完善程序

1.答案:

n/10i

2.答案:

!

(n%i)或n%i==0m*10+n%10p(convert(i))

3.答案:

a>0(或a)r<10i-1

四、编程题

//1.求一个4×4矩阵两对角线元素之和。

#include

usingnamespacestd;

intmain()

{

inta[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};

inti,j,s=0;

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

{

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

cout<

cout<

}

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

s=s+a[i][i]+a[i][3-i];

cout<<"s="<

return0;

}

//2.输出以下的杨辉三角形(要求输出8行)

#include

usingnamespacestd;

intmain()

{

inta[10][10];

inti,j;

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

{

a[i][0]=1;

a[i][i]=1;

}

for(i=2;i<8;i++)

for(j=1;j

{

a[i][j]=a[i-1][j-1]+a[i-1][j];

}

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

{

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

cout<

cout<

}

return0;

}

//3.找出二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。

也可能没有鞍点。

#include

usingnamespacestd;

intmain()

{

inta[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};

inti,j,k,mini,maxj,flag=0,max;

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

{

max=a[i][0];

maxj=0;

for(j=1;j<4;j++)

{

if(max

{

max=a[i][j];

maxj=j;

}

}

mini=i;

for(k=0;k<4;k++)

{

if(max>a[k][maxj])

{

max=a[k][maxj];

mini=k;

}

}

if(mini==i)

{flag=1;

cout<<"鞍点是:

"<<"a["<

break;

}

}

if(flag==0)

cout<<"没有鞍点!

"<

return0;

}

//4.从键盘输入一个字符串,删除字符串中的所有空格后输出。

#include

#include

usingnamespacestd;

intmain()

{

charstr[80];

inti,j;

cout<<"请输入一行带空格的字符串:

";

cin.getline(str,80);

i=0;

while(str[i])

{

if(str[i]=='')

{

j=i;

while(str[j])

{

str[j]=str[j+1];

j++;

}

i--;

}

i++;

}

cout<<"删除空格的字符串为:

";

cout<

return0;

}

//5.从键盘将一个字符串输入到字符数组中,按反序存放。

如,输入"Abcde",则输出"edcbA"。

#include

#include

usingnamespacestd;

intmain()

{

charstr[80],ch;

inti,j;

cout<<"请输入一行字符串:

";

cin.getline(str,80);

intn=strlen(str)-1;

for(i=0,j=n;i

{

ch=str[i];

str[i]=str[j];

str[j]=ch;

}

cout<<"反序的字符串为:

"<

return0;

}

//6.编写一个函数把一个10进制数转换成16进制数。

#include

#include

usingnamespacestd;

voidchange(intn,charstr[])

{

inti=0,j;

intx;

charch;

while(n)

{

x=n%16;

if(x<10)

str[i]=x+'0';

else

str[i]=x-10+'A';

n=n/16;

i++;

}

str[i]='\0';

for(i=0,j=strlen(str)-1;i

{

ch=str[i];

str[i]=str[j];

str[j]=ch;

}

}

intmain()

{

intn;

charstr[80];

cout<<"请输入一个十进制整数:

";

cin>>n;

change(n,str);

cout<

"<

return0;

}

//7.编写一个函数:

voidstrcpy(chara[],charb[]);将b中的字符串拷贝到数组a中。

(要求不使用C++的库函数strcpy())。

#include

usingnamespacestd;

voidstrcpy(chara[],charb[])

{

inti=0,j=0;

while(a[i++]=b[j++]);

}

intmain()

{

chara[80],b[80];

cout<<"请输入一个字符串:

";

cin.getline(b,80);

strcpy(a,b);

cout<<"字符串b为:

"<

cout<<"字符串a为:

"<

return0;

}

//8.编写一个函数:

voidstrcat(chara[],charb[]);将b中的字符串拼接到数组a中的字符串的后面,构成一个字符串。

(要求不使用C++的库函数strcat())。

#include

usingnamespacestd;

strcat(chara[],charb[])

{

inti=0,j=0;

while(a[i])

i++;

while(a[i++]=b[j++]);

}

intmain()

{

chara[80],b[80];

cout<<"请输入两个字符串:

";

cin.getline(a,80);

cin.getline(b,80);

cout<<"字符串a为:

"<

cout<<"字符串b为:

"<

strcat(a,b);

cout<<"字符串a+b为:

"<

return0;

}

//9.用筛选取法求出2~200之间的所有素数。

#include

usingnamespacestd;

intmain()

{

inti,j,k;

inta[1000];

for(i=2;i<=200;i++)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1