C语言大学实用教程_课后参考答案_苏小红_第1页
C语言大学实用教程_课后参考答案_苏小红_第2页
C语言大学实用教程_课后参考答案_苏小红_第3页
C语言大学实用教程_课后参考答案_苏小红_第4页
C语言大学实用教程_课后参考答案_苏小红_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

1、11习题1及参考答案11列举几种读者所知道的计算机硬件和软件。【参考答案】硬件:CPU、内存、硬盘、光盘、键盘、鼠标等。软件:Windows» QQ, Internet Explorer> Word 等。1.2冯诺依曼机模型有哪几个基本组成部分?【参考答案】 控制器、运算器、存储器、输入设备和输出设备, 13 尝试把例L4改为计算“ 123M56”。include <stdio.h> inainOprintf (d*dnl1, 123*456);1.4 列举几种程序设计语言Q【参考答案】 C, C+, Java, C#, PHP, ASP, Pascal 等。1.5

2、 列举几个在生活和学习中成功应用IT技术的例子。【参考答案】 可编程的微波炉、洗衣机、手机、文曲星、电子游戏机等。1.2习题2及参考答案2.1 下列变量名中哪些是合法的?K 2a a# C$ l3 _var 8 int【参考答案】合法的为t3 _var2.2 选择填空(1) C语言中用表示逻辑值“真”。A) trueB)整数值0、C)非零整数值D) T(2)下列合法的字符常量为。A) "a"B) ' Xn1C) (china*D) a(3)设有语句charc=72,则变量c。A)包含1个字符 B)包含2个字符C)包含3个字符D)不合法(4)字符串常量N"N

3、amcAddressn”的长度为。A) 19B) 15C) 18D)不合法(5)设a,b,c为int型变量,且a = 3 ,b = 4,c = 5.下面表达式值为。的是A)a && 廿B) a <= bC) a | I b+c && b'cD) ! ( (a<b) && !c II 1)(6)若有以下定义: char a ;int b ;float c ;double d ;则表达式a*b + d-c的值的类型为,A) floatB) intC) charD) double(7)设有语句inta = 3执行语句a+= a=a

4、* a;后,变量a的值是A) 3B) 0C) 9D) -12(8)设有语句inta=3;,执行语句printf("%d".-a+);后,输出的结果是,变量a的值是0A) aR) 4C) -3D) -12【参考答案】国号(1)(2)13)(4)(5)(6)(7)答案cBABDDDCB23将下歹蛆彗达式表示为合法的C语言表达式.(1) (2)g+ 与(c + d) + 2|(3) (lnx+siny)/2(4) 2nr(5)一_(6)5m30° 十 &”1 + 12沙X【参考答案】(1) sqrt(a*a+b*b)/(2*c)或 sqrt(pow(a,2)+p

5、ow(b,2)/(2*c)(2) fabs(a+b)*(c+d)+2 )(3) (log (x)+sin(y) )/2(注:y 应为弧度)例如,若y值为30。,sin(y)应写成sin(3.14/180*30),不能直接写成sin(30)。(4) 2*3.1415*r或 #define PI 3.1415表达式写为:2*PI*r<5) 1/ (1+1.0/x)(6) (sin(3.14/180*30)+2*exp(x)/(2*y+pow(yxx)13习题1及参考答案3.1 C语句分为哪几类?【参考答案】 表达式语句、函数调用语句、控制语句、空语句和复合语句。3.2 选择填空(I)下列可作

6、为C语言赋值语句的是。A) x = 3, y = 5B) a = b = cC) i - ;D) y = int ( x );(2)以下程序的输出结果为 omain() (int a = 2, c = 5;printf(= %dz b = %dnr r a, c); A) a = *2, b = %5Ba = 2, b = 5C) a=%dz b=%dD) a=%d, b=%d【参考答案】(1)C(2) D3,3分析下面程序段,指出错误的原因和程序错在哪里,并将其改正。(1) int a, b;scanf(n%d,%dh r a, b);(2) float f = 2.39;printf(*%

7、dw < f);(3) double var;long a;scanf (lr%f %de, &var, &a);(4) int a, b;scanf("%d,%dnw . a, b);(5) float f;scanf(M%5.2fH f(6)main() int a. b: scanf (= b = %dH / &a, &b); printf (r,a = %dr b = %dn" r a' b);)程仔运行时输入:6, 2 /【参考答案】(1)错误:在scanf函数中,参数应是a,b两个变量的地址。改正:scanf (H%

8、d, %d”,&a,&b);(2)错误:数据输出格式与数据类型不匹配。改正:pri ntf (u%fn r f);(3)错误:数据输入格式与数据类型不匹配。改正:scanf (u%lf &var, &a);(4)错误:在scanf函数输入格式控制串中多了5,a.b前面少了留。改正:scanf (咋d, %d”, &a,&b);(5)错误:£的输入格式不应有精度控制。改正:scanf;(6)错误:程序输入错误使得变量a,b的值不是6,2。改正:应输入 a=6,b=2 /3.4分析下列程序,写出程序运行结果。(1)main()char cl

9、 =c2 - 1 b1 r c3 = 1 c1 ;printf (,ra%cb%cc%cabcnH, cl r c2 f c3);1(2)nain()(int x = 12 , y = 8;printf (" n%5d%5d%5d,1, !xz x | | y/ x && y);(3)main()(int x, y;scanf (, %2d%*2s%2d,1 z &x, &y);printf I x + y);)程序执行时从键盘输入:1234567 /(4)main()int a = 2,b = 3 ;floac x = 35, v = 2.5 ;pr

10、intf(n, (float)(a+b) / 2 + (int)x % (int)y);main()(int x = 12 , y = 8;printf("%d %dnu z x+, +y);printf(w%d %dn"z x, y);)(6), main()I int x = 12, y = 8, p, q;p = x+;q = +y;printf(w%d %dnM z p, q);printC(*%d %dnH , x, y);【参考答案】(1) aabbccabc(2) 011(3) 68(4) 3.500000(5) 12 913 9(6) 12 913 93.5

11、已知三角形的三边长q,瓦c,计算三角形面积的公式为5=(a + b + c) t area= Js(s-。)($一>)(c) 2要求编写程序,从键盘输入a.b,c的值,计算并输出三角形的面积。件include <stdio.h>#include <math.h>main。(float a, b, c;/*a,b,u为三边变量"/float sr area;printt(wInput arb.c:w);scanfC%f,%f,%f"r&a.&bric);s = 1.0 / 2 * (a+b+c);area = sort(s * (

12、s - a) (s - b) * (s - c);printf.2£n", area);)程序运行结果:Input a,br c :3 tf 4,5Zarea=6.003.6编程从键盘输入圆的半径r,计算并输出圆的周长和面积。提示:将计算圆周长和面积公式中的式定义为符号常量0 1【参考答案】#include <stdio<h>#define PI3,14floatfloatr ;circumr area;/1为半径变量/printf(* Input r:h);scanf(M %fw, &r);circum = 2*PI*r;area = PI*r*

13、r;printf (l,circum=% .2f z areas=% ,2f nM r circum, area); 程序运行结果:Input 工:5/circum-3140,area=78501.4习题4及参考答案4.1 简答题(1)什么是算法?算法在程序设计中的重要作用是什么?(2)什么是结构化程序设计?其基本思想是什么?(3)什么是“自顶向下、逐步求精”的程序设计方法?【参考答案】(1)所谓算法,就是一个有穷规则的集合,其中的规则确定了 一个解决某一特定类型问题的运 算序列简单地说,就是为解决一个具体问题而采取的确定的有限的操作步骤。当然这里所说 的算法仅指计算机算法,即计算机能执行的算

14、法。每个程序都要依靠算法和数据结构,在某些特殊领域,如计算机图形学、语法分析、数值 分析、人工智能和模拟仿真等,解决问题的能力几乎完全依赖于最新的算法和数据结构C因此, 针对某一应用领域,要想开发出优质高效的程序,开发人员除了要熟练掌握程序设计语言这种 工具和必要的程序设计方法以外,更重要的是要多了触、多积累并逐渐学会自己设计一些好的 算法。【参考答案】(2)结构化程序设计是一种实现程序设计的原则和方法,按照这种原则和方法设计的程序具有 结构清晰,容易阅读,容易修改,容易验证等特点。结构化程序设计的基本思想归纳起来有以下几点:采用顺序、选择和循环三种基本结构作为程序设计的基本单元,避免无限制地

15、使用goto 语句而使流程任意转向。三种基本结构应具有如下良好特性:只有一个入口。只有一个出口。无死语句,即不存在永远都执行不到的语句°无死循环,即不存在永远都执行不完的循环。程序设计采用“自顶向下、逐步求精”和模块化的方法。 【参考答案】(3)自顶向下方法是先写出结构简单、清晰的主程序来表达整个问题,在此问题中所包含的复 杂子问题用子程序来实现。若子问题中还包含复杂的子问题,再用另外一个子程序来解决,直 到每一细节都可以用高级语言清楚表达为止。逐步求精技术可以理解为一种不断地由自底向上 修正所补充的自顶向下的程序设计方法。4.2选择题在下面的条件语句中,只有一个在功能上与其他三个语

16、句不等价(其中si和s2表 示某个C语句),这个不等价的语句是。A) if (a) si; else s2;B) if (!a) s2; else si;C) if (a != 0) si; else s2;D) if (a = 0) si; else s2;(2)设有声明语句intgl,b=0;,则执行以下语句后输出为 oswitch (a) (case 1: switch (b)(case 0; printfr*0*");break;case 1: printfC*l*);break; )case 2: printf(*2*n)/break; 1D)有语法错误D) x !二 0A

17、) *q*B) *q*2*C) *o*i*2*(3)在while(x)语句中的x与下面条件表达式等价的是。 A) x = 0B) x =1C) x != 1(4)若有语句intx;,下面程序段的输出结果为ofor (x-3; x<6; x+)printf(x42) ?:x);A) *3B) #3C) H3D)*304H4*4*4H5H5【参考答案】题号(1)(2)(3)(4)答案DBDD43写出程序的运行结果.C1)下面程序运行结果为#include <stdio<h>tnalaC)(int a = 2, b = 3. c = 1;if (a > b)if (a

18、> c)printf <e%dnwf a)elseprintf <*%dnwrb); printf(wover!nB);【参考答案】(1)over!(2)若从终端上由第一列开始输入以下数据: right?/则程序运行结果为 O#include <stdio.h>Min。charc = getchar(); while (c != r?putchar(c);c = getchar();【参考答案】(2) right(3)对下面程序,若输入数据同上,则程序运行结果为include <stdiOeh> nain()char c;while (c = getc

19、har() !=pulchar(c);【参考答案】(3) right(4)对下面程序,若输入数据同上,则程序运行结果为include <srdio.h>aain()(char c;while tputchar (getchar()'?");15)请读者上机运行下面的程序,并仔细体会两个程序运行结果的不同. 程序1#include <stdio.h>main() (char c;while (c - getchar() != 1n1)(putchar(c);printf("End!n");程序2#include <stdio.h

20、>main()(char c;while (c = getchar() = '$') (putchar(c);1printf("End!nM); 运行时输入:abcdefg$abcdefgZ则两个程序的运行结果分别为 e【参考答案】(5)程序1运行结果:abcdefg$abcdefgEnd!程序2运行结果:abcdefgEndl(6)下面程序的运行结果为。#include <stdio.h>main()(int i. j, k;char space = 1;for (i-1;i<=4;1+) for (j-l; j<=i; “ + )(p

21、rintf("%c*,space);for (k=l; k<=6; k-+ + )( printf (*);) print f("Xn");)【参考答案】(6)(7)下面程序的运行结果为#include <stdio,h>main()(int n;for (n=l; n<=5; n+)(if (n % 2)( print f("* M;) else( continue;print,f ("#");printf(0$nH);)【参考答案】*#$4.4阅读程序,按要求在空白处填写适当的表达式或语句,使程序完整并符合

22、题目要求。【参考答案】(1)(year % 4 = 0 year % 100 != 0) 11 (year % 400 - 0) flag【参考答案】(2)(ch >= a && ch= 2) I I (ch >= 'A1 && ch <= Z) ch <= '9' && ch '0,ch二二,【参考答案】(3) fahr Celsius = 5.0 / 9 * (fahr - 20) fahr = fahr + step4.5 编程判断输入整数的正负性和奇偶性。流程图如商1-1所示。国1-

23、1习题4.5的流程图【参考答案】林include <stdio.h>main()(int m;printf("Input m:");scanf(*%de r &m); if (m >= 0)/输入一个整数3,./是否为正数/if (m%2 = 0)/是正数,且能被2整除,是正偶数/printf(M%dis a positive evenn- r mlelse/不能被2整除,是止奇数,/printf(*%d is a positive oddn", m);)else(if (m % 2 = 0)printf ("%d is a n

24、egative evenn- r m);/*是负偶数*/) else (printf (is a negative oddn m) ;/是负奇数/)程序的2次测试结果如下: Input m:6Z6 is a positive even Input m:-7Z-7 is a negative odd4.6 编程计算分段函数Jx>0y= 1%=0广 e”x<0输入人打印出y值。流程图如图1-2所示。【参考答案】include <stdio.h>#include <math.h> main() ( int x; double y;printf(pInput x:s

25、canf ("%d-r &x);/输入一个整数*/if (x > 0) (y = exp(-x) ; /如果大于0,计算v=exp (,x)的值 */ ) else if (x = 0) (y = 1;/*x=0,贝iy=l*/)else(y = exp(x); /*x<0> 则y=-exp(x)*/printf(*y=%fnH, y);)图1-2习题46的流程图程序的3次测试结果如下: Input x:4Z y=0.018316 Input x:0/ y=l.000000 Input x:-4/ y=-0.01831647 输入三用膨的三条必H,b.C*判

26、断亡俏能置构成三用花。若能构成三柏形指山足:何 种三角形(等腰三角形、巨角三柏形、一般三角形)。流程图如图1-3所示.图1-3 习理4.7的流程图t参考答案# include <st<3io . H> # include <math.H> #define LIMIT le-1malm()float a. b. c int flaa = 1 ;princt ( Hinput. tne ctiree adae lenath : ); aconf (*%f , %f z *£, &&, &b , &c) ;/,输入 H 角形的三

27、条边/if ( (a * k>) > c && ( (b 6 > a) && ( (a c> > b)/ 在三角形的基本条件*/ (if (fafosv= SMIT I I d(D-c) 3 LIMITI I fabs (C-a> <- LIMIT)/*等腔三角形的条件*/( print f (;.Cl&q = 0; ) i f ( f alos < a *a-b*k>-c*c) <- I.IMXTI 1哉 *a4-c*c b> LTM1HI I fabs (c u b*b-a*a) v-

28、LIMIT) /,宜向三角形的条件*/ (prinnf("宜用”); flay = O; ) if (flay) ( ptr工nu£ « ”一般"); ) print f("二角形、n"); > el ae < print f ("不是三角滋n。);程序的4次测试结果如下, Input tHe Ctiree 宜向三角形 Input: the 匕等腰三角形 Input tne tnree 等腰直角三用形 input tHe three不是三角形edge:3,45 /vdQ。:4 4 5/edge;1O,10.14

29、.14 /edge x 3 . 49/4.8在屏幕上显示一张如下所示的时间表:* * * *Tiine* * *1 morning 2 afternoon 3 night Pl ease enter your choice: 操作人员根据提示进行选择,程序根据输入的时间序号显示相应的问候信息,选择1时显 示"Good morning",选择 2 时显示“Good afternoon,选挣 3 时显示"Good night”,对F其他 选择显示"Selection error?',用switch语句编程实现”【参考答案1#include <s

30、tdio.h> main() ( char c;printf (/Time f'n");printf(*1 morning n");printf(*2 afternoon n*); princf("3 night n"); print f "please enter your choice" >/,建立相应的菜单 */c e getchar () ;/输入选项/switch tc)/女通过switch选择 */( case "I": printf("Good morning nw);

31、break; case 12,: printf(MGood afternoon nB); break; case '3 morning afternoon night Please enter your choice:1Z Good monlng Fm9 1 morning 2 afternoon 3 night Please enter your choice:3/ Good night程序的3次测试结果如下: Input yeartmonthi 1988,5/31 days input yearrmonth: 1988,2/ 29 days Input year,month: 19

32、89,2/28 days程序运行结果,sum=13002450: printf("Good nightnH); break; default: printf("Selection error!nR); ) )程序的2次测试结果如下:4.9读入一个年份和月份.打印出该月有多少天(考虑闰年),用switch语句编程。 隅示:闰年的2月有29天,平年的2月有28天.【参考答案】#include <stdio.h> main()(int year, month;printf(Input year,month: );scanf ("%dr , &year

33、, &month); /*垓入相应的年和月*/ switch (month) ( case 1; case 3: case 5: case 7: case 8: case 10: case 12:printf(M31 daysn*); break; case 2:if (year % 4= 0 && year % 100 (0) I I (year % 400 = 0) ( princf029 daysn");闰年的2月有29天育/ else (princf (M28 daysnB,) ;/平年的2月有28天 */ break; case 4: case 6:

34、 case 9: case 11:printf(*30 daysn*);break; default sprintf(* input error Ir"); ) 4.10编程计算1+3+5+7+99+101的值。【参考答案】算法1利用for循环语句实现,在循环体外为sum赋初 值8流程图如图14所示。#include <stdio.h>)(int i, sum = 0;for (i « 1; i <= 101; i = i.2) (sum = sum i;)printf ("sum=j%dn*, sum);)券法2利用while循环语句实现,在循

35、环体外为i和sum赋初值。#include <stdio.h>mainO(int i - lr sum a 0;while (i <= 101)(sum 二 sum i;1 =2:)print f (suro=%dn*/ sum);程序运行结果,suin=26014.11 编程计算 1*29+3*4*5+99*100*101 的值。【算法思想】 用累加和算法,通项公式为term=i*(i+l)*(i+2); i=L3,99;或者公式为 termWi-D*i*(i+D;i=2>4,100:步长为2,流程图如图15所示。【参考答案】图15习题4.11的流程图#include

36、 <stdio.h>(int i ;long term, sum = 0;for (i = 1; i 99; i = i 2)(term = i (i * 1) * (i + 2);sum 二 sum + term;)printf(sum=&ld.,sum);4.12 编程计算1!+2!+3!+4!+10!的值.【参考答案】算法1用累加和算法,累加项为term=term*i"=l, 2, 循环完成。流程图如图1-6所示。#include <stdio.h>main。(long term = 1#sum = 0;int i;for (i 1 ; i &l

37、t;= 10; ii)(term = term * i;sum = sum tern;)printf.+10l =n“, sum);)算法2用内层循环求阶乘,外层循环控制累加的项数。Sinclude <stdio.h>main()(long term ,sum = 0;10-erm初值为1,使用单重图16习题4.12的流程图int i, j; for (i = 1; i <= 10; i+)term = 1;for (j = 1; j = i; j+) (term = term * j;) sum = sum term;)printf C 1!*2= %ld sum);)程序

38、运行结果:1!+2! j+10! k 40379134.13 编程计算a+aa+aaa+aaa (n个a)的值,和a的值由键盘输入。【算法思想】 用累加和算法,累加项为tenn=term*Ha; i=l, 2,,n: term初值为0。 流程图如图17所示。参考答案】include <stdio.h> main() (long term = 0,sum = 0; int a r ir n;printf('input azn: "); scanf (-%d, %d" # &a, &n> ;/输入a,n的值/for (i - 1; i

39、<= n; i+) (term : term 10 a; 求出累加项/ sum = sum + term;/* 进行累加/) printf (*sujn=%ldn* r sum);)图17习题4J3的流程图程序运行结果: Input a,n:2,4 / sum=24684.14 利用5=2x4x4xqx2x;X的前 100 1页之积计算兀的值。2 13 3 5 5 7【参考答案】 律法1 采用累乘积算法,索乘项为term=n*n/(n.】)(n+l); n=2.4,100;步长为2。流程图如图18所示。It include <stdio .h>main()( float te

40、rm, resulc 丁 i; /,祟乘项初值成为*/ int n;for (n = 2; n <= 100; n = n +- 2) (texTn = (float) ( n n) / ( ( n - 1) ( n 1) ); result: s result * term; printf("result = ifn* t 2*result);)0B 1-8习题4.14的旋即图算法2 采用期乘积算法.景乘项为term=2*n*2*n/(2*nl)*(2*n+l);n=l,2,50:步长为1。#include <stdio.h>main()(float result

41、 = 1rtern; int n;for (n = 1; n <= 50; n+)(term = (float) (2*n*2*n) / (2*n-l) * (2*nl) ) ;/讨算累乘项/result = result term;)printf("result = %fnB r 2*rAsulc);程序运行结果:result = 3.1260784.15利用泰勒级数b1+L+,+L+工,计算e的近似值。当最后一项的绝对值小于 1! 2! 3! n!10.s时认为达到了精度要求,要求统计总共累加了多少项。【参考答案】#include <math.h>main()i

42、nt n = 1, count =1;float e = 1.0, term = 1.0; while (fabs(term) >= le-5) ( term = term / n; e = e + term; n+;count - ;)printf(Mc , %f, count = %dn"/ e, counc); ) 程序运行结果:e - 2,178282, count _ 104.16 计算1-: +白-4直到最后一项的绝对值小于IO”为止。【参考答案】1/include <stdio.h>钵 include <math.h>main。int n

43、= 1;float term = 1.0, while (fabs(term)sign = 1,sum = 0;>=le-4)/判断末项大小/(term = sign /n;sum . gum i term; sign = -sign;/会求出累加项,/*累加/*改变项的符号*/ 分母加1/printf(*sum = )程序运行结果?sum);sum0.6930924.17 利用泰勒级数sin (x)-,计算sin (x)的值。要求最后一 3. 5. 7. 9.项的绝对值小于IO”,并统计出此时累加了多少项。【参考答案】 #include <math.h> main() in

44、C n = 1r count = 0; float x;double sum , term;/因为位数多,所以定义为双精度*/printf("Input x:"); scanm, &x); sum = x; Germ = x;/* 赋初值 *7do (/计算相应项,并改相应符号/cenr. = -term * x * x / < (n + U (n + 2); sum = sum term:/ ,索加 * /n = n 2;count 4-+;while (fabs(term) >= le-5);printf("sin(x) = %f, cou

45、nt = %dn-, sum, count); )程序运行结果:Input x:3Z (输入的值为弧度) sin(x) = 0.141120, count = 84.18 打印所有的“水仙花数所谓“水仙花数”是指一个.三位数,其各位数字的立方 和等于该数本身,例如,153是“水仙花数”,因为153=13+345、【参考答案】include <stdio.h>main() (int i, j, k/ n; printf(result is:");for (n = 100; n < 1000; n:+) i = n / 100;/分出百位/j = (n - i * 10

46、0)/ 10; “分出十位/k = n % 10;/*分出个位*/if (i*100 + j*10 + k = i*i*i j*j*j + k*k*k) (printf ("%dt,,n);/*输出结果*/prinCf("n");程序运行结果:result is:153 370 371 4074.19 从键盘任意输入一个4位数乂编程计算/的每一位数字相加之和(忽略整数前的 正负号)。例如,输入x为1234,则由1234分离出其千位1、百位2、十位3、个位4,然后 计箕1+2+3+4=10,并输出10o【参考答案】/include <stdio.h>#i

47、nclu.de <math.i>main()(int il, 12r 13. i4, kr n;printfi"Input data is:°);.scanf(, &n);k = fabs(n) ;/取绝对值/iiek / looo;/分离出千位/i2 = (k - il * 1000) / 100;/分典出百位/13 = (k - L1 * 1000 - i2 * 100) / 10;/分题出卜位/i4 = k % 10;/育分离出个位*/print f (*The sum of the total bit is %dn”, ilfi2*i3i4);)

48、程序的2次测试结果如下: Input data 5s :1234ZThe sum of the total bit is 10 Input data is :-5678ZThe sum of the total bit is 26420韩信点兵。韩信有一队兵,他想知道有多少人,便让土兵排队报数。按从1至5报 数,曷末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数, 最末一个士兵报的数为4:最后再按从1至11报数,最末一个士兵报的数为10。你知道韩信 至少有多少兵吗?【算法思想】设兵数为x,则按题意x应满足下述关系式:x%5 =1 && x*6=5 &

49、amp;&x %7=n4 && x*ll=10采用穷举法对x从1开始试验,可得到韩信至少有多少兵。流程图如图L13所示。【参考答案】4include <stdio.h> matn()(int x x 1int find=0;/*设置找到标志为假/while (!find) (if (x % 5 = 1 && x * 6 = 5 && x * 7 ;= 4 && x * 11 = 10)(find = 1;xi;)printf( x =x);)程序运行结果:x = 21124.21爱因斯坦数学题。爱因斯坦曾出过这

50、样一道数学题:有一条长阶梯,若每步跨2阶. 最后乘.下I阶:若每步跨3阶,最后剩下2阶;若每步跨5阶,最后剩下4阶;若每步跨6 阶,最后剩下5阶:只有每步跨7阶,最后才正好】阶不剩。请问,这条阶梯共有多少阶?【参考答案】 采用穷举法对x从1开始试验,可计算出这条阶梯共有多少阶。i main()(int x = find = 0; while (1 find) (if (x % 2 -= 1 && x % 32 && x % 5 =;= 4 && x % 6 =- 5&& x * 7 = 0) (find = 1; x一;)prin

51、tf (* x = %dnR # x);)程序运行结果:x = 1204.22三色球问题。若一个口袋中放有12个球,其中有3个红色的,3个白色的,6个黑 色的,从中任取8个球,问共有多少种不同的颜色搭配?【算法思想】 设任取的红球个数为3臼球个数为j,黑球个数为匕 根据题意,红、白 黑球个数的取值范围应分别为0<=i<=3, 0<=j<=3, 0<=k<=6o只要满足I+j+k=8,则i, j, k 的组合即为所求。流程图如图1-15所示。【参考答案】 tinclude <stdio.h>nain()int i, j. k;for (i =0;

52、i <= 3; i*+) (for (j = D; j <= 3; ") (for (k = 0; k <= 6; k+) (if (i + j t- k = 8) (printf("i-%dr j=*d, k=%dnw, i, j, k); )程序运行结果:i=0 j =2,k=6 i=0tf j =3 4 k=5 i=l.j=l,k=6 i=l,3=2,k=5 i=lr j = 3 e k=4 i=2r j = 0 r k= 6 i=2,j=I,k=5 i=2,j=2,k=4 i=2,j=3,k=3 i-3i = 3 r j=lr k = 4 i=3.

53、j=2,ks 3 i=3,j 华 3.k=2423鸡兔同笼,共有98个头,386只脚,编程求鸡、兔各多少只。【算法思想】设鸡数为X,兔数为y,据题意有x+y=98, 2x+4y=386”采用穷举法,x从1变化到97, y取98-x,如果x, y同时满足条件2x+4y=386,则打印x, y的值。【参考答案】#include <stdio.h>(inr x, y;for (x = 1; x <= 97; x*4) (y = 98 - x;iE (2 * x <1 * y = 386) printf(= %dz y =宅d'.x, y); )程序运行结果:x = 3

54、/ y = 954.24我国古代的张丘建算经中有这样一道著名的百鸡问题:“鸡翁一,值钱五;用母 一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”其意为:公鸡每只5 元,母鸡每只3元,小鸡3只1元。用100元买100只鸡,问公鸡、母鸡和小鸡各能买多少只?【算法思想】设公鸡、母醇、小鸡数分别为x, y, z,依题意列出方程蛆x+y+z=100,5x+3y+z/3=100,采用穷举法求解,因100元买公鸡最多可买20只,买母鸡城多可买33只, 所以,x从0变化到20, y从0变化到33,则z=100x-y,只要判断第2个条件是否满足即可.【参考答案】胃include <stdi

55、o-h> maln() ( int xr y, z;for (x = 0; x <= 20; x+4) (for (y x 0; y <= 33; y+) z = 100 - x - y;if (5*x 3*y + z/3.0 = 100) <printf(Mx=%d, y=%d4 z=%dn* r x, y, z); )程序运行结果:x=0,y=25,z=75x=4,y=I8,z=78x-8ry=llr z=81 x=12 /y=4,z=84425用1元5角钱人民币兑换5分、2分和1分的硬币(每一种都要有)共100枚,问 共有几种兑换方案?每种方案各换多少枚?【算法思想】 设5分、2分和1分的硬币各换x,y,z枚依速意有x+y+zul00,5x+2y+z=150, 由于每一种硬币都要有,故5分硬币最多可换2s枚,2分硬无最多可换73枚,1分硬币可换 I00-x.y枚,x, y, z只需满足第2个方程即可打印,对每一组满足条件的x, y, z值

温馨提示

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

评论

0/150

提交评论