第7章习题参考答案.doc 5页

  • 32.50 KB
  • 2022-04-22 11:47:48 发布

第7章习题参考答案.doc

  • 5页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'《实用C语言简明教程》第7章习题参考答案1.C2.intadd(intx,inty,int*z){return*z=x+y;}3.#include"stdio.h"voidfun(int*x,int*y,intz){printf("%d,%d,%dn",*x,*y,z);*x=8;*y=5;z=(*x)/(*y);//红色部分为Turbo2中实际运行的正确形式,否则“/*”有歧义}main(){inta=1,b=2,c=3;fun(&a,&b,c);printf("%d,%d,%dn",a,b,c);}运行结果:1,2,38,5,34.void(*p)()5.注意递归回退时,前面各次递归中未执行完的代码仍要执行,第1次调用sub()时,n=8,k=1第2次调用sub()时,n=4,k=2第3次调用sub()时,n=2,k=4,停止递归执行*x+=k,即*x=4;接着开始递归回退过程,执行第2次调用sub()时未执行的*x+=k,这时k=2,得*x=6;返回第1次调用sub()时未执行的*x+=k,这时k=1,得*x=7;运行结果:7 上机实习题1.#includevoidcalc(intx,inty,int*gcd,int*lcm);main(){inta,b,c,d;printf("nPleaseentertwointegers(a,b):");scanf("%d,%d",&a,&b);calc(a,b,&c,&d);printf("nThegreatestcommondivisorof%dand%dis%d.",a,b,c);printf("nTheleastcommonmultipleof%dand%dis%d.",a,b,d);}voidcalc(intx,inty,int*gcd,int*lcm){intmax,min,i;if(x>=y){max=x;min=y;}else{max=y;min=x;}for(i=1;(max*i)%min!=0;i++);*gcd=max*i;for(i=min;i>=1;i--){if(max%i==0&&min%i==0){*lcm=i;break;}}}2.A.直接按教材题意4种计算都在一个函数doit中实现:#include"stdio.h" intdoit(inta,intb,intm);main(){inta,b,i;printf("nPleaseenter2integers(a,b):");scanf("%d,%d",&a,&b);for(i=1;i<=4;i++){printf("nThe%dresultis%d.",i,doit(a,b,i));}}intdoit(inta,intb,intm){switch(m){case1:if(a<=b)returna;elsereturnb;case2:if(a>=b)returna;elsereturnb;case3:returna+b;case4:returna*b;}}B.根据本章教学内容为指针,采用函数指针实现(但与题意并不完全体符合,因为是4个不同函数,doit作为函数指针调用这4个函数)#include"stdio.h"intmin(inta,intb);intmax(inta,intb);intsum(inta,intb);intproduct(inta,intb);main(){inta,b,i;int(*doit)();printf("nPleaseenter2integers(a,b):");scanf("%d,%d",&a,&b); for(i=1;i<=4;i++){switch(i){case1:doit=min;break;case2:doit=max;break;case3:doit=sum;break;case4:doit=product;break;}(*doit)(a,b);}}intmin(inta,intb){if(a<=b)printf("nminimum=%d",a);elseprintf("nminimun=%d",b);}intmax(inta,intb){if(a>=b)printf("nmaximum=%d",a);elseprintf("nmaximum=%d",b);}intsum(inta,intb){printf("nsum=%d",a+b);}intproduct(inta,intb){printf("nproduct=%d",a*b);} 3.#include#include#includedoublefun(double*x,double*y){doublez;z=sqrt(*x)+sqrt(*y);returnz;}main(){doublea,b,c;printf("inputa,b:");scanf("%lf%lf",&a,&b);c=fun(&a,&b);printf("c=%lfn",c);}4.#include#includevoidfun(inta,intb,long*c){if((a>=10&&a<=99)&&(b>=10&&b<=99)){*c=b/10;*c=*c+(a%10)*10;*c=*c+(b%10)*100;*c=*c+(a/10)*1000;}elseprintf("inputerror!");}main(){inta,b;longc;clrscr();printf("inputa,b:");scanf("%d%d",&a,&b);fun(a,b,&c);printf("Theresultis:%dn",c);}'