为什么使用函数

上传人:j****9 文档编号:54757365 上传时间:2018-09-18 格式:PPT 页数:71 大小:1.26MB
返回 下载 相关 举报
为什么使用函数_第1页
第1页 / 共71页
为什么使用函数_第2页
第2页 / 共71页
为什么使用函数_第3页
第3页 / 共71页
为什么使用函数_第4页
第4页 / 共71页
为什么使用函数_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《为什么使用函数》由会员分享,可在线阅读,更多相关《为什么使用函数(71页珍藏版)》请在金锄头文库上搜索。

1、第八章,函数,2,void main() :x=x*x*x;y=y*y*y;z=z*z*z;ans1=x+y+z;a=a*a*a;b=b*b*b;c=c*c*c;ans2=a+b+c;: ,为什么使用函数,重复多次的同一计算类型,void main() :ans1=cube(x,y,z);ans2=cube(a,b,c);: ,int cube(int a,b,c) int ans;ans=(a*a*a)+(b*b*b)+(c*c*c);return ans; ,函数,主程序,ans,函数可以把相对独立的某个功能抽象出来,使之成为程序中的一个独立实体。可以在同一个程序或其他程序中多次重复使用,

2、3,函数机制的优点,使程序变得更简短而清晰 有利于程序维护 可以提高程序开发的效率 提高了代码的重用性,4,函数类型,库函数: 由语言系统提供; 用户无须定义,也不必在程序中作类型说明; 只需在程序前包含有该函数定义的头文件;,自定义函数: 用户在程序中根据需要而编写的函数;,5,问题描述: 求自然数110的平方根和立方。,内置函数sqrt 和pow 示例,2,6,64,#include #include void main() int x=1;double squareroot,power;while(x y?x:y;return m; ,该函数名为displayDiscount,无参数,使

3、用void说明无返回值,函数体内的语句用于根据产品的价格求折扣后的价格。,该函数名为max,它有两个double类型的参数,返回值为double类型。在函数体内有三条语句实现了求两个数中较大的数,并将它返回。,7,函数原型,#include float count (int, int); void main() . . . . . float count(int x,int y) . . . ,函数原型说明在形式上与函数头部类似,最后加一个分号。原型说明中参数表里的参数名可以不写(只写参数类型)。,8,通过在程序中使用函数名称,可以执行函数中包含的语句,这称为调用函数 函数之间允许相互调用,也

4、允许嵌套调用 函数还可以自己调用自己,称为递归调用,#include void main() :set_discount();displayDiscount();: ,float set_discount() : float displayDiscount() : ,函数调用,9,void reverse() : ,#include void main() :palindrome();: ,void palindrome() :reverse();: ,函数嵌套调用,从一个函数调用另一个函数称为函数的嵌套调用,10,/* 此函数用于计算 a 的阶乘 */ int factorial(int a

5、) if (a = 1)return 1;elsea = a * factorial(a-1);return a; ,函数递归调用,在一个函数体内调用自身称为函数的递归调用,11,问题描述: 根据用户的选择求不同形状的面积。,函数调用示例,#include void AreaOfRect(); void AreaOfTriangle(); void AreaOfRound(); void main() int select;do printf(“ 0、退出n 1、长方形n 2、三角形n 3、圆形n“);printf(“请选择功能:“);scanf(“%d“, ,void AreaOfRect(

6、) int x,y; printf(“请输入长方形的长:“); scanf(“%d“, ,void AreaOfTriangle() int x,y; printf(“请输入三角形的底:“); scanf(“%d“, ,void AreaOfRound() int r; printf(“请输入圆形的半径:“); scanf(“%d“, ,函数原型,演示:示例6,12,int divisibleCheck(int num) if (num % 5 = 0) return 1;elsereturn 0; ,C语言中的函数至多可以返回一个值,不能返回多个值;返回值的数据类型必须与函数原型中返回值的数

7、据类型匹配;当遇到 return 语句时,函数执行将终止。程序控制流将立即返回调用函数;,函数返回值,C 语言中的 return 语句用于向调用函数返回值,语法如下:return ();,13,函数返回值示例,#include int get_age(); void main() int age1, age2, age3;age1 = get_age();age2 = get_age();age3 = get_age();if ( (age1 age2) ,65,78,int get_age() int age;printf(“n请输入年龄: “);scanf(“%d“, ,请输入年龄:65,

8、请输入年龄:78,请输入年龄:54,年龄为 78 岁的人最大,54,14,8.1 概述 模块化程序设计 基本思想:将一个大的程序按功能分割成一些小模块, 特点: 各模块相对独立、功能单一、结构清晰、接口简单 控制了程序设计的复杂性 提高元件的可靠性 缩短开发周期 避免程序开发的重复劳动 易于维护和功能扩充 开发方法: 自上向下,逐步分解,分而治之,15,C是模块化程序设计语言,C程序结构,16,函数是C程序的最小单元。 C程序是由一个主函数以及若干个函数构成。 主函数可以调用其它函数,其它函数可以相互调用。 必须有且只能有一个名为main的主函数 C程序的执行总是从main函数开始,在main

9、中结束 例如: main() printf(“This is C programn”); 就是 main 函数调用了 printf 函数。printf函 数是一个库函数。为了完成一个特定的任务,在 程序开发中一般要定义若干函数。,17,函数分类 从用户角度 标准函数(库函数):由系统提供 用户自定义函数 从函数形式 无参函数 有参函数,使用库函数应注意: 1、函数功能 2、函数参数的数目和顺序,及各参数意义和类型 3、函数返回值意义和类型 4、需要使用的包含文件,18,8.2 函数定义格式及返回值一般格式,合法标识符,函数返回值类型 缺省int型 无返回值void,函数体, 有参函数(现代风格

10、)int max(int x,int y) int z;z=xy?x:y;return(z);,无参函数printstar( ) printf(“*n”); 或printstar(void ) printf(“*n”); ,形式参数表:是用逗号分开的一组变量,用来接收调用时传入的数据。,函数的数据类型就是函数返回值的类型,称为函数类型。,19, 有参函数(传统风格)int max(x,y)int x,y; int z;z=xy?x:y;return(z);,8.2 函数定义格式及返回值,20,返回语句 形式: return(表达式);或 return 表达式;或 return; 功能:使程序控

11、制从被调用函数返回到调用函数中,同时把返值带给调用函数 说明: 函数中可有多个return语句 若无return语句,遇时,自动返回调用函数 若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换-函数调用转换 void型函数, 无返回值函数void swap(int x,int y ) int temp;temp=x;x=y;y=temp;,8.2 函数定义格式及返回值,21,printstar() printf(“*“); main() int a;a=printstar();printf(“%d“,a); , 函数带回不确定值,输出:10,void printstar(

12、) printf(“*“); main() int a;a=printstar();printf(“%d“,a); ,编译错误!,22, 函数返回值类型转换,main() float a,b;int c;scanf(“%f,%f“, ,23,调用形式函数名(实参表); 说明: 实参与形参个数相等,类型一致,按顺序一一对应 实参表求值顺序,因系统而定(Turbo C 自右向左),函数调用时,可以使用参数、返回值、全局变量等方式在不同的函数之间传递数据。,8.3 函数调用及其调用规范,24,main() int i=2,p;p=f(i,+i); printf(“%d“,p); int f(int

13、a, int b) int c;if(ab) c=1;else if(a=b) c=0;else c=-1;return(c); , 参数求值顺序,main() int i=2,p;p=f(i, i+); printf(“%d“,p); int f(int a, int b) int c;if(ab) c=1;else if(a=b) c=0;else c=-1;return(c); ,运行结果:0,运行结果:1,25,调用方式 函数语句:printstar();printf(“Hello,World!n”); 函数表达式:m=max(a,b)*2; 函数参数:printf(“%d”,max(a,b);m=max(a,max(b,c);,26,函数参数及其传递方式 形参与实参 形式参数:定义函数时函数名后面括号中的变量名 实际参数:调用函数时函数名后面括号中的表达式, 比较两个数并输出大者,main() int a,b,c;scanf(“%d,%d“, ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

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