版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本学习任务是通过若干个程序设计任务的完成学习模块化的程序设计技能,感受同学之间的协同合作,要求学生能根据要求编写函数,并利用函数完成程序设计任务,学习自定义函数与主函数之间的数据传递知识。任务说明掌握库函数的调用方法。掌握函数的定义、调用和说明方法。理解实参与行参。掌握函数值的概念。掌握主函数与函数间的数据传递。知识要求能够读懂具有自定义函数的程序。能够完成累加和、判断素数、求绝对值的函数编写。能够根据函数编写对应的主函数并调试通过。能够判断程序运行结果的对错。能够修改错误的程序。能力要求函数返回值的类型函数名(类型名形参1,类型名形参2…)
{说明部分语句部分
}自定义函数简称函数。自定义函数1.自定义函数的形式01微课自定义函数2.相关约定
在同一个程序文件中,函数名必须是唯一的,形参名只要在同一函数中是唯一的即可。
函数不能嵌套定义,即不能在一个函数内部再定义另一个函数。
省略函数返回值的类型时,默认为int型,当不需要返回值时,可定义为空类型,即void。函数值的类型可以是整型、实型、字符型、指针型、结构体型等。函数也可以无形参,形参及函数体中定义的变量只有在函数被调用时才临时开辟存储单元,当退出函数时,将全部被释放,它们都属于局部变量。
函数值通过return语句返回。例如:return表达式;或return(表达式);或return;表达式的类型必须与函数首部所说明的类型一致,若不一致,则由系统自行转换为函数定义时的类型。如遇到return语句,程序流程则返回调用该函数处,并带回函数值。在同一函数体内,可有多处return语句,当执行到某条return语句时即返回调用处。函数也可无return语句,当无return语句时,函数执行到结束时,再返回到调用处。3.函数值4.函数的调用
函数调用的一般形式如下:函数名(实参表)各实参之间用逗号隔开,必须有确定的实参值,此调用可作为独立的语句出现,也可以出现在各种表达式中。函数调用时应注意函数名应一致,实参与形参的个数和类型要匹配,函数应先定义后调用,否则应在调用前有相应的说明。
微课函数调用5.函数的说明
函数说明的一般形式如下。类型名函数名(形参1的类型,形参2的类型,形参3的类型,……);函数说明只说明形参的类型即可,不必写出表示形参的变量。函数说明的位置一般出现在所有函数的前面,文件包含之后,这样在后面的所有函数中都可以调用它,函数说明是一条语句,要有分号结尾。应用举例5-1:求两数和的函数解法。输入:3.5-2.1输出:sum=1.400000课堂思考问题5-1输入正方形的边长,求面积的函数解法。1.实参传给形参
实参传给形参的数据传递方式是单向的,按值传递。
应用举例5-1中出现在主函数中的调用语句“sum=add(a,b);”中的a和b就是实参,a、b必有确定的值,调用时将a、b的值各复制一份,分别赋给函数定义中的形参x和y,这就是实参向形参的传递。调用函数和被调函数间的数据传递02微课实参传给形参2.通过函数的返回值传递
主函数中的语句“sum=add(a,b)”是将获得的函数值赋给sum,函数通过return语句将函数值返回调用处,即“add(a,b)”带回一个值,将这个值赋给了sum,这是函数向主函数的数据传递。此外,还可以通过全局变量在函数和主函数之间传递信息。微课通过函数返回值传递数据运行程序输入:45输出:45不是素数运行程序输入:47输出:47是素数应用举例5-2:判断素数的函数解法。课堂思考问题5-2模仿应用举例5-2编写一个函数isprime(inta),判断a是否为素数,并在主函数中输出100以内的非素数之和。
任务实施工作内容及要求:
编写一个具有某些功能的程序,可将事情的全部过程分解成多个具有独立功能的自定义函数,然后利用main函数依次调用这些自定义函数即可。下面编写一个函数fmax(intx,inty),该函数值是x、y中的较大值,即fmax(6,23)的值是23。本任务的执行过程是将可以只由主函数完成的事转换为由主函数和自定义函数共同完成。
任务一
由主函数到自定义函数的过渡编程训练
5-1-1输入两个整数,输出较大数,只由main函数实现。
#include….voidmain{………….…………..…………..}编程训练
5-1-2创建一个无参数的函数,将主函数中的代码全部转移到自定义函数中。#include“stdio.h”voidmain(){
intx,y,max;
while(1)
{
printf(“请输入两个整数:\n”);编程训练编程训练
scanf(“%d%d”,&x,&y);if(x>y)max=x;elsemax=y;printf(“较大值是:%d\n”,max);}}编程训练编程训练#include"stdio.h"voidfmax()//自定义函数{//将原来主函数中的内容全部搬来intx,y,max;
while(1){printf("请输入两个整数:\n");scanf("%d%d",&x,&y);if(x>y)max=x;elsemax=y;printf("较大值是:%d\n",max);}}编程训练voidmain(){
…………
//主函数中仅一条函数调用语句}
5-1-3编写带参数的函数。
进一步改进上面的程序代码,将输入和输出部分写在主函数中,使函数fmax(x,y)具有求两数较大数的独立功能,即fmax(5,2)的值是5。自定义函数中有返回语句return,主函数中有调用自定义函数的语句,前后呼应共同完成程序功能。编程训练编程训练#include"stdio.h"intfmax(inta,intb)//自定义函数{intm;if(a>b)……………else……………return………
//函数返回值
}编程训练voidmain(){intx,y,max;while(1)
{
printf("请输入两个整数:\n");
scanf("%d%d",&x,&y);
max=fmax(x,y);//调用函数
printf("较大值是:%d\n",max);
}}5-1-4借用上面的fmax函数实现输入三个整数、输出较大数的程序。编程训练#include"stdio.h"Intfmax(inta,intb){………………………………}编程训练voidmain(){
intx,y,z,max;
while(1)
{
printf("请输入三个整数:\n");scanf("%d%d%d",&x,&y,&z);max=…………
//第一次调用函数,将x、y间的较大值赋给max
max=…………
//第二次调用,用max与z间的较大值更新max
printf("较大值是:%d\n",max);
}}5-1-5编写fun(x)函数,函数值是x的绝对值。编程训练#include"stdio.h"…fun(intx){…………………}编程训练voidmain(){
intx,y;
printf("请输入一个整数:\n");
scanf("%d",&x);
y=……………
//调用函数获得x的绝对值赋给y
printf("|%d|=%d\n",x,y);}
任务二建立函数库
工作内容及要求:将功能相对独立的程序模块定义为函数,为程序中多次调用函数提供了方便,增加了程序的可读性。如果将若干个这样的函数写进一个文件供使用者调用,这就是函数库。编写一个有关计算各种累加和的函数库,从中体验这种模块化程序设计的乐趣。编写以下自定义函数。intfun1(intn),n为正整数,函数值为1-n的奇数和。intfun2(intn),n为10以内的正整数,函数值为n的阶乘doublefun3(intn),n为正整数,函数值为1/1-1/3+1/5-1/7+…1/n的值。
5-2-1编写fun1函数,并通过主函数对函数的调用调试通过。#include“stdio.h”intfun1(intn){…………}编程训练编程训练
voidmain(){printf(“%d\n”,fun1(10));}5-2-2编写fun2函数,并通过主函数对函数的调用调试通过。#include“stdio.h”intfun2(intn){
………..………….….…………..
…………}编程训练编程训练
因为计算较大数的阶乘时会出现溢出,所以在主函数中加入了对数据的筛选环节“do{…}while(n<1||n>10);”。只有当n为1~10时,才能运行下面程序。voidmain(){intn;do{//此循环用于剔除不合格的输入printf(“请输入一个正整数:”);
scanf("%d",&n);
}while(n<1||n>10);
printf("%d!=%d\n",n,fun2(n));}5-2-3编写fun3函数。
计算1/1-1/3+1/5-1/7+…1/n时要单独设符号变量f初值为1,在循环中有f=-f,使f变量正负交替,例如:inti,f=1;
doubles=0;for(i=1;i<=n;i=i+2){s=s+f*1.0/i;f=-f;}
编程训练编程训练#include"stdio.h“doublefun3(intn){……………………………………}Voidmain(){
printf("%lf\n",fun3(5));}5-2-4用上面的三个函数建立一个函数库。
在VS2010环境中创建工程,在工程中分别创建源文件和头文件,此处的头文件名为lx.h,如图5-1所示。编程训练图5-1创建头文件#include“stdio.h”#include“lx.h”voidmain(){intn;do{printf(“请输入一个正整数:”);scanf(“%d”,&n);}while(n<1||n>10)printf(“1-%d的奇数和为:%d\n”
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江考编美术试题及答案
- 持续改进方案制定模板
- 薛城社工考试试题及答案
- 高考数学提分:拒绝题海战术只刷适合自己的真题
- 林业资源保护与管理实践指南
- 银行区块链支付整合-洞察与解读
- 现代文化墙培训心得体会2026年实操流程
- 环境标准制定方法-洞察与解读
- 2026年搅拌站用电安全培训内容实操要点
- 2026年桶装水促销活动方案策划核心要点
- 铁路道岔故障分析与修复-深度研究
- T-CPI 11033-2024 钢板制超大口径对焊管件
- 护士职业安全与职业防护
- 仓储三级安全教育培训
- 桥隧建筑物安全监控相关知79课件讲解
- 生物统计学(全套课件)
- 建筑法规电子教案
- 2020春苏教版六年级数学下册全册教学反思
- (正式版)SH∕T 3541-2024 石油化工泵组施工及验收规范
- GB/T 33348-2024高压直流输电用电压源换流器阀电气试验
- 人教版八年级历史上册全册复习课件
评论
0/150
提交评论