




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版数学六年级下册期末试卷(试题带答案)
- 2025年四川省宜宾县高三第三轮考试物理试题含解析
- 武汉理工大学《第二外语(法语)2》2023-2024学年第二学期期末试卷
- 河北省廊坊市广阳区达标名校2024-2025学年初三下学期阶段性抽测二(4月)物理试题含解析
- 宁夏理工学院《酒店公共关系学》2023-2024学年第二学期期末试卷
- 河南省许昌市许昌县2025届数学五年级第二学期期末预测试题含答案
- 厨房5S管理内容
- 南京师范大学《建筑CAD》2023-2024学年第二学期期末试卷
- 江西交通职业技术学院《医学发育生物学》2023-2024学年第一学期期末试卷
- 河北师范大学《越南文学简史》2023-2024学年第二学期期末试卷
- 联合国可持续发展目标
- 中小学网络安全教育主题班会《共建网络安全-共享网络文明》
- 七巧板中的分数问题
- 循环系统总论教案
- 万科精装修标准ABC
- 2023年新疆铁道职业技术学院单招面试模拟试题及答案解析
- 2023年中小学班主任基本功素质大赛情景答辩题(附参考答案)6篇
- GB/T 39489-2020全尾砂膏体充填技术规范
- 《民法》全册精讲课件
- 镁及镁合金的耐蚀性课件
- 企业标准编写模板
评论
0/150
提交评论