




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
熟练掌握函数的定义。熟练掌握函数的调用和参数传递规则。熟练掌握变量的作用域与存储类别。了解主函数与命令行参数。了解函数与带参数的宏的区别。教学目标重点难点重点:函数的定义和调用,调用函数时数据传递方法,变量的作用域和存储类别。难点:函数参数值传递和地址传递的区别,递归函数设计。函数概述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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高压液压柱塞泵马达项目发展计划
- 2025年度新能源材料研发保密与共享合同
- 2025年度绿色建筑项目财产赠与合同
- 2025年(半)干式烟气脱硫成套设备项目建议书
- 2025年度出境领队带团操作规范合同范本
- 水务生态保护规划计划
- 2025年食品分离机械项目合作计划书
- 持续改进教学工作的机制计划
- 高危行业的安全防控计划
- 合理安排急诊排班的重要性计划
- 【历史】唐朝建立与“贞观之治”课件-2024~2025学年统编版七年级历史下册
- 2024化工园区危险品运输车辆停车场建设规范
- 05G359-3 悬挂运输设备轨道(适用于一般混凝土梁)
- 警察行政法课件
- 数学与生活小报
- 挖掘数学专业课程的思政元素-以空间解析几何为例
- 人力资源管理手册(全集)
- 儿科学教学课件肾病综合征
- 2023高中物理步步高大一轮 第四章 专题强化七 圆周运动的临界问题
- 田字格模版内容
- Q∕GDW 12152-2021 输变电工程建设施工安全风险管理规程
评论
0/150
提交评论