C语言第6章问题答案,C语言答案第6章.doc

C语言答案第6章.doc

第6章习题6-1更正下面函数中的错误。1返回求x和y平方和的函数。 2返回求x和y为直角边的斜边的函数。 sum_of_sqx,y hypotdouble x,double y double x,y; hsqrtx*xy*y; returnx*xy*y; returnh; 解/*c6_11.c*/ /*c6_12.c*/1 2double sum_of_sqdouble x,double y double hypotdouble x,double y returnx*xy*y; double h; hsqrtx*xy*y;returnh;习题6-2下面函数的功能是什么(1)itoa int n, char s (2)int htodchar hex int i,dec0; static int i0,j0; fori0;hexi0 ifhexi0hexi9 ifn0 decdec*16hexi-0AhexiF j; decdec*16hexi-A10; cn100ahexif itoan/10,s; decdec*16hexi-a10; sic; returndec; else (3) void stodint n ifj0 sj0 sj00 ij0; putchar-;n-n; ifin/100 stodi; putcharn100; 答案(略)习题6-3编写已知三角形三边求面积的函数,对于给定的三个量正值,按两边之和大于第三边的规定,判别其能否构成三角形,若能构成三角形,输出对应的三角形面积。要求主函数输入10组三角形三边,输出其构成三角形的情况。/*c6_3.c*/ include stdio.hinclude math.hdouble sdouble a,double b,double cdouble s,ss;ifabcacbbca printfError Data; return -1; sabc/2;sssqrts*s-a*s-b*s-c;printfSlf,ss;return ss;void mainint i;double a,b,c;fori0;i10;i scanflf lf lf,a,b,c; sa,b,c;习题6-4分别编写求圆面积和圆周长的函数,另编写一主函数调用之,要求主函数能输入多个圆半径,且显示相应的圆面积和周长。答案(略)习题6-5设有两个一维数组a100,b100,试编写程序分别将它们按升序排序,再将a、b两数组合并存入c数组。使得c数组也按升序排序。若a、b有相等的元素,则把a数组的相等元素优先存入c数组中其中c数组为c200。/*c6_5.c*/include stdio.hinclude math.hvoid sortint a,int sizeint i,j,k,min;fori0;isize-1;i mini; forji1;jsize;jifaminaj minj; kai; aiamin; amink;void mainint a100,b100,c200;int i,ia,ib,ic;fori0;i100;i ai2*i1;bi2*i2;sorta,100;sortb,100;ia0;ib0;ic0;for ifaiabibcicaia;else if aiabibcicbib; else cicaia;ib; ifia100 for;ib100;ib cicbib;break; ifib100 for;ia100;ia cicaia;break; fori0;iic;i printf4d,ci;习题6-6编写一程序,把MN矩阵a的元素逐列按降序排列。假设M、N不超过10,分别编写求一维数组元素值最大和元素值最小的函数,主函数中初始化一个二维数组a1010,调用定义的两函数输出每行、每列的最大值和最小值。/*c6_6.c*/includestdio.hint testint tint i;fori2;it/2;i ifti0return 0;return 1;void mainint n;scanfd,n;printfresultd,testn;习题6-7编写一判别素数的函数,在主函数中输入一个整数,输出该数是否为素数的信息。/*c6_7.c*/numxint x;int i,l; fori2;ix;i ifxi l1; else l0; returnl;include“stdio.h mainint a,l; printf a value of a; scanfd,a; numa;ifl printfIt is a prime.;else printfIt is not a prime.;习题6-8编写程序,实现由主函数输入m、n,按下述公式计算并输出的值。/*c6_8.c*/include stdio.hint funcint nint i,s1;fori1;in;i ss*i;return s;void mainint m,n;scanfd d,m,n;printfd,funcm/funcn* funcm-n;习题6-9编写一个将两个字符串连接起来函数(即实现strcat函数的功能),两个字符串由主函数输入,连接后的字符串也由主函数输出。/*c6_9.c*/include stdio.hint strcat1char *s1,char *s2 int t; while*s1 s1; while*s2 *s1*s2; s1; s2; *s20; void main char *s1Test1Test2s,s1; /*putss1;*/习题6-10编写一个实现strcmp函数功能的函数,并试用主函数调用之。/*c6_10.c*/include stdio.hint strcmpchar *s1,char *s2int t;whilet*s1-*s20 s1; s2; if*s10 break;return t;void mainchar *s1Test1Test2strcmp s,sd,s1,s2,strcmps1,s2;习题6-11编写一个实现strcpy函数功能的函数,并试用主函数调用。答案(略)习题6-12编写一个实现strlen函数功能的函数,并试用主函数调用之。/*c6_12.c*/include stdio.hint strlenchar *sint t0;while*st t;return t;void mainchar *s1Test1strlen s d,s1,strlens1;习题6-13编写一函数,调用6.11题的函数,将字符数组char110的前5个字符复制到字符数组char210中。主函数实现字符数组char110的初始化,并输出复制后的字符数组ch210的内容。答案(略)习题6-14编写一函数实现用弦截法求方程x3-3x23x-90的近似根。主函数完成各系数值的输入及所求得的根值的输出。/*c6_14.c*/include stdio.hinclude math.hfloat ffloat xfloat y;yx-3.0*x3.0*x-9.0;return y;float xpointfloat x1,float x2float x;xx1*fx2-x2*fx1/fx2-fx1;return x;float rootfloat x1,float x2float x,y,y1;y1fx1;doxxpointx1,x2;yfx;ify*y0 y1y; x1x;else x2x;whilefabsy0.0001;return x;void mainfloat x1,x2,f1,f2,x;do printfn X1,X2; scanff,f,x1,x2; f1fx1; f2fx2;whilef1*f20;xrootx1,x2;printfRoot is f,x;习题6-15编写一函数实现用牛顿迭代法求方程ax3bx2cxd0在x1附近的一个实根。主函数完成各系数值的输入及所求得的根值的输出。迭代公式 fxnxn1xn- - fxn |xn1-xn|1e-5/*c6_15.c*/include math.hfloat roota,b,c,dfloat a,b,c,d;float x1,x1,f,f1;dox1x; fa*x1b*x1c*x1d; f13*a*x12*b*x1c; xx1-f/f1; whilefabsx-x10.00001;returnx;mainfloat a,b,c,d;printfEnter values to a,b,c,dn;scanfffff,a,b,c,d;printfnx8.4fn,roota,b,c,d;习题6-16编写程序完成用递归方法求n阶勒让德多项式的值。递归公式为 1 n0Hnx x n1 2n-1xHn-1x-n-1Hn-2x/n n1 /*c6_16.c*/include stdio.hdouble funcint n,double xswitchn case 0return 1; case 1return x; default return 2*n-1*x*funcn-1,x-n-1*funcn-2,x/n;void maindouble x0.1;int n5;printflf,funcn,x;习题6-17编写计算最小公倍数的函数,试由主函数输入两个正整数a和b调用它。计算最小公倍数的公式为lcmu,vu*v/gcdu,v u,v0其中,gcdu,v是u、v的最大公约数。lcmu,v是u、v的最小公倍数。/*c6_17.c*/int getgcdint m,int nint temp; whilemn ifmn tempm,mn,ntemp; mm-n; returnm; int getlcmint m,int nreturnm*n/getlcmm,n; include stdio.h mainint m,n,t; printfEnter values to m,nn; scanfdd,m,n; tgetlcmm,n; printfd,t;习题6-18编写一个计算x的y次幂的递归函数,x为double型,y为int型,函数返回值为double型。函数中使用下面的格式 powerx,01.0; powerx,ypowerx,y-1*x;要求从主程序输入浮点数,调用这个递归函数,求其整数次幂。/*c6_18.c*/include stdio.hdouble powerdouble x,int yswitchy case 0return 1; defaultreturn powerx,y-1*x;void maindouble x2;int y5;printflf,powerx,y;习题6-19将6.3题改为用带参数的宏名来求面积。/*c6_19.c*/include math.hdefine na,b,c abc/2define sa,b,c,n sqrtna,b,c*na,b,c-a*na,b,c-b*na,b,c-cinclude stdio.hmainfloat a,b,c,d; fori0;i10;iscanffff,a,b,c; ifabcacbbcaa0b0c0 dsa,b,c,n; printfIt can a trianglen; printf“df,d; else printfIt can not a trianglen;习题6-20编写一个实现将十六进制数转换成相应十进制数的函数,并试用主函数调用之。/*c6_20.c*/include stdio.hint HexToIntchar *sint n0,t;char c;whilec*s t0; if 0cc9tc-0AccFtc-A10; if accftc-a10; nn*16t;return n;void mainchar *sA00Dd,HexToInts;习题6-21编写一个将英文字符串中所有字的首字符转换成相应大写字符的函数,并试用主函数调用。答案(略)习题6-22编写一函数avera,n,其中a是整型一维数组,n是a数组的长度,要求通过全局变量pave和nave将a数组中正数和负数的平均值传递给调用程序。/*c6_22.c*/include stdio.hdouble pave,nave;void averint a,int nint i;int v10,v20,t10,t20;fori0;in;iifai0 v1ai; t1;else v2ai; t2;pavedoublev1/t1;navedoublev2/t2;void mainint a61,4,5,-8,-1,-2;avera,6;printflf,lf,pave,nave;习题6-23编写一程序,每调用一次函数,显示一静态局部变量中的内容,然后为其加1。答案(略)习题6-24输入10个学生的3门课的成绩,分别用函数求1 每个学生的平均分;2 每门课的平均分;3 按学生平均分降序排列输出学生信息;4 统计不及格学生,输出其相应信息。5 编写一菜单主函数,菜单内容包括以上四部份。/*c6_24.c*/include stdio.hinclude conio.hdefine N 2int aN51,50,70,80,0,2,70,80,90,0;void func1int i,j;double s;fori0;iN;i s0; forj1;j4;jsaij; ai4s; printfNod, avglf n,ai0,s/3;void func2int i,j;double s;fori1;i4;i s0; forj0;jN;jsaji; printfClassd, avglf n,i,s/N;void func3int i,j;int t,k;fori0;iN-1;i ti; forji1;jN;jifat4aj4 tj;ifti kai0;ai0at0;at0k; kai1;ai1at1;at1k; kai2;ai2at2;at2k; kai3;ai3at3;at3k; kai4;ai4at4;at4k; fori0;iN;iprintfNod, score d d d n,ai0,ai1,ai2,ai3;void func4int i;fori0;iN;i ifai160ai260ai360 printfNod Failed,scoredddn,ai0,ai1,ai2,ai3;void mainchar c;do clrscr; printf1-func1 n; printf2-func2 n; printf3-func3 n; printf4-func4 n; cgetch; switch c case 1func1;break; case 2func2;break; case 3func3;break; case 4func4;break; printfPress any key to continue,PressNorn to Exitn; cgetch;while cNcn;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值