c语言程序设计_第六章_函数ppt

上传人:小** 文档编号:54711593 上传时间:2018-09-17 格式:PPT 页数:50 大小:418KB
返回 下载 相关 举报
c语言程序设计_第六章_函数ppt_第1页
第1页 / 共50页
c语言程序设计_第六章_函数ppt_第2页
第2页 / 共50页
c语言程序设计_第六章_函数ppt_第3页
第3页 / 共50页
c语言程序设计_第六章_函数ppt_第4页
第4页 / 共50页
c语言程序设计_第六章_函数ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《c语言程序设计_第六章_函数ppt》由会员分享,可在线阅读,更多相关《c语言程序设计_第六章_函数ppt(50页珍藏版)》请在金锄头文库上搜索。

1、第六章 函 数,6.1 引例 6.2 C语言函数的基本概念 6.3 函数调用 6.4 函数嵌套调用和递归调用 6.5 变量与函数 6.6 模块化程序设计,6.1 引 例,引例:编程实现如图结果。,6.1 引 例,【分析】 从图中看到,三角形星号图形出现了三次 能否仅编写一段程序代码,要输出星号图形时就使用该段代码? C语言提供了这样的功能,以函数的组织形式编写代码,当使用时就调用此函数。,6.1 引 例,【知识点】,1. 模块化程序设计。 2. 函数。,6.2 C语言函数的基本概念,C语言中,一段有独立功能,又能够多次使用且具有独立名称与一定的输入、输出的代码,称为C语言的函数。 函数是C语言

2、程序的基本组成单元 一个C程序由一个main()和若干其它函数构成。程序的执行总是从主函数开始,到主函数结束。,6.2.1 函数的定义,函数定义的一般形式:()函数体,第一行称为函数首部,是由函数的数据类型、函数名和形参列表组成大括号括起来的若干语句是函数体,由完成某一功能的C语句组成,6.2.1 函数的定义,在使用一个函数前,必须先对其进行定义 程序中如果调用了某个函数,该函数就会在完成特定工作后,返回到调用它的地方 按照返回结果不同有如下两种情况 函数经过一系列运算,得出一个运算结果,并需要返回运算结果 函数只是完成一系列操作步骤,不需要返回任何结果。,6.2.1 函数的定义,【例6-1】

3、利用函数实现从键盘输入两个数,输出最大值。,1、返回结果的函数定义,#include int max(int x,int y) /* 返回结果的函数定义 * int z;z=xy ? x:y; /* z为x与y中最大的值 */printf(“max()函数中找出了两数的最大值。n“);return(z); int main(void) int a,b,c;printf(“请输入数值a和b的值:n“);scanf(“%d,%d“,6.2.1 函数的定义,返回结果的函数定义形式为:返回值类型标识符 函数名(形参列表)变量声明语句部分,6.2.1 函数的定义,void 函数名(形参表) 函数体 ;

4、,2、不返回结果的函数定义,6.2.1 函数的定义,为了明确表示不需要函数返回值,用void定义函数为“无类型”。 函数体中可以出现return语句,也可以省略。 void类型的函数虽然不直接返回一个值,但它的作用通常可以实现屏幕输出等功能。,2、不返回结果的函数定义,6.2.1 函数的定义,【例6-2】编写函数实现打印五行十个星号。 【分析】 主调函数输入星号的行数及每行星号数,并调用打印星号函数; 建立printstar(int m,int n)函数实现打印星号的功能,将星号直接屏幕输出。,2、不返回结果的函数定义,#include int main(void) void printsta

5、r(int m,int n); int a,b;printf(“请输入要打印星号的行数和每行的星号数:n“);scanf(“%d,%d“, ,【说明】 函数定义的第一行是函数首部,后面不能加分号。 函数首部的类型标识符是指函数类型。如果省略函数的类型标识符,则默认的数据类型为int型。 函数名必须是有效的标识符。 形参列表中给出函数所有形参的名称和类型。各个形参之间用逗号分隔,每个形参前面的类型必须分别写明。 函数体写在一对大括号中,包括变量声明和语句部分。,6.2.2 函数返回值和函数类型,从函数返回值的类型来看,有两种类型: 有确定的运算结果返回给主调函数 没有确定的运算结果返回给主调函数

6、,1、函数返回值,6.2.2 函数返回值和函数类型,函数结果返回形式:return 返回值表达式; 上述语句也可表示成:return (返回值表达式); return语句的功能有两个:一是结束子函数的运行;二是先求解表达式的值,然后返回调用函数,并将“返回值表达式”的值带给调用函数。,1、函数返回值,6.2.2 函数返回值和函数类型,【例6-4】利用函数调用实现两个数相加。 【分析】 编写sum()实现加法操作,并返回两数相加值; 在main()函数中,实现两数的输入,调用加法函 数,输出结果等。,1、函数返回值,#include int sum(int x, int y); /函数原型声明

7、int main( )int s;s=sum(8, 6); /调用子函数实现两个数相加 printf(“sum=%dn“,s); int sum(int x, int y) int z; z=x+y; return(z); /返回两数相加的结果 ,【说明】 函数的返回值是通过return语句获得的。当不需返回函数值时,可省去return语句; return语句的后面可以是变量,也可以是表达式。 在函数中如果有多个return语句,每次调用函数时,必定只执行其中一个return语句。,【例-5】将100之间所有的倍数的数相加。,#include int main(void)int trip(in

8、t n);int i,s;int flag;s=0;for(i=3;i100;i+)flag=trip(i);if(flag=1)s=s+i; printf(“1100之间所有3的倍数的数之和为:%d“,s);return 0; int trip(int n) if(n % 3=0) return 1;elsereturn 0; ,6.2.2 函数返回值和函数类型,如果在顺序结构的程序中出现多个return语句,则遇到第一个return语句就会结束当前函数的运行而返回主调函数,其它return语句不再运行。,1、函数返回值,6.3 函数调用,在程序中,通过对函数的调用来执行函数体。 一个函数可

9、以被其它函数多次调用,每次调用时可以处理不同的数据,因此函数是对不同数据进行相同处理的一般程序形式。,6.3.1 函数调用的一般形式和过程,函数调用的一般形式为:函数名(实参表) 或表示为:函数名(实参,实参,实参) 实参可以是常量、变量和表达式。,【例6-6】通过函数调用实现输出之内的数字金字塔,阅读程序代码理解函数调用的一般形式。,【分析】 建立函数pyramid(int n )实现打印数字金字塔的功能,因此该函数定义成void类型。 在主函数中,通过调用pyramid()函数实现金字塔的打印。其中括号中的是实参,将实参传递到函数定义的形参中,即将的值传递给。,#include void

10、pyramid(int n) /被调函数的定义 int i,j;for(i=1;i=n;i+)for(j=1;j=n-i;j+)printf(“ “);for(j=1;j=i;j+)printf(“ %d“,i);printf(“n“); int main(void) /主调函数 int m; printf(“请输入金字塔行数的数值:“);scanf(“%d“, ,6.3.1 函数调用的一般形式和过程,所有的程序都是从main( )函数开始执行,无论main( )函数的位置在哪里。 如果main( )函数执行过程中遇到某个函数a() 的调用,则main( )函数被暂停执行,转而执行相应的被调函

11、数a()。 当被调函数执行完后,将返回main( )函数,从原来暂停的位置继续执行,3、函数调用过程,【例6-7】引例求解。编写C语言程序实现打印三个正三角,第一个是三行,第二个是四行,第三个五行,要求其运行结果如图所示。,【分析】图中要求输出的三个正三角星号的程序代码是重复的,不同之处仅仅是输出的行数不同,因此可将输出正三角作为被调函数的功能。而被调函数的参数可设成正三角形的行数。,【例6-7】引例求解。编写C语言程序实现打印三个正三角,第一个是三行,第二个是四行,第三个五行,要求其运行结果如图所示。,#include int main(void) void printstar(int m)

12、; /被调函数声明printstar(3); printf(“函数是语言程序的基本单位n“);printstar(4); printf(“程序设计时程序员总是将复杂问题分解n“);printstar(5); printf(“将小程序拼接起来能解决大而复杂的问题n“);return 0; void printstar(int m) /被调函数定义 int i,j,k;for(i=1;i=m;i+)for(k=1;k=10-i;k+)printf(“ “);for(j=1;jy?x:y; return(z);,【说明】 形参是单个的变量名,实参可以是常量、变量或表达式,如:c=max(a,b+2)

13、; 无论实参是常量、变量或表达式,它们都有确定的值,在进行函数调用时,把这些值传送给形参。因此,应预先用赋值、输入等办法使实参获得确定的值。 实参与形参之间的个数及类型必须一一对应。 形参只有被调用时,才分配内存单元,有确定的值;调用结束时就释放所分配的内存单元,形参只有在被调用函数内有效。 在用户自定义函数中,形参必须指定数据类型。形参的类型声明可以放在函数名后的括号中,如本例中int max(int x, int y); 也可以放在函数的头部与函数体之间。例如:int max(x, y)int x, y; ,【例6-9】两变量数值的交换。通过该例题源程序代码分析实参和形参之间的相互影响。

14、#include int main(void)void swap(int x,int y);int a,b;printf(“Please input a and b:“);scanf(“%d %d“,【分析】 从运行结果看主函数中,的值在调用swap()函数后并没有交换,而在swap()函数中,的值交换了。 原因是实参,和形参,分别占用不同的内存单元,在swap()函数中,形参和的值互换了,只是在和的内存单元的值互换了,但对和内存单元中的值不产生影响,如图6-11所示。当swap()函数执行结束后就释放和的内存单元,而其中和交换后的数值也随之释放了。因此返回主函数main()后输出的和的值没有交换。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 宣传企划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号