第7章习题参考答案.doc_第1页
第7章习题参考答案.doc_第2页
第7章习题参考答案.doc_第3页
第7章习题参考答案.doc_第4页
第7章习题参考答案.doc_第5页
全文预览已结束

下载本文档

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

文档简介

实用C语言简明教程第7章习题参考答案1.C2.int add (int x, int y, int *z ) return *z=x+y;3. #include stdio.hvoid fun(int *x, int *y, int z) printf(%d,%d,%dn,*x,*y,z); *x=8; *y=5; z=(*x)/(*y);/红色部分为Turbo 2中实际运行的正确形式,否则“/*”有歧义main() int a=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. #include void calc(int x, int y, int *gcd, int *lcm);main() int a,b,c,d; printf(nPlease enter two integers(a,b):); scanf(%d,%d,&a,&b); calc(a,b,&c,&d); printf(nThe greatest common divisor of %d and %d is %d.,a,b,c); printf(nThe least common multiple of %d and %d is %d.,a,b,d);void calc(int x, int y, int *gcd, int *lcm) int max,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.hint doit(int a, int b, int m);main() int a,b,i; printf(nPlease enter 2 integers(a,b):); scanf(%d,%d,&a,&b); for(i=1;i=4;i+) printf(nThe %d result is %d.,i,doit(a,b,i); int doit(int a, int b, int m) switch(m) case 1: if(a=b)return a; else return b; case 3: return a+b; case 4: return a*b; B. 根据本章教学内容为指针,采用函数指针实现(但与题意并不完全体符合,因为是4个不同函数,doit作为函数指针调用这4个函数)#include stdio.hint min(int a, int b);int max(int a, int b);int sum(int a, int b);int product(int a, int b);main() int a,b,i; int(*doit)(); printf(nPlease enter 2 integers(a,b):); scanf(%d,%d,&a,&b); for(i=1;i=4;i+) switch(i) case 1: doit=min; break; case 2: doit=max; break; case 3: doit=sum; break; case 4: doit=product; break; (*doit)(a,b); int min(int a, int b) if(a=b)printf(nmaximum=%d,a); else printf(nmaximum=%d,b);int sum(int a, int b) printf(nsum=%d,a+b);int product(int a, int b) printf(nproduct=%d,a*b);3.#include #include #include double fun(double *x,double *y) double z; z=sqrt(*x)+sqrt(*y); return z;main() double a,b,c; printf(input a,b:); scanf(%lf%lf,&a,&b); c=fun(&a,&b); printf(c=%lfn,c);4.#include #include void fun(int a, int b, long *c) if(a=10&a=10&b=99) *c=b/10; *c=*c+(a%10)*10; *c=*c+(b%10)*100; *c=*c+(a/10)*1000; else printf(input error!

温馨提示

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

评论

0/150

提交评论