C程序设计 第7章 函数与编译预处理.pptVIP

  1. 1、本文档共44页,可阅读全部内容。
  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文档。上传文档
查看更多
第7章 函数与编译预处理 函数基础 函数嵌套调用 函数调用方式 局部变量和全局变量 动态变量和静态变量 宏定义 文件包含 函数 C语言使用函数实现特定的功能。 一个源程序文件是独立的编译单位,由函数组成。 函数之间相互独立,除main函数不能被调用外,其它函数可以互相调用。 函数分为库函数和自定义函数。 函数的定义 类型 函数名(类型 形参1,类型 形参2,…… ) { 声明语句 执行语句 } 说明:形参用于接收主调函数传来的数据,如果不需要则可以在括号中写void;类型指函数返回值的类型,如果函数不返回值,则类型是void。 例 main ( ) { void pp(void); /*函数声明*/ printf( Hello !\n); pp(); pp(); } void pp(void ) { printf(“$$$$$$$$$$$$$$\n); } 运行结果: Hello ! $$$$$$$$$$$$$$ $$$$$$$$$$$$$$ 形参和实参 函数在定义时,函数括弧中的变量称为形参,在函数调用时才分配空间。 调用函数时,函数括弧中的表达式称为实参,从左至右,一一对应,分别传给形参。 函数调用结束前,通过return语句返回值给主调函数。 实参可以是常量、变量或表达式,必须指定形参的类型。实参与形参的个数相等,类型应一致。 求和 main ( ) {int add(int x,int y); int a,b,c; scanf(%d,%d,a,b); c=add(a,b); printf(%d\n,c); }? int add(int x,int y) { int z; z=x+y; return (z); } 求多个累加和 main() { long sigma(int x,int y); long sum; sum=sigma(3,7)+sigma(5,10)+sigma(8,21); printf(%ld\n,sum);} long sigma(int x,int y) {long c; int i; for(i=x,c=0;i=y;i++) c+=i; return(c);} 注意 一个函数中可以有多个return语句,但是执行到一个return语句就结束函数的调用。 调用函数前应声明被调用的函数。如果不指出函数类型,默认是整型。 调用形式:函数名(实参表列)参数间用逗号分隔。 调用无参函数时,括号不能省略。 函数调用的方式 语句方式 如:pp(); 表达式方式 如:c=add(a,b); 实参方式 如:f=add(c,add(d,e)); 调用库函数,应该在文件开头用#include命令将所需的信息包含到本文件中来。 被调函数写在主调函数之前可以不说明。 函数的嵌套调用 不能嵌套定义函数,但可以嵌套调用函数。 嵌套调用特点是层层调用,逐级返回。 例如:用函数计算 1!+2!+3!+……+10! main ( ) {long sum(int); long s; s=sum(10); printf(“s=%ld,s); } 函数的递归调用 在调用一个函数的过程中直接或间接地调用函数本身,称为递归调用。 递归要素:递归公式、递归终止条件。 将一个正整数以二进制数的形式输出 void bin ( int x) { if(x/20) bin(x/2); printf(%d,x%2); } main ( ) { bin(12);} 运行结果: 1100 递归调用计算5! 方法: n!=n*(n-1)! 1!=1 程序 main ( ) {long fac(int n); int n =5; printf (%d!=%d\n,n,fac(n)); } long fac(int n) { long c; if(n==0||n==1) c=1; else c=n*fac(n-1); return(c); } 函数调用方式 数组元素可以作为实参,此时数组元素相当于普通变量,为传值调用。实参对形参的数据传递是单向传递,形参的值发生改变,并不会改变主调函数实参的值。 数组名可以作为函数的形参和实参,数组名做函数参数时,传递的是实参数组的首地址,结果实参数组和形参数组使用同一段内存单元。 交换变量的值 void swap(int x,int y) { int t; t=x;x=y;y=t;} main() { int a=

文档评论(0)

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

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

1亿VIP精品文档

相关文档