C语言实验6函数.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验6 函数 实验要求: 1.掌握C语言函数定义及、声明、及调用的方法; 2.掌握主调函数和被调函数之间的参数传递方式#includestdio.h int fun(int p) { int n=1,day; for(day=1;day=p;day++) n=(n+1)*2; return n; } void main() { int n,day; printf(Please input day:); scanf(%d,day); n=fun(day); printf(%d,n); } (1)算法分析:解决此问题采取逆向思维的方法,从后往前推断。 (2)子函数分析:本题的子函数写在主函数的上面,并设置成带有返回值,当然也可以改成不带返回值的。参数的传递过程是将主函数中day的值传给子函数的参数p,代表已过的天数。题目中说“到第5天早上想再吃时”,此题中的子函数可以实现任意天的计算,比如9天,8天吃光,这个值由主函数输入。另外变量n表示#includestdio.h void main() { long fun(int n); int n; printf(Please input n:); scanf(%ld,n); printf(%d!=%ld,n,fun(n)); } long fun(int n) { long s; if(n==1) return 1; else { s=n*fun(n-1); return s; } } 分析: 此题目求n!时候采用了递归调用。其结束条件是当n的值减到1时停止递归调用,采用递归调用时候最主要一点就是一定在函数中明确递归的结束条件。而且递归的过程同学们也需要注意一下,书中151页图5-5表示的非常清晰,请参考。 此题子函数放在了主函数的下边,这样在主函数中要声明一下子函数,即语句long fun(int n);另外此题中的子函数也是有返回值函数。 3.判断一个整数是否为素数,是的输出YES,不是输出NO,这个整数由主函数输入。 #include stdio.h #include math.h int fun(int x) { int i,flag=1; if(x==2||x==3) return 1; else if(x==1) return 0; else { for(i=2;i=(int)sqrt(x);i++) if(x%i==0) flag=0; if(flag==1) return 1; else return 0; } } void main() { int x,flag; printf(Please input integer x:); scanf(%d,x); flag=fun(x); if(flag==1) printf(YES\n); else printf(NO\n); } 知识补充: 素数:它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积#include stdio.h float average(float a[10]) { int i; float ave,sum=a[0]; for(i=1;i10;i++) sum=sum+a[i]; ave=sum/10; return ave; } main() { float score[10],ave; int i; printf(Please input 10 numbers:\n); for(i=1;i10;i++) scanf(%f,score[i]); printf(\n); ave=average(score); printf(average score is %.2f\n,ave); } 说明:此题用数组名做函数参数,score是实参数组名,a为形参数组名。调用时数组类型一定要一致,数组名称可相同也可不相同,此题中不相同。 实验内容: 1.编写函数,求表达式的值,x有由主函数输入。(请同学们用有返回值和无返回值两种方式去做,练习简单的函定义、声明、及调用方法) 2.编写函数,按如下递归公式求函数值。 1 (n=0) fun(n)= (n0) 编写函数求数n所有质因子(所有为素数的因子)并输出,n由主函数输入。 4.哥德巴赫猜想之一是,任何一个大于5的偶数都

文档评论(0)

hong333666 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档