版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
熟练掌握函数的定义。熟练掌握函数的调用和参数传递规则。熟练掌握变量的作用域与存储类别。了解主函数与命令行参数。了解函数与带参数的宏的区别。教学目标重点难点重点:函数的定义和调用,调用函数时数据传递方法,变量的作用域和存储类别。难点:函数参数值传递和地址传递的区别,递归函数设计。函数概述1.C程序构成一个C源程序由一个或多个源程序文件组成。一个源程序文件由一个或多个功能函数构成。一个函数由若干行程序语句组成。源程序文件1说明部分执行部分函数j源程序文件i源程序文件nC源程序函数m………函数1……………一个C程序有且只有一个主函数(main)所有函数之间的关系是平等的
读者信息管理借书图书管理系统图书信息管理图书借阅管理还书缴款添加查询删除修改添加查询删除修改图书管理系统功能模块简图#include"stdio.h"voidprintstar(){printf("***********\n");}voidprintmessage(){printf("*Welcome*\n");}voidmain()/*主函数*/{printstar();printmessage();printstar();}2.简单C程序示例【例1】显示下列界面。************Welcom************程序1☞运行结果Enterr:s=314.159#include"stdio.h"floatarea(floatx)/*求面积函数*/{floats;s=3.14159*x*x;return(s);}voidmain()/*主函数*/{floatr,s;printf("Enterr:");scanf("%f",&r);s=area(r);printf("s=%.3f\n",s);}10↙程序2☞【例2】输入半径值,计算圆的面积。(1)从用户使用角度①标准函数(库函数或系统函数)②用户自定义函数(3)从函数之间关系①调用函数②被调函数(2)从函数形式①有参函数②无参函数
3.函数分类【例2】输入半径值,计算圆的面积#include"stdio.h"floatarea(floatx)/*求面积函数*/{floats;s=3.14159*x*x;return(s);}voidmain()/*主函数*/{floatr,s;printf("Enterr:");scanf("%f",&r);s=area(r);printf("s=%.3f\n",s);}如:printf()
如:area()如:area()如:getchar()如:area()如:main()函数定义函数定义的一般形式[存储类别][返回值类型]函数名([形式参数表]){说明部分功能语句序列}如:floatarea(floatx){floats;s=3.14159*x*x;return(s);}如:voidprintmessage(){printf("*Welcome*\n");}说明部分功能语句功能语句(2)返回值类型:表明调用该函数将带回一个何种类型的值若省略,则系统默认为int若返回值类型为void,则函数没有返回值(3)函数名:合法的标识符(1)存储类别:extern或staticextern:表明函数是外部函数static:表明函数是内部函数若省略,则系统默认为extern
说明floatarea(floatx){floats;s=3.14159*x*x;return(s);}函数名代表此函数在内存中的起始地址,是地址常量如:intmax(intx,inty){return(x>y?x:y);}与下面函数定义等价intmax(x,y)intx,y;{return(x>y?x:y);}(5)说明部分:定义、说明实现函数功能的变量、类型等(6)功能语句序列:实现函数功能的语句序列(4)形式参数表(简称形参列表)说明格式类型1形参1,类型2形参2,…,类型n形参nfloatarea(floatx){floats;
s=3.14159*x*x;returns;}每个形参的类型必须单独说明无形参时,可在()内写void或什么都不写,但()不能少功能语句说明部分函数调用1.函数调用的一般形式
函数名([实际参数表])
如:intmax(inta,intb)/*函数定义*/{return(a>b?a:b);}
intx=3,y=4;/*变量定义*/
max(3,4)/*函数调用*/max(x,y)/*函数调用*/max(x-1,y+3)/*函数调用*/
①实际参数可是常量、变量和表达式②实参与形参的个数相等,类型一致③实参前面不能加数据类型说明2.函数调用的三种方式(1)函数语句
函数调用作为一个语句
如:printf("*Welcom*");/*函数调用*/
(2)函数表达式函数调用出现在一个表达式中
如:m=2*max(3,4);/*函数调用*/
(3)函数参数
函数调用作为一个函数的参数
如:m=max(x,max(3,y));/*函数调用*/【例】函数调用举例(求两个整型数的最大值)。#include"stdio.h"
intmax(inta,intb){return(a>b?a:b);}voidmain(){intx,y,m;m=max(3,4);printf("%d",m);scanf("%d,%d",&x,&y);m=max(x,y);printf("%d",m);m=2*max(x-1,y+3);
printf("%d",m);m=max(x,max(3,y));
printf("%d",m);}程序3☞/*函数定义*//*函数调用(函数表达式)*//*函数调用(函数语句)*//*函数调用(函数语句)*//*函数调用(函数表达式)*//*函数调用(函数语句)*//*函数调用(函数表达式)*//*函数调用(函数语句)*//*函数调用(函数参数)*//*函数调用(函数语句)*/函数引用说明1.函数调用条件①被调函数必须存在。②若被调用函数是系统函数,应在源程序文件开头用#include命令,将被调用库函数所在头文件(扩展名为.h)包含到本文件中来;若被调函数是用户自定义函数,应对被调用函数作引用说明。2.函数引用说明即对函数的存储类别、返回值类型、函数名、形参的类型及顺序作以说明。3.函数引用说明的作用在编译阶段,对被调函数的合法性进行全面检查。4.函数引用说明的格式①[存储类别][返回值类型]函数名(类型1形参1,类型2形参2,…);②[存储类别][返回值类型]函数名(类型1,类型2,…);③当形参类型都为int或char时,形参列表可省略,即:
[存储类别][返回值类型]函数名();
函数引用说明中的存储类别、返回值类型、函数名、形参个数和类型要与函数定义处一致。如:intmax(inta,intb)/*函数定义*/{return(a>b?a:b);}intmax(inta,intb);/*形参名与函数定义时相同*/intmax(intx,inty);/*形参名与函数定义时不同*/intmax(int,int);/*省略形参名*/intmax();/*形参类型都为int,省略形参表*/思考题:函数定义和函数引用说明的区别是什么?#include"stdio.h"voidmain(){floatr,s;
floatarea(floatx);
printf("Enterr:");scanf("%f",&r);
s=area(r);
printf("s=%f\n",s);}
floatarea(floatx){floats;s=3.14159*x*x;return(s);}/*函数引用说明*//*函数调用*//*函数定义*/【例】函数引用说明举例(计算以r为半径的圆的面积)。5.调用函数中可以省略函数引用说明的3种情况
①函数定义在调用函数之前【例】计算以r为半径的圆的面积。voidmain(){floatr,s;floatarea(floatx);/*函数引用说明*/printf("Enterr:");scanf("%f",&r);
s=area(r);
/*函数调用*/printf("s=%f\n",s);}floatarea(floatx)/*函数定义*/
{floats;s=3.14159*x*x;return(s);}#include"stdio.h"#include"stdio.h”voidmain(){floatr,s;
printf("Enterr:");scanf("%f",&r);
s=area(r);
/*函数调用*/printf("s=%f\n",s);}floatarea(floatx)/*函数定义*/
{floats;s=3.14159*x*x;return(s);}floatarea(floatx);/*函数引用说明*/②在所有函数定义之前已有函数引用说明【例】计算以r为半径的圆的面积。floatarea(floatx);/*函数引用说明*/③函数的返回值类型为int或char(省略默认为int)#include"stdio.h"voidmain(){intx,y,m;
scanf("%d,%d",&x,&y);m=max(x,y);/*函数调用*/printf("%d",m);}intmax(inta,intb)/*函数定义*/{return(a>b?a:b);}intmax(inta,
intb);/*函数引用说明*/【例】计算两个整型数的最大值。4.C语言中,如果对函数返回值类型未加说明,则隐含的返回值类型为()。①duoble ②void ③int ④char1.构成C程序的基本单位是()。
①函数②过程 ③子程序 ④子例程2.以下关于函数调用的叙述中错误的是()。
①函数调用可以作为独立的语句存在
②函数调用可以作为一个函数的实参
③函数调用可以出现在表达式中
④函数调用可以作为一个函数的形参3.在一个C程序中()。
①main函数必须出现在固定位置
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 会计经理劳动合同模板
- 法律专项培训 合同模板
- 作品委托合同模板
- 家庭租赁矿灯合同模板
- 工程供料合同模板结款方式
- 2024年工程分包之基坑支护合同
- 承包食堂经营合同模板
- 汽车销售居间协议合同模板
- 出让餐厅股转让合同模板
- 2024年农村客运政策法规与岗位描述
- 食品安全与营养健康自查制度(学校食堂)
- 车位去化方案
- 中医护理三基理论知识习题+参考答案
- 糖尿病与糖尿病并发症
- 小学校情学情分析
- 项目、项目群和项目组合管理 项目管理指南
- (正式版)JTT 1482-2023 道路运输安全监督检查规范
- 人工智能算力中心平台建设及运营项目可行性研究报告
- MOOC 综合英语-中南大学 中国大学慕课答案
- 2024年山东省潍坊市高三二模语文高分范文2篇:简单并不简单
- 幼儿园主题网络图
评论
0/150
提交评论