![计算机课件15函数_第1页](http://file4.renrendoc.com/view8/M02/22/22/wKhkGWcsP_GAIuVZAACijKwL-y8861.jpg)
![计算机课件15函数_第2页](http://file4.renrendoc.com/view8/M02/22/22/wKhkGWcsP_GAIuVZAACijKwL-y88612.jpg)
![计算机课件15函数_第3页](http://file4.renrendoc.com/view8/M02/22/22/wKhkGWcsP_GAIuVZAACijKwL-y88613.jpg)
![计算机课件15函数_第4页](http://file4.renrendoc.com/view8/M02/22/22/wKhkGWcsP_GAIuVZAACijKwL-y88614.jpg)
![计算机课件15函数_第5页](http://file4.renrendoc.com/view8/M02/22/22/wKhkGWcsP_GAIuVZAACijKwL-y88615.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ProgramminginC
c程序设计
ProgramminginC
西安电子科技大学计算机学院张淑平
西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China1
.上次课要点__________ProgramminginC
•函数定义
•形式参数doubleCelsToFahr(intc)
•函数调用(
•实际参数doublet;
•参数传递t=9.0/5*c+32;
•实际参数向形式参数传值return(t);
•函数返回值}
voidmain(void)
{intx;doubley;
printf(MCelsiustoFahrenheittable:\nn);
for(x=0;x<=100;x+=5){
y=CelsToFahr(x);printf(H%3d--%3g\tn,x,y);
膏形参和实参ProgramminginC
实参可以是常量、变量、表达式、函数等。无论实参是何
种类型的量,在进行函数调用时,它们都必须具有确定的
值,以便把这些值传送给形参。
>因此,应预先用赋值、输入等办法,使实参获得确定的
值。
形参变量只有在被调用函数执行时,才分配内存单元;调
用结束时,即刻释放所分配的内存单元。
>因此,形参只有在该被调用函数内有效。调用结束,返
回主调函数后,则不能再使用该形参变量。
•实参对形参的数据传送是单向的,即只能把实参的值传送
给形参,而不能把形参的值反向地传送给实参。
•实参和形参占用不同的内存单元,即使同名也互不影响。
西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China3
ProgramminginC
这次课的主要内容
参数传递
函数调用
嵌套调用
•递归调用
全局变量和局部变量
西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China4
ProgramminginC
&传值调用一
•函数调用执行时,将实际参数的值传递给形
式参数
main()
voidswap(intx,inty)inta,b,c;
{a=3;b=8;c=2;
intt;if(a>b)swap(a,b);
t=x;x=y;y=t;if(a>c)swap(a,c);
if(b>c)swap(b,c);
nf
printf(%d%d%d\a5b,c);
西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China5
ProsramminsinC
第;传值调用
•函数调用执行时,将实际参数变量的地址传
递给形式参数
main()
(
voidswap(int*x,int*y)inta,b,c;
{a=3;b=8;c=2;
intt;if(a>b)swap(&a,&b);
t=*x;*x=*y;*y=t;if(a>c)swap(&a,&c);
if(b>c)swap(&b,&c);
nf
printf(%d%d%d\a9b,c);
西安电子科技大学计算机学院-XidianUniversity,ChinaTC2.0
ProgramminginC
题数组作为函数参数______________
•数组作为参数有两种形式
•数组元素作为实参使用;
•把数组名作为函数的形参和实参使用
•数组元素是一个变量
intnum[5]={79,11,27,26,43};
num[O]79
num[l]11
num[2]27
num[3]26
num[4]43
西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China7
ProgramminginC
;数组名作为函数参数
•数组名可以作为实参和形参,传递的是数组
空间的首地址
voidsort(inta[]9intn)/*数组a白main()
{inti,j,temp;
for(i=0;i<n-1;i++){inti;
for(j=0;j<n-1-i;j++)intnum[6]={43,18,9,13,55,7};
if(a[j]>a[j+l]){
temp=a[j];a[j]=a[j-sort(num,6);
}/*endif*/for(i=0;i<6;i++)
}/*endfori*/printf(n%d\tn,num[i]);
西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,ChinaTC2.0
ProgramminginC
改组名作为函数参数(续)
•多位数组作为实参酒碗一
inti,j,max,num[3][4];
•例如:找出二维数组
for(i=0;i<3;i++){
intmax_value_Matrix(inta[]
for(j=0;j<4;j++){
{inti,j,line,col;
num[i][j]=rand();
max=a[0][0];line=0;co
printf(n%d\tn,num[i][j]);
for(i=0;i<m;i++)
}
for(j=0;j<n;j++)
printf(H\nn);
if(a[i][j]>max){max
}
printf(n%d,%d,line,co
max=max_value_Matrix(num,354);
returnmax;
printf(n%d\tn,max);
TC2.0
ProgramminginC
函数的嵌套调用
西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China10
令NProsramminsinC
初函数的嵌套调用____________________
O嵌套调用是指在执行被调用函数时,被调用
函数又调用了其他函数
西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,ChinaTC2.0
ProgramminginC
殛嵌套调用:排序
voidsort(inta[],intn)main()
{inti,j,temp;(
for(i=0;i<n-1;i++){inti;
for(j=0;j<n-1-i;j++)intnum[6]={43,18,9,13,55,7};
if(a[j]>a[j+l]){
swap(&a[j],&a[j+l]);sort(num,6);
}/*endif*/for(i=0;i<6;i++)
}/*endfori*/printf(M%d\f\num[i]);
西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,ChinaTC2.0
徵嵌套调用:求组合数ProgramminginC
longfact(intn)
・书架上有10本不同的书,
从中任取2本,有多少(
种取法?longt=1,i=1;
for(i=1;i<=n;i++)
<1010!t=t*i;
2)2!(10-2)!return(t);
longcombinations(intn,intk)
return(fact(n)/(fact(k)*fact(n-k)));
0E。子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,Ctl己事TC2.0
ProgramminginC
缪函数不能嵌套定义
•函数不能嵌套定义,即不能在一个函数内定
义另一个函数
longfact(intn)main()
longt=1,i=1;inti=1;
for(i=1;i<=n;i++){for(i=1;i<=10;i++){
t=t*i;printf(n%d!=%ld\nn,i,fact(i));
)}
return(t);
西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China14
ProgramminginC
函数的递归调用
西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China15
ProgramminginC
现函数的递归调用
•若函数在执行过程中直接或间接地调用自身,
称为函数的递归调用
•函数的递归定义)例如:n!=n*(n-1)!(n>l)
1n<=1
fact(n)={
n*fact(n-1)n>1
西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,Ct递归TC2.0
鹭函数的递归调用ProgramminginC
•在递归调用中,调用函数又是被调用函数,
执行递归函数将反复调用其自身。每调用一
次就进入新的一层。
•为了防止递归调用无终止地进行,必须在函
数内有终止递归调用的手段。常用的办法是
加条件判断,满足某种条件后就不再作递归
调用,然后逐层返回。
西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China17
ProgramminginC
£全局变量和局部变量___________
在函数中定义的变量是局部变量
在所有函数之外定义的变量是全局变量
形式参数是局部变量
西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China18
圆全局变量和局部变量ProgramminginC
局部变量只在定义它的函数中有意义
全局变量在所有函数中都有意义
intm9n;
intgcd(intx,inty)
main()
{
{
inti;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (高清版)DB37∕T 3048-2017 自主可控软件测试与认证规范
- 《避雷器测试》课件
- 【语文】学习活动三 辨识媒介信息课件 2024-2025学年统编版高一语文必修下册
- 《财务预算》课件2
- 语言和感知课件
- 秘书公共卷复习测试题
- 环境监测站-水分析练习卷含答案
- 汽车底盘电控系统检修-练习测试题附答案
- 二零二五年度文化传播公司艺人经纪合同
- 临床化疗药物外渗预防处理
- 2024-2025年第二学期团委工作计划(二)
- 骆驼养殖开发项目可行性报告设计方案
- 物理-河南省郑州市2024-2025学年高二上学期期末考试试题和答案
- 2025年南京信息职业技术学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 二零二五年知识产权共享及收益分成合作协议3篇
- 北师大版二年级数学上册计算题专项复习大全272
- 屋顶分布式光伏电站设计及施工方案
- 《幼儿教育政策与法规》教案-单元3 幼儿园的开办与管理
- 2024年09月2024渤海银行天津滨海新区分行校园招聘笔试历年参考题库附带答案详解
- 2024低血糖的急救诊断和治疗
- 期末考试成绩分析报告课件
评论
0/150
提交评论