- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Chap 10 函数与程序结构;本章要点;使用结构化程序设计方法解决复杂的问题
把大问题分解成若干小问题,小问题再进一步分解成若干更小的问题
写程序时,用main()解决整个问题,它调用解决小问题的函数
这些函数又进一步调用解决更小问题的函数,从而形成函数的嵌套调用;main( );例10-1 设计一个常用圆形体体积计算器,采用命令方式输入1、2、3,分别选择计算球体、圆柱体、圆锥体的体积,并输入计算所需相应参数。
分析:
输入1、2、3选择计算3种体积,其他输入结束计算
设计一个控制函数cal(),经它辨别圆形体的类型再调用计算球体、圆柱体、圆锥体体积的函数
设计单独的函数计算不同圆形体的体积;3层结构,5个函数
降低程序的构思、编写、调试的复杂度
可读性好;例10-1源程序;/* 常用圆形体体积计算器的主控函数 */
void cal ( int sel )
{ double vol_ball(void );
double vol_cylind(void );
double vol_cone(void );
switch (sel) {
case 1: printf(球体积为:%.2f\n, vol_ball( ));
break;
case 2: printf(圆柱体积为:%.2f\n, vol_cylind( ) );
break;
case 3: printf(圆锥体积为:%.2f\n, vol_cone( ) );
break;
}
};10.1.2 函数的嵌套调用;函数的嵌套调用;例9-1 分析;函数的嵌套调用;10.1.3 文件包含;问题:如何把若干程序文件模块连接成一个完整的可执行程序?
当一个C语言程序由多个文件模块组成时,整个程序只允许有一个main()函数。
为了能调用写在其它文件模块中的函数,文件包含是一个有效的解决方法。;格式
# include 需包含的文件名
# include “需包含的文件名”
作用
把指定的文件模块内容插入到 #include 所在的位置,当程序编译连接时,系统会把所有 #include 指定的文件拼接生成可执行代码。
注意
编译预处理命令,以#开头。
在程序编译时起作用,不是真正的C语句,行尾没有分号。;将例10-1的5个函数分别存储在2个.C文件上,要求通过文件包含把它们联结起来。;ctype.h 字符处理
math.h 与数学处理函数有关的说明与定义
stdio.h 输入输出函数中使用的有关说明和定义
string.h 字符串函数的有关说明和定义
stddef.h 定义某些常用内容
stdlib.h 杂项说明
time.h 支持系统时间函数 ;10.1.4 全局变量与程序文件模块 ;外部变量(extern);int x;
void main()
{………
};;10.1.5 寄存器变量和外部变量;10.1.6 函数与程序文件模块;extern int f1();
int main(void)
{ ………
f1( );
………
};10.2 递归函数;10.2.1 程序解析;10.2.2 递归函数基本概念;递推法与递归法求阶乘;递归式;main() fact(3) fact(2) fact(1)
{ .... { .... { .... { ....
printf(fact(3)) f=3*fact(2) f=2*fact(1) f=1
} return(f) return(f) return(f)
} } }
;例10-4 写输出结果;10.2.3 递归程序设计;例10-5 汉诺(Hanoi)塔 ;分析;分析;分析;算法;函数 ; 源程序 ;10.3 宏定义;宏定义可以写在程序中任何位置,它的作用范围从定义书写处到文件尾。
可以通过“#undef”强制指定宏的结束范围。;#define A “This is the first macro”
void f1()
{
printf( “A\n
文档评论(0)