欢迎来到天天文库
浏览记录
ID:40657742
大小:45.00 KB
页数:3页
时间:2019-08-05
《(实验六)模块化(函数)程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验六模块化(函数)程序设计一、实验目的l了解并掌握函数的定义方法l了解并掌握函数的调用方法l了解并掌握函数参数的单向传递l了解并掌握函数的递归调用二、实验环境l个人计算机一台,PIII500(或同等性能)以上CPU,128MB以上内存,500MB以上硬盘剩余空间。lWindows2000、WindowsXP或Win7操作系统lCode::Blocks(版本12.11或近似版本,英文版)三、实验内容1.课本习题完成课本P197第3题。/*example-22.c*/2.年龄谜题有5个人坐在一起,问第5个人多少岁?他说比第4个大2岁。问第4个人
2、多少岁?他说比第3个大2岁。问第3个人多少岁?他说比第2个大2岁。问第2个人多少岁?他说比第1个大2岁。最后问第一个人,他说是10岁。请问第5个人有多大?编写一函数fun来用递归调用来计算第5个人的岁数,并在main函数中调用它。/*example-23.c*/3.课本习题3完成课本P197第1题。例如:输入两个整数319和377,两者的最大公约数为29,两者的最小公倍数为4147。/*example-24.c*/【解题提示】两个整数a与b(a>b)的最大公约数gcd(a,b)可用辗转相除法来求得:若a%b=0,则gcd(a,b)=b;若a%
3、b=r¹0,则gcd(a,b)=gcd(b,r),即a与b的最大公约数等于b与r的最大公约数。把b赋给a,把r赋给b,获得新的a和b,继续这个过程。一定有一个时刻,b的值会为0,此时a即为原来的a和b的最大公约数。用公式表示如下:gcd(a,b)=gcd(b,r1)=gcd(r1,r2)=gcd(r2,r3)...=gcd(rn-1,rn),当rn=0,rn-1即为a和b的最大公约数。(a%b=r1,b%r1=r2,r1%r2=r3…ri%ri+1=ri+2)两个整数a与b的最小公倍数lcm=a*b/gcd(a,b),即为a和b的乘积除以两者
4、的最大公约数。4.结构体数据在函数之间的传递将下列程序补充完整,练习结构体变量作为函数参数和函数返回值的方法。在主函数中定义结构体变量s,并将其成员的初值赋为1、1.0和²example_1²;在子函数fun()中,将三个成员的值分别改为20、2.0和²example_2²,再传回到主函数中赋给s。程序的输出为:20,2.000000,example_2。/*example-25.c*/#include"stdio.h"#include"string.h"typedefstructst{inta;floatb;charc[20];}ST;fu
5、n(){}intmain(){s={10,1.0,"example1"};printf("%d,%f,%s",s.a,s.b,s.c);return0;}3四、总结与思考一般而言,程序都是有多个函数组成的,因为一个函数中实现的功能会造成逻辑混乱以及阅读上的困难。模块化的思想要求每个函数都只实现单一的功能,这也是实际的程序设计中,程序员所共同遵守的。因此,了解和掌握函数调用方法及函数之间的数据传递方法是非常重要的。只有掌握好了这些,才能让多个函数完美融合成一个整体。函数调用的难点是递归调用,关键在于在某个时刻,递归要能够结束,否则程序就会陷
6、入无穷的递归。在完成以上实验的基础上,有兴趣的同学可以在课后思考以下问题,该题难度较大:思考题:汉诺塔问题课本习题P19812/*think-4.c*/3
此文档下载收益归作者所有