C++程序设计(第二版_吴乃陵_况迎辉)课后答案(2)

2019-01-07 13:07

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

#include void main(){

int mark,result; //mark是百分制成绩,result是5分制 cout<<\请输入百分制成绩:\cin>>mark;

if(mark<0) { cout<<\缺

考!\return; }

switch

(mark/10){ case 9: case 10: result=5;

cout<<\输出五分制成绩:\break;

case 8: result=4; cout<<\输出五分制成

绩:\break;

case 7: result=3; cout<<\输出五分制成

绩:\break;

case 6: result=2; cout<<\输出五分制成

绩:\break;

case 5:case 4:case 3:case 2:case 1:case

0: result=1; cout<<\输出五分制成绩:\break; default:

cout<<\输入错误!\} }

3.4 编程打印如下图形:

* * * * * * * * * * * * * * * *

* * * * * * * * *

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

4

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

#include void main(){

int i,j;

for (i=1;i<=4;i++) {

for(j=4-i;j>0;j--)//三角形每行前部的空格

cout<<\

for(j=1;j<=2*i-1;j++)

cout<<\cout<

for(i=1;i<=3;i++) cout<<\* * *\\n\}

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

A B B B C C C C C D D D D D D D C C C C C B B B A

解:分上三角和下三角两部分分别处理左边的空格。 #include void

main(){ char in; int i,j; do{

cout<<\输入一个字母:\cin>>in;

if((in>=97)&&(in<=122)) in-=32;//小写改大写 }while((in<65)||(in>90)); int line=in-'A';

for (i=0;i<=line;i++){//上

三角

for(j=line-i;j>0;j--)

cout<<\//前方空格 for(j=1;j<=2*i+1;j++)

cout<<' '<

for (i=line;i>0;i--){//下三角(少一行)

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

cout<<\

for(j=1;j<=2*i-1;j++)

cout<<' '<

5

} }

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

cout<

6

3.6 输入 n,求 1!+2!+3!+…+n!

解:通常求和作为外循环,阶乘作为内循环。这里考虑到:n!=n*(n-1)!,利用递推法运算 速度大大提高,同时两者可合并为一个循环。本程序考虑了输入的健壮性。

#include #include void main(){

int n;

double result=0; //result是结果 cin>>n; if(n<1) {

cout<<\输入错误!\//return; exit(0); }

result=1;

for(int i=2,jch=1;i<=n;i++) {

jch*=i; //jch是i的阶乘,注意n!=n*(n-1)!这样可少一层循环 result+=jch; }

cout<

3.7 猴子吃桃问题:猴子摘下若干个桃子,第一天吃了桃子的一半多一个,以后每天吃了前

一天剩下的一半多一个,到第十天吃以前发现只剩下一个桃子,问猴子共摘了几个桃子。 解:采用递推法。从最后一天逆推到第一天,9 次循环。 #include const int day=10; void main(){

int i,x=1;//最后一天只有一个

for(i=1;i

x=(x+1)*2;

cout<<\开始共有桃子\个。\\n\}

3.8 从键盘输入一组非 0 整数,以输入 0 标志结束,求这组整数的平均值,并统计其中的个 数。 解:将这组整数放在整型数组中,一边输入一边求和及统计正数和负数的个数,平均数由和 除以整数数量取得。

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

#include #include void main(){

int stem[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++;//正数数量 else nnum++;//负数数量 i++;

cin>>stem[i]; }

if(!i) cout<<\个数\

else { cout<<\平均值=\double)sum/(pnum+nnum)<

习惯不用整数 cout<<\正数个数=\cout<<\负数个数=\} }

7

3.9 编程找出 1~500 之中满足除以 3 余 2,除以 5 余 3,除以 7 余 2 的整数。 解:中国古代数学问题(韩信点兵),采用穷举法。注意三个条件同时成立用&&。 #include void main(){ int i;

for(i=1;i<=500;i++)

if((i%3==2)&&(i%5==3)&&(i%7==2))

cout<

}

3.10 编程求 1000 之内的所有完全数。所谓完全数指的是一个数恰好等于它的所有因子和。 例如 6=1+2+3,就是一个完全数。 解:采用穷举法。两重循环,外层是从 1 到 999 依次处理,内层是求该数的所有因子的和, 并判断是否等于该数。 #include void main(){

int i,a,sum_yz; //sum_yz是a的因子

for(a=1;a<1000;a++

){ sum_yz=0; for(i=1;i

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

cout<

}

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

}

8

3.11 将 100 元换成用 10 元、5 元和 1 元的组合,共有多少种组合方法。 解:采用穷举法。考虑 10 元最多 10 张,5 元最多 20 张,余下是 1 元。

#include void main(){

for(int i=0,j,k,count=0;i<=10;i++)//i是10元张数,j是5元张数,k是1元张数

for(j=0;j<=20;j++

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

if(k>=0){

cout<

cout<

3.12 利用反正切展开计算π的近似值,要求误差 10-5,公式如下: x 5 x 7 x

arctg ( x) ≈ x ? + ? + L

3 5 7

令 x=1,可计算出π/4 的近似值。 解:采用递推法。初看每一项的递推通式不易写出,但每一项全看作奇数项,而偶数项全为 零,则很容易写出:第 1 项为 x,第 3 项为第 1 项乘以 x 的平方除以项序号 3 乘以-1,其余 类推。同时和的误差小于最后一项的绝对值。 #include #include const double e=1e-6;

void main(){

double x,a,sum; int i=3; cout<<\请输入弧度值:\a=x; sum=x; do{

a*=x*x*(-1); sum+=a/i; i+=2;

}while(fabs(a/i)>e);

cout<<\}

3


C++程序设计(第二版_吴乃陵_况迎辉)课后答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2014年7月《设计原理》试卷Doc1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: