




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上一章知识 通过下 本讲教学理解“函数”与“面向过程的编程”的关系。 深入理解参数传递,尤其是“传递地址”的情况。 本章授课C程序基本 C程序结构#include<stdio.h>#includestdlib.h>
一个C一个源文一个源文两个头文{一个主函一个主函return0;} 一个C一个C若干头文 若干源文头文件头文件头文件
源文件
源文件1 2 函数 函数12函数函数 函 本章授课C程序基本 函数的 函数返回值类 areaofCircle(doubler{复constdoublePI= double 句构areaPI*r* 函体return 体} 动手 intadd(intx,int{return}
函数 o(char{printf("大家好 printf(“我是}voidvoid{printf(“printf(“} 函数定义 void 函数#include#include 形{constdoublePI=returnPI*r*}
intmain{double//toarea=//toreturn}
实 形式参数与实际#include<stdio.h>{constdoublePI=returnPI*r}intint{//todoreturn0;//todoreturn0;doubler,//toarea=areaofCircle}} 动手intAverage(intx,{doubleresult=(x+y)/return}
形参和printf(“%dprintf(“%d #include<stdio.h>#include<stdio.h>{constdoublePI=3.14159;returnPI*r*r;}int{doubler,//toarea=areaofCircle//todoreturn0;}returnreturn(表达式voidfoo(int int*{intreturn} 本章授课C程序基本 函数 函数自定义函数必须 后调主调函#includeint{doubler,//toarea=//toreturn
被调函{constdoublePI=returnPI*r}}} 函数表函数表函数c=10*printf(“%g”,主调程序保护现函数语 给形式参数(如果有)权交给被调函保存返回值(如果有)并将保存返回值(如果有)并将程序控制权交给 函数调用 ③ ③constdoublePI= returnPI*r #include int{doubler,//to area=//todoreturn0;}
可以这样调用函数吗 #include<stdio.h>int{doubler,//toarea=areaofCircle//toreturn}{constdoublePI=returnPI*r}
函数返回值类型函数名(参数类型参数1,…,参数类型参数{}返回值类型函数名(参数类型参数1,…,参数类型参数调用是否正确说明函数的类型和参数的情况,以保证程序编译时能调用是否正确函数原 标示了函数的返回值类型、函数名、参数个数和类,是函数的“名片函数原 和函数原型定义在返回类型、函数名、参数个数和类必须完全一函数原 不必包含参数的名字,而只要包含参数的类 #include<stdio.h>
函数原型#include<stdio.h>{constdoublePI=returnPI*r}int{doubler,//toarea=areaofCircle//toreturn}
int{doubler,//toarea=areaofCircle//toreturn}{constdoublePI=returnPI*r}当函数原型定义出现在函数调用前,则原型定义既是原 ,否则必须在函数调用前 该函数 函提倡
,先优点函数列表一目了然,方便彼此调用 ,避免错误 函函 优点函数列表更加一目了然,方便使便于多人合作共同开可以用于商业,保护知 练用所定义的阶乘函数。 combination(intn,intk);。(提示:首用所定义的阶乘函数。 参数“地址”传递 voidexchangeData(inta,int{
内存变4int 4c=a=b= } int{inta=3,b=printf交换前printf("a=%db=%d\n",exchangeData(a,printf交换后printf("a=%db=%d\n",return}
4b4交换前:a=3交换后:a=3 地址传voidexchangeData(int*a,int{
内存
内存变intc;c=*a;*a=*b=}
b 3int{intint{intx=3,y=printf交换前printf("xdy%d\nx,y);exchangeData(&x,&y);printf("交换后:");printf("x=%dby=%d\n",return}3 3交换前:x=3交换后:x=4 参数值传递是将实际参数中存放的“值”传递给形式参数,实际参数与形式参数完成“传递接力”后,两者再无干系。在exchangeData函数内部无法改变实际参数中的值或通过实际参数的值改变其他单元的值。地址传递是将实际参数中存放的“地址”传递给了形式参exchangeData,但可以对该“地址”所代表的单元进行赋值或取值的 #include#include#includevoidgetMaxMin(int*max,intint{intprintf =%dmin=return}voidgetMaxMin(int*max,int{int*max=*min=num;for(i=0;i<4;i++){scanf if(num>{*max=}if(num<{*min=}}} 数组做 一维数组做函数voidinvert1(intx[],int{intt,i,m=
6 {
0 x[i]=x[n-1-x[n-1-}}
int{intinvert1(a,10);return0;} voidinvert2(int*xint{int{}}int{inta10 =ainvert2(a,10);return0;
a3px 3px9511066951106607594723a } #include<stdio.h>#include<stdlib.h>#defineMAX_SIZE
练intsearchInArray(constint*p,constintlen,constintx){inti0;/*数组下标intsearchInArray(constint*p,constintlen,constintint{inta[MAX_SIZE]={1,34,345,3,934,59,35,intlen8*测试数组的元素个数intx3*待查找的元素intindex=searchInArray(&a[0],len,if(NOT_FOUND==printf("%d在数组中的下标是:%d\nxreturn}
if(len<=0||len>MAX_SIZE)returnNOT_FOUND;for(i=0;i<len;{if(x==*(p+return}return} 思若将searchInArray的原 intsearchInArray(int(*p)[MAX_SIZE],intlen,int若原若原 intsearchInArray(intp[],intlen,int与int与intsearchInArray(int*p,intlen,intx);比较 一维数组做形参 intsearchInArray(constint*pconstintlenconstintx)intsearchInArray(constintp[],constintlen,constint编译 动手已知数组inta[101234578};请完成下面的函数,该函数完成在一维数intfindMaxInArray(intp[],intsize,int 一维数组二分intfindMaxInArray(intp[],intn,int{intlow,high,low=0;high=n-1;while(low<={mid=(high+low)/2;if(x>a[mid]){low=mid+}elseif(x<{}{}}
high=mid-returnreturn-} 一维数组的添加有一个按从大到小已经排好序的数组{1,8,intinsertInArray(int*p,intn,int 二维数组做函数使用二维数组保存使用函数完成 #includevoidaverage(float*p,intn);voidsearch(float(*p)[4],intn);intmain()
voidaverage(float*p,int{floatpend=p+n-float 行首指floatscore[3][4] {78,28
return0;}
行指
voidsearch(float(*p)[4]int{intprintf("thescoreofNo.%dprintf .2f",* -} 针voidsearch(floatp[][4],int;针voidsearch(floatp[][4],int;int{floatscore[3][4]{80,8790,81},return}voidvoidsearch(floatp[][4],in{inti,j,flag;{ {}}}二维数组做形参voidaverage(float*p,intvoidfind(floatp[][4],intvoidsearch(float(*p)[4],int编译 练有一个二维数组inta[4][3]={{316,87}{654321110810},{2527,12}};voidfindMax1(int*p,intn,intvoidfindMax2(int(*p)[3],intvoidfindMax3(intp[][3],int 本章授课C程序基本 {③{……{③{……①{②………④⑥fA的定义中,出现对fB的调用、fB的定义中出现对fC的调用,称这样的调用形式为嵌套调用fA fB fC 思考:函数可以自己调用 函数的n!
n0时n1n(n(n Factorial调用过Factorial(n)=n*(n- Factorial(n-1)=(n-
(n-Factorial(2)=Factorial(1)Factorial(1)Factorial(0)= 计算阶乘的递归unsined factorialconstunsinedint{unsignedlongtemp=if(0 return1*返回0!为1,结束递归调用temp=factorial(n-1);/*计算n-1的阶乘*/returnn*temp; /*返回* } 递归函数和非递归函数的不 voidfoo(参数voidfoo(参数{{
key1//foo(参数
//////}}}} 画出函数的递归调用过 #include#includevoidreverse(intintmain return}voidreverse(int{if(0==} intfun(intt[],int{intm;if(n==1)returnif(n>={m=fun(t,n-
#include#includeintfun(intt[],intint{inta[10]={11,4,8,2,3,9,return}}
printf"return0;}
动手f(n)
1)
nn
递归 本章授课C程序基本 结构化
问题 问题2 问题
函数
函数
函数问题解决分解图见:模块化
函
函
函
函 结构化 四则2)计算完成之择“0”,才退出1)对2)计算完成之择“0”,才退出3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T-ZSA 232-2024 特种巡逻机器人通.用技术要求
- T-ZJHQ 0003-2024 高等学校生活垃圾分类工作规范
- 2025年度电子商务平台数据分析与报告合同模板
- 二零二五年度解除婚约合同范本:婚约解除后的财产清算、债务处理及子女监护协议
- 2025年度钢板租赁与回收利用合同
- 二零二五年度金融机构资金转入风险管理合同
- 2025年度智慧能源管理系统担保人履约保证合同
- 二零二五年度企业绿色金融项目补贴协议
- 二零二五年度情人协议书:浪漫爱情生活规划合同范本
- 石壕吏:历史背景与社会问题分析教学教案
- 2025中铁集装箱运输有限责任公司招聘46人(京外地区岗位)笔试参考题库附带答案详解
- 中国农业大学人文与发展学院管理服务岗位招聘笔试真题2023
- 2023-2024 中国滑雪产业白皮书
- 风电场触电急救培训课件
- 二年级下册数学课件-1.3 分草莓 北师大版(共14张PPT)
- 2022年中小学心理健康教育指导纲要
- 中国红十字会救护员培训理论考试试卷 (1)附答案
- 高架桥梁混凝土工程专项施工方案
- 银行案件风险排查实施细则
- 亚马逊品牌授权书(英文模板)
- 10级空乘《形体训练3》课程标准(共14页)
评论
0/150
提交评论