C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx
《C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx》由会员分享,可在线阅读,更多相关《C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx(186页珍藏版)》请在冰点文库上搜索。
![C++程序设计第二版吴乃陵况迎辉课后答案Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/3ee856b3-2b94-4688-a036-a237d94581c6/3ee856b3-2b94-4688-a036-a237d94581c61.gif)
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;
} 解答:
本题检查学生整除得概念。
跟踪:
a
3
b
100
b/a
33
循环次数
1
b-a
97
4
100
25
96
5
…
100
20
95
15
6
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编程输出下列图形,中间一行英文字母由输入得到。
A
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]<