C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx

上传人:b****3 文档编号:7589594 上传时间:2023-05-08 格式:DOCX 页数:186 大小:183.63KB
下载 相关 举报
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第1页
第1页 / 共186页
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第2页
第2页 / 共186页
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第3页
第3页 / 共186页
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第4页
第4页 / 共186页
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第5页
第5页 / 共186页
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第6页
第6页 / 共186页
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第7页
第7页 / 共186页
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第8页
第8页 / 共186页
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第9页
第9页 / 共186页
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第10页
第10页 / 共186页
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第11页
第11页 / 共186页
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第12页
第12页 / 共186页
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第13页
第13页 / 共186页
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第14页
第14页 / 共186页
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第15页
第15页 / 共186页
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第16页
第16页 / 共186页
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第17页
第17页 / 共186页
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第18页
第18页 / 共186页
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第19页
第19页 / 共186页
C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx_第20页
第20页 / 共186页
亲,该文档总共186页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx

《C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx》由会员分享,可在线阅读,更多相关《C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx(186页珍藏版)》请在冰点文库上搜索。

C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx

constintn=10;

常变量

intm=5;

变量

'

文字常量1

第一章C++基础知识习题

2

charch='

a'变量

intarray[5]={1,2,3,4,5};

chars[]="

Hello"

;

1、4将下列算式或叙述用C++表达式描述。

(1)22)(arcsin2cx

(2)(x+y)/((x-y)*ay)

(3) 位于原点为圆心,a,b为半径得圆环中得点坐标。

(4)。

 cba

(5)并且字符ch不为'

\0'

20k

答:

pi/2+sqrt(asin(x)*asin(x)+c*c)

(x+y)/((x-y)*pow(a,y))

((x*x+y*y)>

=a*a)&

((x*x+y*y)<=b*b)

(a!

=b)&

(a!

=c)&

(b!

=c)

(k<

=20)&

(ch!

='

\0'

1、6设有语句:

inta, b;

floatx,y;

char ch1,ch2,ch3;

cin>

a>

b>

x>

y>

ch1;

ch2=cin、get();

cin>>

ch3;

若从键盘输入:

32 1、87 ab c

执行后各变量取值如何?

注意abc三字符两两间有空格。

a就是3,b就是2,x就是1、8,y就是7,ch1就是’a’,ch2就是空格,ch3就是’b’。

1、7设有语句:

int a,b,c,d;

cin>

>oct>

b>

hex>

c>

dec>>

d;

23 232323

执行后各变量得值用十进制表示各就是多少?

a:

19,b:

19,c:

35,d:

23

1、8对于习题1、7,若执行:

cout<

a<

′\t′<

<hex<

b<

oct<

c<

endl;

显示结果就是什么?

190x13043

第二章基本控制结构程序设计习题

一.基本概念与基础知识自测题

3、1程序阅读题

3.1.1设有说明:

inta=3,b=100;

下面得循环语句执行 

(1) 次,执行后a、b得值分别为

(2) 、(3)。

while(b/a>

5){if(b-a>

25)a++;

elseb/=a;

} 解答:

本题检查学生整除得概念。

跟踪:

3

b

100

b/a

33

循环次数

1

b-a

97

100

25

96

100

20

95

15

13

85

16

6

14

84

17

5

(1)14

(2)17

(3)100

3.1.2设有说明:

intn,x,k,y;

n

下面程序段得功能就是备选答案中得 

(1) ,当n=10,x=10 打印结果就是(2)。

cin>>x>>

n;

k=0;

do{x/=2;

k++;

}while(k<n);

y=1+x;

k=0;

do{y=y*y;

k++;

}while(k<n);

cout<<

y<<

备选答案:

A、 y = (1+x )n

B、y=(1+

x)2

2n

C、y=(1+

x)n

2n

D、y=(1+

ﻮx)2

2n +1

第二章 基本控制结构程序设计习题ﻩ2

解答:

第一个循环使 x成为:

x

(1)B

y成为:

1 +x

2n

第一个循环使 y成为:

(1+

x) 2;

考虑整除, x

2 n

(2)1

连除 4 次以后为零,所以:

3.1.3 请瞧如下程序段:

if(num==1)ﻩcout<<

”Alpha”;

elseif(num==2)cout<

”Bata”;

elseif(num==3)ﻩcout<

”Gamma”;

elsecout<

”Delta”;

当num得值分别为1、2、3时,上面程序段得输出分别为

(1)、

(2)、(3)。

 解答:

检查条件语句与字符串输出概念:

(1)Alpha

(2)Bata

(3)Gamma

3.1.4执行下面程序段后,m与k得值分别为 (1) 、 (2) 。

intm,k;

for(k=1,m=0;

k<=50;

k++){if(m>

=10)break;

if(m%2==0){

m+=5;

continue;

}

m-=3;

注意continue 语句得使用

初值

m=1

k=0

第1次循环后

m=5

k=1

第2次循环

m=2

k=2

第3 次循环

m=7

k=3

第4次循环

m=4

k=4

第5 次循环

m=9

k=5

第 6次循环

m=6

k=6

第 7次循环

m=11

结束,k++未做

(1)11

(2)6

二.编程与综合练习题

3、2编程求一元二次方程ax2+bx+c=0得根。

包括以下判断与结果:

若输入a=0,给出提示;

第二章基本控制结构程序设计习题3

若Δ>0,输出两个不等实根;

若Δ=0,输出两个相等实根;

若Δ<

0,输出两个复数根。

解:

本题以一个绝对值极小得数作为实数 0。

#include <

iostream、h>

#include<math、h>

#include<stdlib、h>

voidmain(){

doublea,b,c;

doubledelta,x1,x2;

constdoublezero=1e-9;

//定义一个很小得常数

intsign;

cout<

"输入三个系数a(a!

=0),b, c:

<<endl;

a>

>c;

if(fabs(a)<

zero){cout<

二次项系数为0,方程根就是-c/b"

exit(0);

}cout<

<"a="<

\t'

"b="<

<b<

\t'

<"

c="

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

if(fabs(delta)<

zero){//绝对值很小得数即被认为就是0

cout<

方程有两个相同实根:

"x1=x2="

-b/(2*a)<<

else {

if(delta>0)

sign=1;

else

sign=0;

delta=sqrt(fabs(delta));

 x1=-b/(2*a);

x2=delta/(2*a);

if(sign){ cout<

方程有两个不同实根:

cout<

x1="

<<

x1+x2<

x2="<

<x1-x2<<

else{//delta<

0cout<<

方程无实根!

有两个不同复数根:

";

cout<<

x1="<

<x1<

+i"

x2<<'

\t'<<

"x2="<

x1<

-i"<<

x2<

<endl;

3、3设计程序将输入得百分制成绩转换为五分制输出,90 分以上为5分,80∼89分为4分,

70∼79分为 3 分,60∼69分为2分,60 分以下为1分。

解:

10分一档用10进行整除获得,转换用开关语句实行。

第二章基本控制结构程序设计习题ﻩ4

#include<

iostream、h>

voidmain(){

intmark,result;

ﻩ//mark就是百分制成绩,result就是5分制

cout<<

"请输入百分制成绩:

endl;

mark;

if(mark<

0){cout<

缺考!

endl;

return;

switch(mark/10){case9:

case10:

 result=5;

cout<<

输出五分制成绩:

<result<<

endl;

break;

case 8:

result=4;

cout<

"<

result<<

 break;

case7:

result=3;

 cout<

"输出五分制成绩:

result<

<endl;

case 6:

result=2;

cout<

<result<

break;

case 5:

case4:

case3:

case2:

case1:

case0:

 result=1;

cout<

输出五分制成绩:

result<

break;

default:

cout<

输入错误!

endl;

3、4编程打印如下图形:

*ﻩ**

*ﻩ***ﻩ*

**ﻩ**ﻩ*ﻩ*ﻩ*

*ﻩ**

**ﻩ*

*ﻩ*ﻩ*

难点在三角形左边得空格得控制,嵌套一个循环语句完成此任务。

第二章 基本控制结构程序设计习题ﻩ5

#include <

iostream、h>

voidmain(){

inti,j;

for (i=1;

i<

=4;

i++){

for(j=4-i;

j>

0;

j--)//三角形每行前部得空格

ﻩ";

for(j=1;

j<

=2*i-1;

j++)

cout<<

*"

for(i=1;

i<=3;

i++)ﻩcout<

ﻩ** *\n"

3、5编程输出下列图形,中间一行英文字母由输入得到。

BBﻩB

CCﻩCCC

DﻩDDﻩDDﻩDﻩD CCﻩCﻩCC

BBBA

分上三角与下三角两部分分别处理左边得空格。

#include<

iostream、h>

voidmain(){ charin;

 inti,j;

 do{

输入一个字母:

in;

if((in>=97)&

(in<

=122))in-=32;

//小写改大写

}while((in<

65)||(in>

90));

intline=in-'

A'

for (i=0;

i<

=line;

i++){//上三角

for(j=line-i;

0;

j--)

ﻩ"

//前方空格

for(j=1;

=2*i+1;

j++)

cout<<

char(i+'A');

cout<

for(i=line;

i>

0;

i--){//下三角(少一行)

for(j=0;

=line-i;

cout<

";

for(j=1;

j<

=2*i-1;

char(i-1+'

A'

);

第二章基本控制结构程序设计习题6

endl;

3、6 输入n,求1!

+2!

+3!

+…+n!

通常求与作为外循环,阶乘作为内循环。

这里考虑到:

n!

=n*(n-1)!

利用递推法运算速度大大提高,同时两者可合并为一个循环。

本程序考虑了输入得健壮性。

#include<

iostream、h>

#include<stdlib、h>

void main(){

int n;

doubleresult=0;

ﻩ//result就是结果

n;

if(n<1)

{

cout<

输入错误!

endl;

//return;

exit(0);

result=1;

for(inti=2,jch=1;

i<=n;

i++)

jch*=i;

ﻩ//jch就是i得阶乘,注意n!

=n*(n-1)!

这样可少一层循环

result+=jch;

cout<<

result<<

endl;

3、7 猴子吃桃问题:

猴子摘下若干个桃子,第一天吃了桃子得一半多一个,以后每天吃了前

一天剩下得一半多一个,到第十天吃以前发现只剩下一个桃子,问猴子共摘了几个桃子。

采用递推法。

从最后一天逆推到第一天,9次循环。

#include <

iostream、h>

constint day=10;

voidmain(){

inti,x=1;

//最后一天只有一个

for(i=1;

day;

i++)//从一天前推到九天前

x=(x+1)*2;

开始共有桃子"

x<<

个。

\n"

3、8从键盘输入一组非0整数,以输入0标志结束,求这组整数得平均值,并统计其中得个数。

将这组整数放在整型数组中,一边输入一边求与及统计正数与负数得个数,平均数由与除以整数数量取得。

第二章基本控制结构程序设计习题ﻩ7

#include<fstream、h>

#include<

iostream、h>

void main(){

intstem[256],sum=0,pnum=0,nnum=0,i=0;

 cout<

从键盘输入一组非0整数,以输入0标志结束:

 cin>

stem[i];

while(stem[i]!

=0){ sum+=stem[i];

//求与 if(stem[i]>

0)pnum++;

//正数数量elsennum++;

//负数数量

i++;

>stem[i];

if(!

i)cout<<

0个数"

endl;

else {cout<

"平均值="

<(double)sum/(pnum+nnum)<<endl;

//平均值习惯不用整数cout<

正数个数="

pnum<

<endl;

负数个数="

nnum<

3、9编程找出1∼500 之中满足除以3 余2,除以 5余3,除以7余2 得整数。

解:

中国古代数学问题(韩信点兵),采用穷举法。

注意三个条件同时成立用&

#include<

iostream、h>

voidmain(){int i;

for(i=1;

=500;

i++)

if((i%3==2)&

(i%5==3)&

(i%7==2))

cout<

endl;

3、10编程求1000之内得所有完全数。

所谓完全数指得就是一个数恰好等于它得所有因子与。

例如6=1+2+3,就就是一个完全数。

采用穷举法。

两重循环,外层就是从1到999依次处理,内层就是求该数得所有因子得与,并判断就是否等于该数。

iostream、h>

void main(){

inti,a,sum_yz;

//sum_yz就是a得因子与

for(a=1;

a<1000;

a++){ sum_yz=0;

for(i=1;

a;

i++)

if(a%i==0)sum_yz+=i;

if(a==sum_yz)

endl;

第二章基本控制结构程序设计习题8

3、11将100 元换成用10 元、5元与1 元得组合,共有多少种组合方法。

 解:

考虑10元最多 10张,5 元最多20张,余下就是1 元。

#include<

iostream、h>

voidmain(){

for(int i=0,j,k,count=0;

=10;

i++)//i就是10元张数,j就是5元张数,k就是1元张数

for(j=0;

=20;

j++){ k=100-10*i-5*j;

if(k>

=0){

<'

<k<

count++;

count<<

3、12利用反正切展开计算π得近似值,要求误差10-5,公式如下:

7

arctg(x)≈x −x +x −x +L

35ﻩ7

令x=1,可计算出π/4得近似值。

初瞧每一项得递推通式不易写出,但每一项全瞧作奇数项,而偶数项全为 零,则很容易写出:

第1项为x,第3项为第1项乘以 x得平方除以项序号3乘以-1,其余类推。

同时与得误差小于最后一项得绝对值。

#include<

iostream、h>

#include<

math、h>

constdoublee=1e-6;

voidmain(){

doublex,a,sum;

inti=3;

cout<

请输入弧度值:

cin>

x;

a=x;

sum=x;

 do{

a*=x*x*(-1);

sum+=a/i;

 i+=2;

}while(fabs(a/i)>

e);

arctg("

)="

sum<

endl;

第二章基本控制结构程序设计习题9

3、13用迭代法求方程x2+10cosx=0得根,误差限为10-5。

迭代公式如下:

x2− 10(xsinx+cosx)

x=nnnn

n+1

2xn

ﻮ−10sinxn

迭代法也就是用循环语句实现,数学上

#include<

iostream、h>

#include<

math、h>

constdoublee=1e-5;

 voidmain(){

floatx0,x1;

int n=0;

cout<

"输入初始近似值:

x1;

do{

x0=x1;

x1=(x0*x0-10*(x0*sin(x0)+cos(x0)))/(2*x0-10*sin(x0));

//x0就是上次算出得结果,x1用作保存新算出得结果

n++;

}while((fabs(x1-x0) >

e)&&

(n<

=1e5));

if(n>

1e5)

"超出迭代1e5次\n"

elsecout<

方程x*x+10*cos(x)=0得一个根为:

x1<

方程误差为:

<x1*x1+10*cos(x1)<

endl;

3、14两队选手每队5人进行一对一得比赛,甲队为 A、B、C、D、E,乙队为J、K、L、M、

N,经过抽签决定比赛配对名单。

规定A不与 J比赛,M不与D及 E比赛。

列出所有可能得比赛名单。

这就是一个组合问题,使用穷举法。

共有5个位置,设甲队5名队员位置不变,乙队改变队员位置,进行配对。

注意第1个位置可在5个队员中任选一个,以后得位置必须扣除已选 过得队员。

并扣除不能配对得情况,即得所有可能得比赛名单。

#include<

iostream、h>

void main(){

charst1[5]={'

'B','

C','

D'

'

E'

},st2[5]={'

J'

,'

K'

L','M'

N'

};

int i=0,j,k,l,m,n;

for(j=0;

5;

j++){//0号位

if(j==0)continue;

//A不与J比赛,即st1[0]不与st2[0]比赛

for(k=0;

k<5;

k++){//1号位 if(k==j)continue;

for(l=0;

l<

5;

l++){//2号位

if(l==j||l==k) continue;

for(m=0;

m<

m++){//3号位

if(m==j||m==k||m==l)continue;

第二章基本控制结构程序设计习题10

if(m==3)continue;

//M不与D比赛,即st1[3]不与st2[3]比赛

for(n=0;

n<5;

n++){//4号位

if(n==3)continue;

//M不与E比赛,即st1[4]不与st2[3]比赛

if(n==j||n==k||n==l||n==m)continue;

cout<

st1[0]<

-'

st2[j]<

'\t'

st1[1]<

<<st2[k]<

st1[2]<

st2[l]<

<'\t'<<

st1[3]<

<st2[m]<

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2