版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
我的程序有上百行,如何调试最方便?我想设计一个程序完成下面的计算:其中,m、n为正整数且m>n
该如何设计程序最有效?m!n!
(m-n)!?内容提要:概述函数的定义函数参数(变量、数组)和函数值函数的调用函数的嵌套调用局部变量和全局变量及变量的存储类别第八章函数8.1概述C程序的结构如图所示一个C程序可以分为若干个函数每个程序有且只能有一个主函数(main),其它函数都是“子函数”子函数可以互相调用,但主函数不能被调用一个C程序由一个或多个文件构成,一个源程序文件是一个编译单位函数定义的一般形式:
类型说明函数名([形式参数说明])
{函数体}形式参数说明方法:
类型说明变量名[,类型说明变量名]……1、无参数的定义形式
类型说明函数名()
{函数体}2、有参数的定义形式
类型说明函数名(形式参数说明)
{函数体}3、空函数的定义形式
类型说明函数名([形式参数说明])
{}
#include“stdio”
intmax(intx,inty)
{intz;
z=(x>y)?x:y;
return(z);
}
voidmain()
{inta,b,c;
scanf(“%d%d”,&a,&b);
c=max(a,b)
printf(“Maxis%d\n”,c0);
}8.2函数定义的一般形式例如:
intsum(intx,inty)
{intz;
z=x+y;
return(z);}
又如
voidprinthello(charname[])
{printf(“Hello,%s\n”,name);}函数定义的一般形式:
类型说明函数名([形式参数说明])
{函数体}一般情况下,函数体由两部分组成:
{[局部变量说明]}
语句
}局部变量:
函数体内定义的变量。其有效范围仅限于所在函数的内部,离开函数体则无意义。例如:
intsum(intx,inty)
{intz;
z=x+y;
return(z);
}又如voidprinthello(charname[])
{printf(“Hello,%s\n”,name);}
8.3函数参数和函数的值一个C程序由若干个函数组成,各函数调用时经常需要传递一些数据。即调用函数把数据传递给被调用函数,经被调用函数处理后,得到一个确定的结果,在返回调用函数时,把这结果带回调用函数。各函数间的信息往来是由参数传递和返回语句实现的a,bz主调函数被调函数一、形式参数和实际参数说明:1、定义函数时,必须说明形参的类型。形参只能是变量或数组2、函数被调用前,形参不占用内存;函数调用结束后,形参所占用的内存也将被收回。3、实参可以是常量、变量或表达式。4、实参也形参的类型必须一致。字符型和整型可以互相匹配。5、C语言中实参对形参的数据传递是“值传递”,即单向传递。它仅由参数的对应位置确定,与名字无关。
#include“stdio”
intmax(intx,inty)
{intz;
z=(x>y)?x:y;
return(z);
}
voidmain()
{inta,b,c;
scanf(“%d%d”,&a,&b);
c=max(a,b)
printf(“Maxis%d\n”,c0);
}intmax(intb,inta)
{intc;
z=(a>b)?a:b;
return(c);
}一、形式参数和实际参数例8-3读程序,写出运行结果Sumof1,3is4一、形式参数和实际参数二、函数的返回值1、返回函数值的方法
函数的返回值也就是函数值,是
一个确定的值。①如果一个函数由返回值,就必
须使用return语句。②一个函数中可以有一个以上的
return语句,但不论执行到哪个
return都将结束函数的调用返回
主函数。③return语句中的括号可以省略;
return后面的值可以是一个表
达式。
#include“stdio”
intmax(intx,inty)
{intz;
z=(x>y)?x:y;
return(z);
}
voidmain()
{inta,b,c;
scanf(“%d%d”,&a,&b);
c=max(a,b)
printf(“Maxis%d\n”,c);
}{if(x>y)returnx;
returny;
}
{return(x>y?x:y);
}
二、函数的返回值1、返回函数值的方法2、函数值的类型3、不需要返回值的函数①如果函数中没有使用return
语句,函数返回的是一个不
确定的数值。(参见例8-1)②如果一个函数不需要返回值
(表示一个过程),可以用void
做类型说明。③如果一个函数被声明为void类
型,就不允许再引用它的返回值
(即只能用函数语句形式调用)。例8-1#include“stdio.h”voidprintstar()
{printf(“*****************\n”);
}
voidprintmessage()
{printf(“Hello,world.\n”);
printstar();
}
voidmain()
{printstar();
printmessage();
}8.4函数的调用一、函数调用的一般形式一般形式:
函数名(实参表列)说明:①如果调用无参函数,实参表列
可以忽略,但括号不能省。②实参的个数和形参一般相等。③实参与形参的类型应一一对应,
必要时使用类型转换。注意:不同系统中,实参的计算
顺序不同。微机上一般是从右
到左。为避免由此引起的混乱,
一般应在调用函数前计算出实
参的值。
#include“stdio”
intmax(intx,inty)
{intz;
z=(x>y)?x:y;
return(z);
}
voidmain()
{inta,b,c;
scanf(“%d%d”,&a,&b);
c=max(a,b)
printf(“Maxis%d\n”,c0);
}floatmax(floatx,floaty)
{floatz;
z=(x<y)?x:y;
return(z);
}一、函数调用的一般形式二、函数调用的方式1、函数语句
形式为:函数名(实参表列);例如:printmessage();
printf(“%d”,p);说明:这种方式不要求函数带返回值,函数仅完成一定的操作。2、函数表达式
函数的返回值参与运算例如:m=max(a,b);m=3*max(a,b);printf(“Maxis%d\n”,max(a,b));说明:这种调用方式不能用于void型函数。一、函数调用的一般形式二、函数调用的方式三、函数调用的执行过程四、函数的原形说明在程序中调用函数需满足以下条件:1、被调函数必须存在,且遵循“先定义后使用”的原则。2、如果被调函数的定义在主调函数之后(位置),可以先给出原形说明。原形说明的形式为:类型说明函数名(参数类型,
参数类型,…);说明:库函数的原形说明存放在头文件(.h)中,通过使用include预处理命令将这些原形说明插入程序中。8.5函数的嵌套调用嵌套调用是指在一个函数的函数体中又调用了其它函数。例8-1#include“stdio.h”voidprintstar()
{printf(“*****************\n”);
}
voidprintmessage()
{printf(“Hello,world.\n”);
printstar();
}
voidmain()
{printstar();
printmessage();
}例8-6用弦截法求方程的根。x3-5x2+16x-80=0算法分析:对于任意的f(x)=0,1、给定两个x1,x2,满足x1<x2且f(x1)和f(x2)的符号相反2、过f(x1)、f(x2)两点做直线(弦),交于x轴与x,其中3、求f(x);若f(x)与f(x1)同符号,则根必在(x1,x2)区间内,令x1=x;反之,根必在(x1,x)区间内,令x2=x4、重复2和3,直到|
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 直播平台主播薪资规范
- 娱乐场所安防施工合同
- 旅游信息市场管理办法
- 矿山安全设备测试管理办法
- 森林苗圃施工协议
- 建筑工程彩钢瓦施工合同
- 武汉市计划生育管理妇联行业应用
- 湿地保护中石化施工合同
- 畜牧设备租赁合同转让样本
- 城市绿化项目投标承诺:生态优先
- 山东省青岛市黄岛区2023-2024学年六年级上学期期中语文试卷
- 二手门市销售合同范本
- 新能源发电技术 课件 第一章-新能源发电概述
- 《大学美育》 课件 4.模块五 第二十四章 时空综合的影视艺术之美
- 浙江省温州市苍南县2023-2024学年八年级上学期期中考试英语试题
- 2024水利云播五大员考试题库及答案
- 2024-2030年中国汽摩配行业运营态势及重点企业发展分析报告
- 小学必背古诗练习题(四年级上册)(含答案)
- DL∕T 698.45-2017 电能信息采集与管理系统 第4-5部分:通信协议-面向对象的数据交换协议
- 2021年11月广州市增城区(卫生类)招聘考试《护理学》试卷
- 登革热诊疗方案(卫健委2024年版)
评论
0/150
提交评论