第四章课后习题答案_第1页
第四章课后习题答案_第2页
第四章课后习题答案_第3页
第四章课后习题答案_第4页
第四章课后习题答案_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1. 循环次数已知的累加和问题习题4.10 :编程计算1+3+5+7+99+101的值。/*方法一:使用for语句实现1。*/ #include <stdio.h> main() int i ; int sum = 0 ; /累加和变量清零 for(i = 1 ; i <= 51 ; i+) sum = sum + (2*i -1) ; printf("1+3+5+101=%dn", sum); /*方法二:使用for语句实现2。*/ main() int i; int sum =0; for(i = 1 ; i <= 101 ; i=i+2) su

2、m = sum + i; printf("1+3+5+101=%dn", sum);/*方法三:使用while语句实现。*/ main() int i ; int sum =0 ; i = 1 ; /循环变量初始化 while(i<=101) sum = sum + i ; i = i + 2 ; printf("1+3+5+101=%dn", sum); /*方法四:使用do-while语句实现。*/ main() int i ; int sum = 0; i =1 ; do sum = sum + i; i = i+ 2 ; while(i&l

3、t;=101) ; /注意末尾的分号 printf("1+3+5+101=%dn", sum); 习题4.11:编程计算1*2*3+3*4*5+99*100*101的值。#include <stdio.h> main() int i ; long int sum =0; /*注意变量的类型定义*/ long int term ; for( i = 1 ; i <=99 ; i= i+2 ) term = i * (i+1)*(i+2); sum = sum + term ; printf("1*2*3+3*4*5+99*100*101=%ldn&

4、quot;,sum); 习题4.12:编程计算1!+2!+3!+10!的值。#include <stdio.h> main() int i ; long term = 1 ; /等价于long int term = 1 ; long sum = 0 ; for(i = 1 ; i<=10 ; i+) term = term * i ; sum = sum +term ; printf("1!+2!+3!+10!=%ldn",sum);习题4.13:编程计算a+aa+aaa+aaa(n个a)的值,n和a的值由键盘输入。main() int i , n ; i

5、nt a ; long int term = 0 , sum = 0 ; printf("please input a:n"); scanf("%d",&a); printf("please input n:n"); scanf("%d",&n); for(i = 1 ; i <=n ; i+) term = term * 10 + a ; if(i<n) /=此处加入if语句,可以控制输出项的形式= printf("%ld+" , term ); /=前面的项= e

6、lse printf("%ld=" , term ); /=最后一项= sum = sum + term ; printf("%ldn" , sum ); 2. 循环次数已知的累乘积问题习题4.14:main() double i ; double pi , p = 1.0 , term ; /注意变量的类型 for(i = 1 ; i<= 50 ; i+) term = ( 2*i * 2*i ) / ( (2*i-1) * (2*i+1) ) ; p = p * term ; pi = p * 2 ; printf("pi=%fn&q

7、uot;, pi ) ;3. 循环次数未知的累加和问题习题4.15:#include <stdio.h>#include <math.h> main() int n = 1 , count = 0 ; double e =0.0 , term = 1.0 ; while( fabs(term) >= 1e-5 ) /为了使最后一项的绝对值达到精度要求,要求累加项满足大于等于1e-5 e = e + term ; /将累加项累加到和中 count + ; /计数器加1 term = term / n ; /计算累加项 n=n+1 ; /累加项的分母变化 printf

8、("1+1/1!+1/2!+1/n!=%fn", e); 习题4.16:#include <stdio.h>#include <math.h> main() int n = 1 ; double sum = 0.0 ,term ,sign = 1.0 ; do term = sign / n ; sum = sum + term ; sign = - sign ; n = n + 1 ; while( fabs(term) >= 1e-4 ) ; printf("sum=%fn",sum );习题4.17:#include

9、<stdio.h>#include <math.h> main() int n = 1 , count = 1 ; double x , term , sum ; printf("please input x :n"); scanf("%lf", &x); term = x ; sum = x ; do term = - term * x * x / (n+1) * (n+2) ; sum = sum + term ; count +; n = n +2 ; while(fabs(term) >= 1e-5) ; p

10、rintf("sinx=%lfn", sum ); printf("共累加了%d项!n", count); 4. 循环结构与选择结构的综合应用问题习题4.18:打印所有的“水仙花数”,所谓“水仙花数”是指一个三位数,各位数字的立方等于该数本身。#include <stdio.h>main() int i , j , k , n ; for( n = 100 ; n <= 999 ; n+) i = n / 100 ; /分离百位数字 j = n %100 / 10 ; /分离十位数字 k = n %10 ; /分离个位数字 if( n

11、= i * i * i + j * j * j + k * k * k ) printf("%dt" , n); /打印水仙花数 5. 循环的嵌套解决穷举问题习题4.25:用1元5角钱人民币兑换5分、2分和1分的硬币(每一种都要有)共100枚,问共有几种兑换方案?每种方案兑换多少枚?#include <stdio.h> main() int x , y , z ; int count = 0 ; printf("5fent2fent1fenn"); for(x = 1 ; x <= 29 ; x +) for( y = 1 ; y &l

12、t;= 72 ; y +) z = 100 - x - y ; if( 5 * x + 2 * y + z = 150 ) printf("%dt%dt%dn", x , y , z ); count +; printf("+n"); printf("1元5角钱人民币兑换成5分、2分、1分的硬币,共有%d中兑换方案!n", count); printf("+n"); 习题4.22:三色球问题:若一个口袋中放有12个球,其中有3个红色的,3个白色的,6个黑色的,从中任取8个球,问共有多少种不同的颜色搭配?#inclu

13、de <stdio.h> main() int red , white , black ; printf("redtwhitetblackn"); for( red = 0 ; red <= 3 ; red + ) for( white = 0 ; white <= 3 ; white +) black = 8 - red - white ; if( black >= 0 && black <= 6 ) printf("%3dt%3dt%3dn" , red , white , black ); 习题4

14、.23:鸡兔同笼:共有98个头,386只脚,编程求鸡、兔各多少只?#include <stdio.h> main() int x , y ; printf("chicktrabittn"); for( x = 1 ; x <= 97 ; x +) y = 98 - x ; if( 2 * x + 4 * y = 386 ) printf("%dt%dn", x , y ); 习题4.24:百鸡问题:公鸡每只5元,母鸡每只3元,小鸡3只1元。用100元买100只鸡,问公鸡、母鸡和小鸡各能买多少只?#include <stdio.h&

15、gt; main() int x , y ,z ; printf("公鸡t母鸡t小鸡n"); for(x = 0 ; x <= 20 ; x +) for ( y = 0 ; y <= 20 ; y + ) z = 100 - x - y ; if (5 * x + 3 * y + z /3 = 100) printf("%dt%dt%dn", x , y , z ); 6. 循环的嵌套打印图形打印图形#include <stdio.h> main() int i , j ; for( i = 1 ; i <= 4 ; i+

16、) for( j = 1 ; j <= 4-i ; j+) printf(" "); for( j = 1 ; j <= 2 * i - 1 ; j + ) printf("*"); printf("n"); for( i = 3 ; i >=1 ; i-) for( j = 1 ; j <= 4-i ; j+) printf(" "); for( j = 1 ; j <= 2 * i - 1 ; j + ) printf("*"); printf("n&

17、quot;); 打印空心菱形#include <stdio.h> main() int i , j ,k ; for(i = 1 ; i <= 4 ;i+) for(j = 1 ; j <= 4-i ; j+) printf(" "); for(j = 1 ; j <= 2*i-1 ; j+) if(j = 1 | j = 2*i-1) printf("*"); else printf(" "); printf("n"); for(i = 1 ;i <= 3 ; i+) for(

18、j = 1 ; j <= i ; j+) printf(" "); for(j = 1 ; j <= 7-2*i ; j+) if( j = 1 | j = 7-2*i) printf("*"); else printf(" "); printf("n"); 打印圣诞树#include <stdio.h> main() int i , j ; for( i =1 ; i<=4 ; i+ ) for( j=1 ; j<=5-i ; j+) printf(" ")

19、; for( j=1 ; j<=2*i-1 ; j+ ) printf("*"); printf("n"); for( i =1 ; i<=5 ; i+) for( j=1 ; j<=5-i ; j+ ) printf(" "); for( j=1 ; j<=2*i-1 ; j+ ) printf("*"); printf("n"); for( i =1 ; i<=3 ; i+ ) for( j=1 ; j<=4 ; j+) printf(" &qu

20、ot;); printf("*"); printf("n"); 打印九九乘法表。#include <stdio.h> main() int i , j ; for( i = 1 ; i <=9 ; i+) /控制行 for( j = 1 ; j <= i ; j +) /控制列 printf("%d*%d=%-3d" , j , i , i*j ); /%-3d控制整型表达式i*j的输出占3列,左对齐 printf("n"); #include <stdio.h> main()

21、int i , j ; for( i = 1 ; i <=9 ; i+) for( j = 1 ; j <= 9 ; j +) if( i <= j ) printf("%d*%d=%-3d" , i , j , i*j ); printf("n"); 7. break语句和continue语句的应用习题4.21:爱因斯坦数学题。(使用break语句)#include <stdio.h> main() int x ;/阶梯数 for( x = 1 ; ; x+ ) if( x % 2 = 1 && x % 3

22、 = 2 && x % 5 = 4 && x % 6 = 5 && x % 7 = 0 ) break ; printf("共有%d阶台阶。n" , x ); 习题4.18:打印所有“水仙花数”。(使用continue语句)#include <stdio.h>main() int i , j , k , n ; for( n = 100 ; n <= 999 ; n+) i = n / 100 ; /分离百位数字 j = n %100 / 10 ; /分离十位数字 k = n %10 ; /分离个位数字 if( n != i * i * i + j * j * j + k * k * k ) continue ; /continue语句跳出本次循环 printf("%dt" , n); /打印水仙花数 输出100以内的所有素数,要求每行输出5个素数。(使用break语句)#include <stdio.h>#include <math

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论