C语言程序设计与实践 第3版 课件 第7章 程序模块化:函数.pptx

C语言程序设计与实践 第3版 课件 第7章 程序模块化:函数.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计与实践第3版课件

第7章程序模块化:函数;C是模块化程序设计语言;函数分类

从用户角度

标准函数(库函数):由系统提供

用户自定义函数

从函数形式

无参函数

有参函数;7.1函数的定义

一般格式;7.2函数的一般调用;7.2.2形式参数和实际参数;[例7.2]形参与实参示例。;[例7.3] 给定一个整数,编程判断这个数的回文数是否为素数(13的回文数是131,127的回文数是12721)。如果这个数的回文数是素数,则输出“prime”,否则输出noprime。;关于形参与实参的说明;[例7.4] 定义形式参数个数可变函数,计算一个通用多项式的值。当x=3时,计算下列两个多项式的值:;7.2.3函数的返回值;[例7.5]return语句示例;7.2.4函数调用的方式;(2)在赋值表达式中调用函数。如例7-5中的

“z=min(x,y);”

(3)在一般的运算表达式中调用函数。例如:

y=5.0*fpow(3.5,2)+4.5*fpow(5.5,2);

(4)将函数调用作为另一函数调用的实参。

printf(“%f\n”,fpow(2.5,4));

;7.2.5主调函数和被调函数的相对位置关系;主调函数和被调函数之间可作下列位置安排;(2)被调函数写在主调函数的后面。

;(3)如果已在所有函数定义之前,在文件的开头,在函数的外部声明了函数类型,则在各个主调函数中不必对所调用的函数再做类型声明。;7.2.6函数调用时值的单向传递性;7.2.6函数调用时值的单向传递性

形式参数:定义函数时函数名后面括号中的变量名

实际参数:调用函数时函数名后面括号中的表达式;说明:

实参必须有确定的值

形参必须指定类型

形参与实参类型一致,个数相同

若形参与实参类型不一致,自动按形参类型转换———函数调用转换

形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放

;例计算x的立方;参数传递方式

值传递方式

方式:函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值

特点:

形参与实参占用不同的内存单元

单向传递;#includestdio.h

voidswap(inta,intb)

{inttemp;

temp=a;a=b;b=temp;

}

main()

{intx=7,y=11;

printf(x=%d,\ty=%d\n,x,y);

printf(swapped:\n);

swap(x,y);

printf(x=%d,\ty=%d\n,x,y);

};7.2.7函数调用示例;程序如下:

#includestdio.h

intisPrime[100000]={0};//isPrime[i]==0表示:i是素数

intPrime[6005];//Prime存质数

intcnt=0;

voidGetPrime(intn)

{

inti,j;

isPrime[1]=1;

for(i=2;i=n;i++)

{

if(!isPrime[i])

Prime[++cnt]=i;

for(j=1;j=cnti*Prime[j]=n;j++)

{

isPrime[i*Prime[j]]=1;

if(i%Prime[j]==0)break;

}

}

}

intmain()

{

GetPrime(100000);

intk;

while(scanf(%d,k)!=EOF)

printf(%d\n,Prime[k]);

return0;

};7.3函数的嵌套调用

C规定:函数定义不可嵌套,但可以嵌套调用函数;例求三个数中最大数和最小数的差值;7.4递归调用

定义:函数直接或间接的调用本身叫函数的递归调用;计算n!;递归问题处理的条件;7.4.2函数的递归调用应用举例;7.5数组作为函数的参数;#includestdio.h

intcmp(inta,intb);

intmain()

{

intn,i,j,t,f[1000];

scanf(%d,n);

for(i=1;i=n;i++)

{

scanf(%d,f[i]);

}

for(i=1;i=n-1;i++)

{

for(j=1;j=n-i;j++)

{

if(cmp(f[j+1],f[j]))

文档评论(0)

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

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档