(实验六)模块化(函数)程序设计.doc_第1页
(实验六)模块化(函数)程序设计.doc_第2页
(实验六)模块化(函数)程序设计.doc_第3页
全文预览已结束

下载本文档

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

文档简介

实验六 模块化(函数)程序设计一、实验目的l 了解并掌握函数的定义方法l 了解并掌握函数的调用方法l 了解并掌握函数参数的单向传递l 了解并掌握函数的递归调用二、实验环境l 个人计算机一台,PIII500(或同等性能)以上CPU,128MB以上内存,500MB以上硬盘剩余空间。l Windows2000、Windows XP或Win 7操作系统l Code:Blocks(版本12.11或近似版本,英文版)三、实验内容1. 课本习题完成课本P197第3题。/*example-22.c*/2. 年龄谜题有5个人坐在一起,问第5个人多少岁?他说比第4个大2岁。问第4个人多少岁?他说比第3个大2岁。问第3个人多少岁?他说比第2个大2岁。问第2个人多少岁?他说比第1个大2岁。最后问第一个人,他说是10岁。请问第5个人有多大?编写一函数fun来用递归调用来计算第5个人的岁数,并在main函数中调用它。/*example-23.c*/3. 课本习题完成课本P197第1题。例如:输入两个整数319和377,两者的最大公约数为29,两者的最小公倍数为4147。/*example-24.c*/【解题提示】两个整数a与b(ab)的最大公约数gcd(a, b)可用辗转相除法来求得:若a%b=0,则gcd(a, b)=b;若a%b=r0,则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=r3ri%ri+1=ri+2)两个整数a与b的最小公倍数lcm=a*b/gcd(a, b),即为a和b的乘积除以两者的最大公约数。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.htypedef struct st int a; float b; char c20; ST; fun( ) int main() s = 10, 1.0, example1; printf(%d, %f, %sn, s.a, s.b, s.c); return 0;四、总结与思考一般而言,程序都是有多个函数组成的,因为一个函数中实现的功能会造成逻辑混乱以及阅读上的困难。模块化的思想要求每个函数都只实现单一的功能,这也是实际的程序设计中,程序员所共同遵守的。因此,了解和掌握函数调用方法及函数之间的数据传递方法是非常重要的。只有掌握好了这些,才能让多个函数完美融合成一个整体。函数调用的难点是递归调用,关键在于在某个时刻,递归要能够结束,否则程序就会陷入无穷的递

温馨提示

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

评论

0/150

提交评论