资源描述:
《第7章习题参考答案.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《实用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,%d",*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,%d",a,b,c
2、);}运行结果: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.#includevoidcal
3、c(intx,inty,int*gcd,int*lcm);main(){inta,b,c,d;printf("Pleaseentertwointegers(a,b):");scanf("%d,%d",&a,&b);calc(a,b,&c,&d);printf("Thegreatestcommondivisorof%dand%dis%d.",a,b,c);printf("Theleastcommonmultipleof%dand%dis%d.",a,b,d);}voidcalc(intx,i
4、nty,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
5、,b,i;printf("Pleaseenter2integers(a,b):");scanf("%d,%d",&a,&b);for(i=1;i<=4;i++){printf("The%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:r
6、eturna*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("Pleaseenter2integers(a,b):");scanf("%d,%d",&a,&
7、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("minimum=%d",a);elseprintf("minimun=%d",b);}intmax(inta,intb){if(a>=b)printf("m
8、aximum=%d",a);elseprintf("maximum=%d",b);}intsum(inta,intb){printf("sum=%d",a+b);}intproduct(inta,intb){printf("product=%d",a*b);}3.#include#include#includedoublefun(double*x,double*y){doublez;z=sq