C语言函数讲义.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
函 数(自定义子函数) 1个C源程序=1个主函数[+若干子函数] 【函数的分类: (1)主函数、子函数; (2)系统函数(库函数):相当于子函数,只不过是系统开发人员编写的、用户自定义子函数; (3)带参数的函数(有参)、不带参数的函数(无参)】 函数:具有特定功能的程序段。 【引例】 任意读入2个数,调用子函数输出较大数。 #include stdio.h int max(a,b) /*子函数-被调函数*/ int a,b; /*形式参数、形参*/ {int c; if(ab)c=a; else c=b; return(c); } main( ) /*主调函数*/ {int x,y,z; scanf(%d%d,x,y); z=max(x,y); /*实际参数、实参*/ printf(MAX=%d\n,z); } 一、面向过程程序设计的总体思想 “自上而下、逐步细化”的模块化 函数就是一个个功能相对独立的模块(程序段)。 使用函数,是因为任务的功能比较复杂。 二、函数的定义(书写) 1、C中函数的定义是独立且平等的,即:“主、子函数的定义不分前后,且不可以嵌套定义。” 2、主、子函数的书写不分前后,但是当被调函数书写在主调函数的后面且返回值不为整型int时,必须在主调函数的说明部分(或在函数体外的前面)对被调函数加以说明: #includestdio.h main() { float AVE(int a,int b); int x,y; float av; scanf(%d%d,x,y); av=AVE(x,y); printf(%f\n,av); } float AVE(int a,int b) {return (a+b)/2.0;} 【格式】 返回类型名 函数名( ); 或 返回类型名 函数名(类型名 形参1,类型名 形参2,…); 或 返回类型名 函数名(类型名,类型名,…); 3、函数的分类: (1)有参函数 【书写格式】 格式一: 函数返回类型 函数名(形参1,形参2,…) 对形参进行说明; {函数体 [return语句;] } 格式二: 函数返回类型 函数名(类型名 形参1,类型名 形参2,…) {函数体 [return语句;] } (2)无参函数 函数返回类型 函数名( ) {函数体 [return语句;] } 另外的划分:有返回值的函数和无返回值的函数(则“函数返回类型”为void)。 三、自定义子函数的使用(调用)说明 1、主函数一般做主调函数(即使带参数,也不能自己调用自己),子函数通常做被调函数,但也可以做主调函数,调用别的子函数或自己。 2、程序的执行总是从主函数开始到主函数结束,除非遇到exit函数语句。 (【格式1】exit(0); 【格式2】exit(1); 两种格式都可以立即终止整个程序的执行。) 4、return语句的格式: 格式一:return(表达式); 格式二:return 表达式; 格式三:return; 【功能】格式一与格式二的功能完全相同:将表达式的值(一个值)带回到主调函数的调用点,且立即终止所在函数的执行。格式三只能终止所在函数的执行并返回主调函数的调用点,但不带回值(因此很少用,通常可以省略)。 四、例题: 1、哥德巴赫猜想:任意一个大偶数(大于等于4)都可以拆分成两个素数之和。 编程验证。 #include stdio.h #include math.h main() {long x,s1,s2; do scanf(%ld,x); while(!(x=4x%2==0)); if(x==4)s1=s2=2; else /*多次拆分、判断*/ {s1=3; s2=x-s1; while(!PDSS(s1)||!PDSS(s2)) {s1=s1+2; s2=s2-2; } } printf(%ld=%ld+%ld\n,x,s1,s2); } /*以下编写PDSS子函数*/ /*是素数返回1;不是素数返回0*/ int PDSS(long s) {int flag=1; long k; for(k=3;k=sqrt(s);k++) if(s%k==0){flag=0;break;} return flag; } 2、一元非线性方程求根。 (1)牛顿迭代法 牛顿迭代法又称牛顿切线法:先设定一个与真实的根接近的值作为第一次近似根,过(x0,0)这一个点作x轴的垂线,交y=f(x)于点(x0,f(x0)), 过(x0,f(x0))点做f(x)的切线,交x轴于x1,把它作为第二次近似根,再由x1求出f(x1),过(x1,f(x

文档评论(0)

x5511160 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档