第六章函数与宏定义.ppt

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言中还允许在函数中调用自身,或函数之间相互调用,这种调用方式称之为递归。递归又分为直接递归调用和间接递归调用。 直接递归调用;函数直接调用自身。 间接递归调用:函数互相调用对方。 直接递归: int temp (int x) { int y, z; …… z=temp(y); …… } 间接递归: 显然,递归有可能陷入无限递归状态,最终导致错误发生。因此,设计一个递归问题必须具备两个条件: 1.后一部分与原始问题类似。 2.后一问题是原始问题的简化。 【例6-6】 编程,从键盘输入一个正整数n,求n!。 n!的数字表达式为: n!= 定义一个求n!的函数:long fac(int n) long fac(int n) { long result; if (n= = 0 || n= =1) result =1; else result=n*fac(n-1); return(result); } 完整程序如下: /*exam6_6.c 用递归法求n!*/ #include stdio.h long fac(int n) { long result; if(n==0||n==1) result=1; else result=n*fac(n-1); return result; } main() { int x; long f; scanf(%d,x); if(x=0) printf(Your input is wrong!\n); else { f=fac(x); printf(%d!=%ld\n,x,f); } } 程序运行结果: 6? 6!=720 * C 程序设计基础教程 第六章函数与宏定义 * C 程序设计基础教程 第六章函数与宏定义 第六章 函数与宏定义 §6.1 函数概念 §6.2 变量作用域和存储类型 §6.3 内部函数与外部函数 §6.4 递归函数设计和调用 §6.6 综合范例 §6.1 函数概念 C语言允许把问题设计成一个一个的模块,程序通过调用模块功能来解决问题。这些模块通常都是通过函数来实现的,又可称其为函数模块。 C语言中,函数可分为两类 : 一类是由系统定义的标准函数,又称为库函数,其函数声明一般是放在系统的include目录下以.h为后缀的头文件中,如在程序中要用到某个库函数,必须在调用该函数之前用#include头文件名命令将库函数信息包含到本程序中。 另一类函数是自定义函数 ,两种形式: 第一种:函数声明、函数调用、函数定义。 第二种:函数定义、函数调用。 § 6.1.1 函数定义 函数定义的一般形式可以有两种。 形式一: [存储类型符] [返回值类型符] 函数名([形参说明表]) { 函数语句体 } 形式二: [存储类型符] [返回值类型型符] 函数名([形参表]) 形参说明; { 函数语句体 } 说明: 1.[存储类型符]指的是函数的作用范围,它只有两种形式:static和extern。 static说明函数只能作用于其所在的源文件,用static说明的函数又称为内部函数。 extern说明函数可被其它源文件中的函数调用,用extern说明的函数,又称为外部函数。 缺省情况为extern。 2.[返回值类型符]指的是函数体语句执行完成后,函数返回的值的类型,如int, float, char等等,若函数无返回值,则用空类型void来定义函数的返回值。 缺省情况为int型。 3.函数名由任何合法的标识符构成。建议将函数名的命名与函数内容有一定关系。 4.在第一种函数定义的形式中,[形参说明表]是一系列用逗号分开的每个形参变量说明。 如:int x, int y, int z 这表示形参变量有三个:x, y, z。它们的类型都是int型。 在第二种函数定义的形式中,[形参表]是一系列用逗号分开的形参变量。如:x, y, z 5.函数语句体是放在一对花括号{ }中,由局部数据类型描述和功能实现两部分组成。 6.函数返回语句的形式有以下两种: ①函数无返回值的情况:return; ②函数有返回值的情况:return(表达式的值); 在第②种情况下要注意“表达式的值”的类型必须与函数返回值的类型相一致。 例如:求两个任意整数的绝对值的和,用函数abs_sum()实现。 /*直接调用库函数来计算m和n的绝对值 */ int abs_sum(int m, int n) { return (abs(m)+abs(n)); } /*函数a

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档