谭浩强C程序设计第三版课后答案(整本书)

上传人:微*** 文档编号:171404671 上传时间:2022-11-26 格式:DOCX 页数:128 大小:322.67KB
收藏 版权申诉 举报 下载
谭浩强C程序设计第三版课后答案(整本书)_第1页
第1页 / 共128页
谭浩强C程序设计第三版课后答案(整本书)_第2页
第2页 / 共128页
谭浩强C程序设计第三版课后答案(整本书)_第3页
第3页 / 共128页
资源描述:

《谭浩强C程序设计第三版课后答案(整本书)》由会员分享,可在线阅读,更多相关《谭浩强C程序设计第三版课后答案(整本书)(128页珍藏版)》请在装配图网上搜索。

1、C程序设计(第三版)课后习题参考解答1.6写一个程序,输入a,b,c三个值,输出其中最大者。解:main ()int a,b,c,max;printf(“请输入三个数 a,b,c:nM);scanf(d,%d,%d”,&a,&b,&c);max=a;if (maxb)max=b;if (maxc)max=c;printf(u 最大数为:%d *max);第2章程序的灵魂算法2.1什么叫结构化的算法?为什么要提倡结构化的算法?解:由一些基本结构顺序组成的算法称为结构化的算法。由于在基本结构之间不存在非顺序的跳转,流程的转移只存在于一个基本结构范围之内,因而提高了算法的质量。2.7什么叫结构化程序

2、设计?它的主要内容是什么?解:结构化程序就是用高级语言表示的结构化算法。它的主要内容包括“自顶向下,逐步细化”的分析方法和“模块化设计”的解决方法,以及“结构化编码”的实现方法。第3章数据类型、运算符与表达式3.3请将下面各数用八进制和十六进制数表示:(1)10(2)32(3)75(4)-617(5)-111(6)2483(7)-28654(8)21003解:(1。)10=(8=(A)|6(2) (32)io=(40)8=(20)i6(3) (75)10=(113)8=(4B)16(4) (-617)10=(176627)8=(FD97)16此题可以这样考虑:带符号数在计算机中采用补码表示,正

3、数的补码与原码相同,负数的补码=模+真值。若使用16位存储,模为2珀=65536。-617的补码为65536+(167)=64919=(176627)8=(FD97)|6(5) (-111)10=(177621)8=(FF91)16(6) (2483)io=(4663)8=(9B3) i6(7) (-28654)10=(110022)8=(9012)16(8) (21OO3)10=(51O13)8=(52OB)163.4将以下三各整数分别赋给不同类型的变量,请画出赋值后数据在内存中的存储形式。变量的类型25-232769int型long 型sort 型signed char (8位)unsig

4、ned int 型unsigned long 型unsigned short 型unsigned char 型注:如果没有学过二进制和补码,此题可以不做。解:各数据在内存中的存储形式如下表所示:变量的类型25-232769int型00-0000110018位111111111111111015100001(溢出)14long 型00-00001100124111110310001000011614short 型00-0000110018111111111111111015100001(溢出)14signed char (8位)000110011111111000000001(溢出)unsign

5、ed int 型00-00001100111-11010000181514unsigned long 型00-0000110012411110000100001161431unsigned short 型00-000011001811110100001158unsigned char 型000110011111111000000001其中int和short类型,其取值范围是一3276832767。32769在这两种类型中实际表示负数,它是一个负数的补码,对其再求一次补码可得其真值,即一(65536-32769)=-327671) char和unsigned char为8位,若将int或long

6、类型数据赋给这种类型,则截取数据低8位。同理,若将long赋给int,则截取低16位。3. 5字符常量和字符串常量有什么区别?解:字符常量是一个字符,用单引号括起来。字符串常量是由0个或若干个字符组合而成,用双引号括起来,存储时自动在字符串最后加一个结束符号0。4. 6写出以下程序运行的结果:# includevoid main () char cl=*a c2=b c3=c, c4=101c5=116,;printf (a%c b%ct c%ct abcnM, cl, c2, c3);printf (44tb%c %c, c4, c5);解:程序运行的结果为:aa bb ccabcA N3.

7、7要将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“A”后面第4个字母是“E,用“E”代替“A”。因此,“China”应译为“Glmre”。请编一程序,用赋初值的方法使c1,c2,c3,c4,c5这5个变量的值分别为C, h,i, h,a,经过运算,使c1,c2,c3,c4,c5的值分别变为G, T,m, H并输出。解: main () char cl=C c2=h, c3=i c4=,n, c5=a;cl+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf(“密码是%c%c%c%c%cn, cl, c2, c3, c4, c5);)

8、运行结果:密码是Glmre3.8例2.6能否改成如下:main () int cl, c2;(原为 char cl, c2)cl=97;c2=98;printf (44%c %cn,cl, c2);printfC%d %dn, cl, c2);解:可以。因为在可输出的字符范围内,用整型和用字符型作用相同。3. 9求下面算术表达式的值。(1) x+a%3*(int)(x+y)%2/4设 x=2.5, a=7, y=4.7(2) (float)(a+b)/2+(int)x%(int)y设 a=2, b=3, x=3.5, y=2.5解:(1) 2.5(2) 3.53.10写出程序运行的结果。mai

9、n () int i, j, m, n;i=8;j=10;m=+i;n=j+;printf (4t%d,%d,%d,%d,i, j, m, n);解:运行结果为:9,11,9,103.11写出下面赋值的结果。格中写了数值的是要将它赋给其他类型的变量,将所有空格填上赋值后的数值。int9942chardXunsigned int7665535float53.65long int68解:int9910076536842-1char,dL5D,*,Xunsigned int991007653684265535float99.000000100.00000076.00000053.6568.00000

10、042.00(X)0065535.000000long int9910076536842655353.12出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。(1) a+=a(2) a-=2(3) a*=2+3(4) a/=a+a(5) a%=(n%=2), n 的值等于5(6) a+=a-=a*=a解:(1)24(2)10(3)60(4)0(5)0(6)0第4章最简单的C程序设计顺序程序设计4.4若 a=3, b=4, c=5, x=1.2, y=2.4 z=-3.6 u=51247, n=128765, c1=a, c2=b,想得到以下的输出格式和结果,请写出程序(包括定

11、义变量类型和设计输出)。要求输出的结果如下:a=D3nnb=D4D Dc=n5x=1.200000,y=2.400000,z=-3.600000x+y=D3.60n 口丫+2=-1.20口z+x=-2.40u=51247 n=128765cl=HDorD97(ASCn)c2=b,norn98(ASCII)解:main ()( int a,b,c; long int u,n; float x,y,z; char cl,c2; a=3;b=4;c=5; x=1.2;y=2.4;z=-3.6; u=51247;n=128765; cl=a,;c2= b prinlf(n”); printf( 5请写

12、出下面程序的输出结果:main () int a=5,b=7;float x=67.8564,y=-789.124;char c=A;*a=%2dn Db=%2d 口 c=%2dn,a,b,c); printf(t4x=%.6f,y=%.6f,z=%.6fn,x,y,z);printf(4*x+y=n%.2fn 口丫+2=%.2f 口z+x=%.2fn,x+y,y+z,z+x);printf(4u=%61dnnn=%91dn,u,n);prmtf(Mcl=,%c, or %d(ASCII)n,cl,cl);printf(Mc2=,%c, or %d(ASCII)n,c2,c2);long n=

13、1234567;unsigned u=65535;printf(%d%dn,a,b);printf(tt%3d%3dn,a,b);printf(f,%fn”,x,y);printf(44%-l Of,%-1 Ofn”,x,y);printf(44%8.2f,%8.2f,%4f,%4f,%3f,%3fW,x,y,x,y,x,y);printfC4%e,%10.2en,x,y);printf(44%c,%d,%o,%xn,c,c,c,c);printf(*%ld,%lo,%xn,n,n,n);printf(44%u,%o,%x,%dn,u,u,u,u);printf(%s,%5.3sn,COMPU

14、TERCOMPUTER);)运行结果:507 5口口767.856400,-789.12402367.856400D,-789.124023 67.86,nn-789.12,67.8564,-789.1240,67.856400,-789.1240236.785640e+01,D 口-7.9e+02A,65,101,411234567,4553207468765535,177777,COMPUTER, DCOM可以发现,输出数据中若有负号、e和小数点,这些字符也占位。4.6 用下面的scanf函数输入数据,使a=3, b=7, x=8.5, y=71.82,4=用c2=a。问在键盘上如何输入?

15、#include void main()(int a, b;float x, y;char cl ,c2;scanf(fcfca=%d b=%d”,&a,&b);scanf(4t %f%e”,&x,&y);scanf(%c %c,&cl ,&c2);)解:a=3Db=78.5O71.82ADa4.7 下面的 scanf 函数输入数据,使 a=10, b=20, c1=A, c2=a, x=1.5, y=-3.75, z=67.8,请问在键盘上如何输入数据?scanf(“%5d%5d%c%c%f%f%*f,%F,&a,&b,&c 1,&c2,&x,&y,&z);解:main ()(int a,b

16、;float x,y,z;char c 1,c2;scanf(i4%5d%5d%c%c%f%f%*f,%f&a,&b,&c l,&c2,&x,&y,&z);printf(4c&b=c(2) allb+c&b-c(3) !(ab)&!clll(4) !(x=a)&(y=b)&0(5) !(a+b)+c-l&b+c/2解:(1) 0(2) 1(3) 1(4) 0(5) 15.4 有3个整数a, b, c,由键盘输入,输出其中最大的数。解:方法一:程序如下:main () int a,b,c;printf(“请输入3个整数:scanf(d,%d,%d,&a,&b,&c);if(ab)if(bc)pr

17、intf(4tmax=%dn,c);elseprintfCimax=%dn,b);else if (ac)printfCb)? a:b;/*将a和b中的大者存入temp中*/max=(tempc)? temp:c;/*将a和b中的大者与c比较,取最大者*/printfC,3个整数中最大数是dn”,max);方法三:ab?(ac?a:c):(bc?b:c)运行结果:请输入3个整数:12,34,9/3个整数的最大数是34。5.5 有一函数:XX 1y =2x 11 x 10写一程序,输入x值,输出y值。解:程序如下main () int x,y;printf(“输入 x:”);scanf(%d”,

18、&x);if(xl)/* xl */y=x;printfC*x=%d3d,y=x=%dn”,x,y);)else if (x10)/* lWx100 II score9999)place=5;else if(num999)place=4;else if (num99)place=3;else if (num9)place=2;else place=l;printf(ikplace=%dn,place);printf(“每位数字为:”);ten_thou sand=nu m/10000;thousand=(int)(num-ten_thousand*10000)/1000;hundred=(in

19、t)(num-ten_thousand*10000-thousand*1000)/100;ten=(int)(num-ten_thousand*10000-lhousand*1000-hundred*100)/10;indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*1 OO-ten*10);switch(place)case 5:printf(M%d,%d,%d,%d,%d,ten_thousand,thousand,hundred,ten,indiv);printf(n反序数字为:”);printfC4%d%d%d%d%dn,i

20、ndiv,ten,hundred,thousand,ten_thousand);break;case 4:printf(4t%d,%d,%d,%d,thousand,hundred,ten,indiv);printf(“n反序数字为:”);printf(%d%d%d%d n”,indiv,ten,hundred,thousand);break;case 3:printf(d,%d,%cT,hundred,ten,indiv);primf(n反序数字为:”);printf(%d%d%d n”,indiv,ten,hundred);break;case 2:printf(4t%d,%d, tenj

21、ndiv);primf(n反序数字为:”);printf(4t%d%d n”,indiv,ten);break;case l:printf(d”, indiv);printf(n反序数字为:”);printf(t4%dn,indiv);break;运行结果:请输入一个整数(0-99999):98765Z位数=5每位数字为:9,8,7,6.5反序数字为:567895.8 企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元(100000区200000)时,其中10万元按10%提成,高于10万元的部分,可提成7.5%;200000IW400000时

22、,其中20万元仍按上述办法提成(下同),高于20万元的部分按5%提成;4000001600000时,高于40万元的部分按3%提成;6000001000000时,超过100万的部分按1%提成。从键盘输入当月利润I,求应发放奖金总数。要求:(1)用if语句编程序;(2)用switch语句编程序。解:计算利润时,要特别注意不同利润的不同提成比例。例如,利润为15万元,其中由10万元按10%的比例提成,另外5万元则按7.5%提成。(1) 用if语句编程序,main () long i;float bonus,bon 1,bon2,bon4,bon6,bon 10;bon1=100000*0.1;bon

23、2=bonI+100000*0.075 bon4=bon2+100000*0.05 bon6=bon4+100000*0,03 bon 10=bon6+4(X)000*0.015;printf(“请输入利润i: ”); scanf(ki”,&i);if (i= 100000) bonus=i*0.1;else if (i=200000)bonus=bon l+(i-l 00000)*0.075else if (i=400000)bonus=bon2+(i-200000)*0.05 else if (i=600000)bonus=bon4+(i-400000)*0.03 else if (i10

24、) then c=10;switch (c) case 0: bonus=i*0.1; break;case 1: bonus=bon l+(i-100000)*0.075; break;case 2:case 3: bonus=bon2+(i-200000)*0.05; break;case 4:case 5: bonus=bon4+(i-400000)*0.03; break;case 6:case 7:case 8:case 9: bonus=bon6+(i-600000)*0.015; break;case 10: bonus=bon 10+(i-1000000)*0.01;print

25、f(奖金是10.2,bonus);运行结果:请输入利润i:234000/奖金是:19200.005.9 输入4个整数,要求按由小到大的顺序输出。解:程序如下#include stdio.hvoid main()int t,a,b,c,d;printf(”请输入4个整数:”);scanf(n%d,%d,%d,%dn,&a,&b,&c,&d);printf(Ma=%d,b=%d,c=%d,d=%dn,a,b,c,d); if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(ad)t=a;a=d;d=t;if(bc)t=b;b=c;c=t;if(bd)t=b;b=d;d=t;

26、if(cd)t=c;c=d;d=t;printf(排序结果如下:nM);printf(M%d %d %d %dn;a,b,c,d);5.10 有4个圆塔,圆心分别为(2,2),(-2,2),(2,-2),(一2,-2),圆半径为1。见图4.4。这4个塔的高度分别为10m。塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为0)。解:程序如下main () int h=10;float x l=2,y I=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d 1,d2,d3,d4;printf(“请输入一个点(x,y):);scanf(4t%f,%f&

27、x,&y);/*求该点到各中心点的距离*/d l=(x-x l)*(x-x l)+(y-y 1)*(y-y 1);d2=(x-x2)*(x-x2)+(y+y2)*(y+y2;d3=(x+x3)*(x+x3)+(y-y3)*(y-y3);d4=(x+x4)*(x+x4)+(y+y4)*(y+y4);if(dll & d2l & d3l & d4l)h=0;/*判断该点是否在塔外*/printf(“该点高度为75);)运行情况:请输入一个点(x,y):0.5.0.7Z该点高度为0请输入一个点(x,y):2.1.2.3Z该点高度为10第6章循环控制6.1 输入两个正整数m和n,求其最大公约数和最小公

28、倍数。解:用辗转相除法求最大公约数main () int p,r,n,m,temp;printf(“请输入两个正整数n,m:);scanfC%d,%dM,&n,&m);if (nm) temp=n;n=m; m=temp;/*把大数放在n中,小数放在m中*/p=n*m;/*先将m和n的乘积保存在p中,以便求最小公倍数时用*/while (m!=0)/*求m和n的最大公约数*/ r=n%m;n=m;m=r;)printf(“它们的最大公约数为:dn”,n);printf(“它们的最小公倍数为:%dn-,p/n);/*p是原来两个整数的乘积*/运行情况:请输入两个正整数:12,8/它们的最大公约数

29、为:4它们的最小公倍数为:246.2 输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数。解:#include main () char c;int letter=0,space=0,digit=0,other=0;printf(“请输入一行字符:n);while(c=getchar()!=,n,) if(c=,a,& cv=z II c=A& cv=Z) letter+;else if(c=) space+;else if(c=,0,& cv=9) digit+;else other+;Iprintf(字母数=%d,空格数=%d,数字数=%d,其它字符数二%dn”,letter

30、,space,digit,other);)运行情况:请输入一行字符:My teachers address is “#123 Beijing Road,Shanghai”.字母数:38,空格数:6,数字数:3,其它字符数:66.3求 Sn=a+aa+aaa+aaa 之值,其中 a 是一个数字。例如:2+22+222+2222+22222 n个a(此时n=5), n由键盘输入。解:main () int a,n,i=1,sn=0,tn=0; printf(44a,n=:); scanf(tt%d,%d,;&a,&n);while (i=n) tn=tn+a;/*赋值后的tn为i个a组成数的值*/

31、sn=sn+tn;/*赋值后的sn为多项式前I项之和*/a=a*10;+i;printf(44a+aa+aaa+-=%dn”,sn);运行情况:a,n:2,5/ a+aa+aaa+,=246906.4 求Zn!(即求1+2!+20!)。解:main ()float s=O,t=l;int n;for (n=l ;n=20;n+)t=t*n;s=s+t;/*求 n;*/*将各项累加*/printf(*l!+2!+20!=%en,s);I运行结果:l!+2!+20!=2.56l33e+18注意:s不能定义为int型,因为int型数据的范围是-3276832767;也不能定义为long型,因为lon

32、g型数据的范围为一21亿21亿,无法容纳求得的结果。6.5 求解:#include stdio.h#include conio.hmain()(int nl = l00,n2=50,n3=10,k;float sl=O,s2=O,s3=O;for(k=1;k=n 1;k+)sl+=k;for(k=1;k=n2;k+)s2+=k*k;for(k=1;k=n3;k+)s3+=1.0/k;printf(,sum=%8.2An,s 1+s2+s3); getch();运行结果:47977.93o6.6 打印出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如,15

33、3是一个“水仙花数”,因为153=13+53+33o解:main () int i,j,k,n;printf(“水仙花数”是:);for (n=100;n1000;n+)i=n/100;j=n/10-i*10;k=n%10;if (n=i*i*i+j*j*j+k*k*k)printf(tt%4d,n);)printf(4knM);运行结果:“水仙花数”是:1533703714076.7 一个数如果恰好等于它的因子之和,这个数就称为“完数例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程序找出1000以内的所有“完数”,并按下面的格式输出其因子:6 Its factors ar

34、e 1,2,3解:方法一:/*定义寻找范围*/#define M 1000 main () int kl,k2,k3,k4,k5,k6,k7,k8,k9,kl0;/*a是21000之间的整数,检查它是否完数*/*n用来累计a的因子的个数/*s用来存放尚未求出的因子之和,开始时等于a*/*检查i是否a的因子*/*如果i是a的因子*/*n加1,表示新找到一个因子*/*s减去已找到的因子,s的新值是尚未求出的因子之和*/ /*将找到的因子赋给klklO*/int i,a,n,s;for (a=2;a=M;a+)n=0;s=a;for (i=l;i1) printf(d,%d”,k l,k2);/*n

35、l表示a至少有2个因子力if(n2) printf(,d”,k3);/*n2表示至少有3个因子,故应再输入一个因子*/if(n3) printf(4%d,k4);/*以下类似*/if (n4) printf(5) prinlf(,%d”,k6);if (n6) printf(,d”,k7);if(n7) prinlf(,%d”,k8);if (n8) printf(,d”,k9);if (n9) printf(4%d,k 10); printf(n”);)运行结果:6 Its factors are 1,2,328 Its factors are 1,2,4,7,14496 Its facto

36、rs are 1,2,4,816,31,62/24,248方法二: main ()int m,s,i;for (m=2;m10(X);m+)s=0;for (i=l;im;i+)if (m%i)=0) s=s+i;if(s=m)printf(d是一个“完数”。它的因子是“,m);for (i=l ;im;i+)if( m%I=0) printf (d”,I);printfCnM);)方法三:此题用数组方法更简单。main () int kll;int i,a,n,s;for (a=2;a=1000;a+)n=0;s=a;for (i=l;ia;i+)if(a%i)=0)n+;s=s-i;kn=

37、i;/*将找到的因子赋给kl,k10*/)if(s=O)printf(n%d是一个“完数”,它的因子是:,a);for (i=l;in;i+)printf(“d,”,ki);printf(dn”,kn);运行结果:6是一个“完数”,它的因子是:1,2,328是个“完数”,它的因子是:1,2,4,7,14496是一个“完数”,它的因子是:1,2,4,8,16,31,62,124,2486.8 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13,求出这个数列的前20项之和。解:main () int i,t,n=20;float a=2,b=l,s=0;for (i=l;i=n;i

38、+)s=s+a/b;t=a;a=a+b;/*将前一项分子与分母之和作为下一项的分子*/b=t;/*将前一项分子作为下一项的分母*/)printf(44sum=%9.6fn,s);)运行结果: sum=32.6602596.9 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少m?第10次反弹多高?#include stdio.hvoid main()(float sn=100,hn=sn/2;int n;for(n=2;n0)x 1=(x2+1)*2;/*第一天的桃子数是第二天桃子数加1后的2倍*/x2=xl;day;)printf(utotal

39、=%dn,x 1);)运行结果: total=15346.11 用迭代法求1 aX= M。求平方根的迭代公式为Xn+l =5(Xn)+Xn要求前后两次求出的X的差的绝对值小于10解:用迭代法求平方根的算法如下:(1) 设定一个X的初值Xo;(2) 用上述公式求出x的下一个值X1;(3) 再将X1代入上述公式,求出X的下一个值X2;(4) 如此继续下去,直到前后两次求出的X值(X。和X|)满足以下关系:IX向一 xnl10-5为了便于程序处理,今只用变量Xo和对,先令X的初值改尸3/2(也可以是另外的值),求出X|;如果此时I Xn+| Xn 121。7,则使XfXo,然后用这个新的X。求出下一

40、个XI;如此反复,直到IXn+i- X/VlOf为止。程序如下:# include main ()float a,x0,x 1;printf(44Enter a positive number:);scanf(tfc%f&a);/*输入 a 的值*/x0=a/2;xl=(x0+a/x0)/2;dox0=xl;x 1=(x0+ a/x0)/2;while(fabs(xO-x 1)=1 e-5);printf(4kThe square root of %5.2f is %8.5fnM,a,xl);运行结果:Enter a positive number:2/The square root of 2

41、.00 is 1.414216.12用牛顿迭代法求方程2xX4x2+3x-6=0在1.5附近的根。解:牛顿迭代法又称牛顿切线法,它采用以下方法求根:先任意设定一个与真实的根接近的值Xo作为第一个近似根,由Xo求出f(Xo),过(Xo,f(Xo)点做f(x)的切线,交X轴于X,把它作为第二次近似根,再由XI求出f(X|),再过(X|,f(X)点做f(x)的切线,交X轴于X2再求出f(X2),再作切线如此继续下去,直到足够接近真正的X*为止。fXx0)=-X) x0因此,-久也/(%)这就是牛顿迭代公式。本题中,f(x)=2x3-4x2+3x-6=(2x-4)x+3)x-6f(x)=6x2-8x+

42、3=(6x-8)+3#include stdio.h*#include math.h void main()float x 1,x0,f,f 1;xl =1.5;dox0=xl;f=(2*x0-4)*x0+3)*x0-6;fl=(6*xO-8)*xO+3;xl=x0-f/fl; while(fabs(x 1-x0)=le-5);printf(HTHe root of equation is %5.2fnu,xl);6.13用二分法求方程2x3-4x2+3x-6=0在(-10,10)之间的根。解:二分法的思路如下:先指定一个区间X,X2,如果函数f(x)在此区间是单调变化,可以根据f(X|)和f

43、(X2)是否同符号来确定方程f(X)=0在X1,X2区间是否有一个实根。若f(X|)和f(X2)不同符号,则f(X)=0在X,X21区间必有一个(且只有一个)实根。若f(X)和f(X2洞符号,说明在X,X2区间无实根,要重新改变X1和X2的值。当确定凶的有一个实根,采用二分法将X,X2区间一分为二,再判断在哪个小区间中有实根。如此不断进行下去,直到小区间足够小为止。算法N-S图如下:#include stdio.h#include math.hvoid main()(float xO,x 1 ,x2,fx0,fx 1 ,fx2;doprintf(Please enter xl,x2:n); s

44、canf(H%f,%f ;&x 1 ,&x2); fxl=xl *(2*x 1 -4)*x 1 +3)-6; fx2=x2*(2*x2-4)*x2+3)-6; while(fx 1 *fx20);do(x0=(xl+x2)/2;fxO=xO*(2*xO-4)*xO+3)-6;if(fx0*fxl= le-5);printf(x=%6.2Ann,xO);6.14打印出以下图案:解:main () int I,j,k;for (i=0;iv=3;i+)for (j=O;j=2-i;j+) printf();for (k=0;kv=2*i;k+) printf(*”);printf);)for (i

45、=0;i=2;i+)for (j=O;j=i+) printf ( );for (k=0;k=4-2*i;k+) printf(*”);printf(n”);)/*输出上面4行*号*/*输出*号前面的空格*/*输出*号*/*输出完一行*号后换行*/*输出下面3行*号*/*输出*号前面的空格*/*输出*号*/*输出完一行*后换行*/运行结果:*6.15两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X、Y、Z3人。已抽签决定比赛名单。有人向队员打听比赛名单。A说他不和X比,C说他不和X、Z比。请编程找出3对赛手的名单。解:用计算机程序处理此问题时,必须对每一种成对的组合一一检验,看他们是否符合条件。开始时,并不知道A、B, C与X、Y、Z中哪一个比赛,可以假设A与i比赛,B与j比赛,C与k比赛。#include stdio.h void main()(char i,j,k;/*i是A的对手,j是B的对手,k是C的对手*/ for(i=,X,;i=Z;i+) for(j=X;jv=Z;j+)if(i!=j)for(k=,X,;k=,Z;k+)if(i!=k &j!=

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!