C语言模块化程序设计.ppt

上传人:p** 文档编号:171473 上传时间:2023-03-16 格式:PPT 页数:57 大小:686.50KB
下载 相关 举报
C语言模块化程序设计.ppt_第1页
第1页 / 共57页
C语言模块化程序设计.ppt_第2页
第2页 / 共57页
C语言模块化程序设计.ppt_第3页
第3页 / 共57页
C语言模块化程序设计.ppt_第4页
第4页 / 共57页
C语言模块化程序设计.ppt_第5页
第5页 / 共57页
C语言模块化程序设计.ppt_第6页
第6页 / 共57页
C语言模块化程序设计.ppt_第7页
第7页 / 共57页
C语言模块化程序设计.ppt_第8页
第8页 / 共57页
C语言模块化程序设计.ppt_第9页
第9页 / 共57页
C语言模块化程序设计.ppt_第10页
第10页 / 共57页
亲,该文档总共57页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言模块化程序设计.ppt》由会员分享,可在线阅读,更多相关《C语言模块化程序设计.ppt(57页珍藏版)》请在第壹文秘上搜索。

1、1第第4章章 模块化程序设计模块化程序设计2教学目标教学目标 理解如何用函数模块构造程序理解如何用函数模块构造程序 熟悉标准库中常见的函数熟悉标准库中常见的函数 会定义和调用函数并理解函数调用的机制会定义和调用函数并理解函数调用的机制 掌握变量的作用域和存储类别掌握变量的作用域和存储类别 理解并运用递归函数编写程序。理解并运用递归函数编写程序。 34.1 模块化程序设计概述模块化程序设计概述 4.2 函数的声明、定义和调用函数的声明、定义和调用 4.3 函数的多级调用函数的多级调用 4.4 变量的作用域和存储类别变量的作用域和存储类别 4.5 计算机随机模拟方法计算机随机模拟方法 4.6 编译

2、预处理编译预处理 4 复杂任务可以分解为若干子任务。复杂任务可以分解为若干子任务。 重复使用的程序段,将其进行独立设计,使计算机可以重重复使用的程序段,将其进行独立设计,使计算机可以重复执行。复执行。 4.1 模块化程序设计概述模块化程序设计概述main( )func1()func2()func3()func4()func5()func6()图图4-1 程序模块结构图程序模块结构图51. 引例引例 4.2 函数的声明、定义和调用函数的声明、定义和调用 /*程序名:程序名:4_1.cpp*/*功能:计算两个实数中大的值功能:计算两个实数中大的值*/#include float fmax(floa

3、t x , float y); /*函数说明函数说明*/void main() float a , b , c; scanf( “%f,%f”, &a , &b ); c = fmax(a , b); /*函数调用函数调用*/ printf( “max=%fn”, c ); float fmax(float x , float y) /*函数定义函数定义*/ float z; z = x y ? x : y; return z;62.函数说明函数说明 说明格式为:说明格式为: 函数返回值类型函数返回值类型 函数名函数名( (参数表参数表) ); #include float fmax(floa

4、t x , float y); /*函数说明函数说明*/void main() float a , b , c; scanf( “%f,%f”, &a , &b ); c = fmax(a , b); printf( “max=%fn”, c ); 函数说明是一条语句函数说明是一条语句,它指它指出函数返回值的类型、函出函数返回值的类型、函数的名称、函数要接收的数的名称、函数要接收的参数的个数、顺序和类型。参数的个数、顺序和类型。 如果在一个函数中要调用如果在一个函数中要调用另外一个函数,则在调用另外一个函数,则在调用之前要对该函数进行说明。之前要对该函数进行说明。4.2 函数的声明、定义和调用

5、函数的声明、定义和调用 73.函数定义函数定义 函数定义的一般形式:函数定义的一般形式: 函数值类型函数值类型 函数名函数名( (形参表形参表) /) /* *函数头函数头* */ / / /* *函数体函数体* */ / 说明部分说明部分 执行部分执行部分 4.2 函数的声明、定义和调用函数的声明、定义和调用 float fmax(float x , float y) float z; z = x y ? x : y; return z;函数头函数头函数体函数体84.函数调用函数调用 函数调用的一般形式为函数调用的一般形式为: 函数名(实参表)函数名(实参表); ; 4.2 函数的声明、定义

6、和调用函数的声明、定义和调用 void main() float a , b , c; scanf( “%f,%f”, &a , &b ); c = fmax(a , b); printf( “max=%fn”, c ); 可用两种方式调用函数:可用两种方式调用函数:(1) 函数的调用可以在允许表函数的调用可以在允许表达式出现的任何地方。如:达式出现的任何地方。如: c=fmax( a , b );(2) 函数调用可以作为一条独函数调用可以作为一条独立的语句。比如,有函数定义:立的语句。比如,有函数定义:void printstar( ) printf(“*”);则可以把该函数调用作为一个则可

7、以把该函数调用作为一个独立语句,独立语句, printstar();94.2 函数的声明、定义和调用函数的声明、定义和调用 函数返回值函数返回值 函数返回值的类型是由函函数返回值的类型是由函数定义或说明中的函数返数定义或说明中的函数返回类型决定的。如果返回回类型决定的。如果返回的类型与函数说明的不同,的类型与函数说明的不同,则在返回值时,先作隐含则在返回值时,先作隐含的类型转换,然后再返回。的类型转换,然后再返回。 #include int fmax(float x , float y) return x y ? x : y;void main() float max; max = fmax(

8、3.5 , 2.6); printf( “max=%fn” , max); 结果结果?104.2 函数的声明、定义和调用函数的声明、定义和调用 形参和实参形参和实参 形式参数:定义函数时放在函数名称之后括号中的参形式参数:定义函数时放在函数名称之后括号中的参数,简称形参。数,简称形参。实际参数:调用函数时括号中的参数,简称实参。实际参数:调用函数时括号中的参数,简称实参。形参与实参的结合:函数在调用时,将生成实参值的形参与实参的结合:函数在调用时,将生成实参值的一个副本传递给对应的形参,这个过程称为形参与实一个副本传递给对应的形参,这个过程称为形参与实参的结合。如果只允许实参向形参传递数据,则

9、被称参的结合。如果只允许实参向形参传递数据,则被称为为“单向传递单向传递”。 114.2 函数的声明、定义和调用函数的声明、定义和调用 参数传递实例参数传递实例 void swap(float x , float y) float t; t=x; x=y; y=t;void main() float a , b; scanf( “%f,%f”, &a , &b ); swap(a,b); printf( “%f,%fn”, a,b);3.53.52.62.6实参实参a实参实参b形参形参x形参形参y图图4-2 实参和形参数据的传递实参和形参数据的传递124.2 函数的声明、定义和调用函数的声明、

10、定义和调用 函数的调用过程函数的调用过程 void main() float a , b , c; scanf( “%f,%f”, &a , &b ); c = fmax(a , b); printf( “max=%fn”, c);float fmax(float x , float y) float z; z = x y ? x : y; return z;保存返回地址及当前现场,保存返回地址及当前现场,为形参分配内存并将实参为形参分配内存并将实参的值传给形参变量的值传给形参变量恢复恢复main函数的函数的现场,取得返回现场,取得返回地址和返回值地址和返回值134.带自定义函数的程序设计带自

11、定义函数的程序设计 4.2 函数的声明、定义和调用函数的声明、定义和调用 程序设计思路:程序设计思路:(1)定义一个函数定义一个函数isprime(int m)判断)判断m是否为是否为素数,若是素数,函数素数,若是素数,函数返回返回1,否则返回,否则返回0。int isprime(int m) int i; for(i=2;i=m-1; i+) if (m % i = 0) return 0; return 1;(2)在主函数中输入一个整数,调用在主函数中输入一个整数,调用isprime函数,如果函数值为函数,如果函数值为1,则,则打印是素数,否则打印不是素数。打印是素数,否则打印不是素数。v

12、oid main() int iNumber; printf (请输入一个整数:请输入一个整数:); scanf (%d , &iNumber); if (isprime (iNumber) ) printf (%d是素数是素数 , iNumber); else printf (%d不是素数不是素数 , iNumber);【例例4-2】从键盘输入一个整数,判断该整数是否为素数。从键盘输入一个整数,判断该整数是否为素数。141.嵌套调用嵌套调用int min2(int a,int b) return ab?a:b; int min3(int a,int b,int c) int x,y; x=m

13、in2(a,b); y=min2(t,c); return y;#includevoid main() int t1,t2; t1=min2(-2,8); printf(“min=%dn”t1,); t2=min3(-2,8,-6); printf(“min=%dn”,t2);4.3 函数的多级调用函数的多级调用154.3 函数的多级调用函数的多级调用main函数函数t1=min2(-2,8);t2=min3(-2,8,-6);min3函数函数x=min2(a,b);min2函数函数return a=0 & x = 9) printf(%dn , x); else printf(%d , x

14、% 10); invertLongInt(x / 10);4.3 函数的多级调用函数的多级调用25 小结:小结:函数分为系统函数和自定义函数。函数分为系统函数和自定义函数。每个函数的都是每个函数的都是独立定义独立定义的,如果函数定义在后、的,如果函数定义在后、调用在前,要对函数原型进行说明。调用在前,要对函数原型进行说明。除了主函数外,其他函数可以相互调用,如果除了主函数外,其他函数可以相互调用,如果A调用调用B,B又调用又调用C,称为嵌套调用,如果直接或,称为嵌套调用,如果直接或间接调用自己,称为递归。间接调用自己,称为递归。26 练习:练习:函数函数fun实现计算两个数之差的绝对值,并实现

15、计算两个数之差的绝对值,并将差值返回调用函数,请编写将差值返回调用函数,请编写fun函数函数 fun(int x, int y)27 第第7周作业:周作业:1在主函数中输入三角形的的三条边,调用子在主函数中输入三角形的的三条边,调用子函数,判断是否能组成三角形,若可以则返回函数,判断是否能组成三角形,若可以则返回1否则返回否则返回0。在主函数中输出判断结果。在主函数中输出判断结果。2编写函数,求两个正整数编写函数,求两个正整数m和和n的最大公约数。的最大公约数。m 和和 n 作为函数的参数。函数返回运算结果,由作为函数的参数。函数返回运算结果,由主函数输出。主函数输出。4. 习题习题4.2 要

16、求要求:第第8周上课前提交周上课前提交28(1) 程序区程序区:存放用户程序代码,即程序中各个函数的代码。:存放用户程序代码,即程序中各个函数的代码。(2) 静态存储区静态存储区:存放程序的全局数据和静态数据。分配在静态:存放程序的全局数据和静态数据。分配在静态存储区中的变量的生命期最长,它们在存储区中的变量的生命期最长,它们在main函数运行之前就函数运行之前就存在了,在程序的整个活动期(从程序开始执行到执行结束)存在了,在程序的整个活动期(从程序开始执行到执行结束)中,这些变量始终占用静态存储区中对应的存储空间,即程中,这些变量始终占用静态存储区中对应的存储空间,即程序开始执行时分配存储单元,程序执行完毕后释放。序开始执行时分配存储单元,程序执行完毕后释放。(3) 动态存储区动态存储区:存放局部变量。分配在动态存储区中的变量只:存放局部变量。分配在动态存储区中的变量只有在所定义的函数被调用时才分配存储单元,函数结束时就有在所定义的函数被调用时才分配存储单元,函数结束时就释放。系统对函数调用时的现场保护、返回地址等也占用动释放。系统对函数调用时的现场保护、返回地址等也占用动态保护区。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > .NET

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!