《模块化程序设计.ppt》由会员分享,可在线阅读,更多相关《模块化程序设计.ppt(69页珍藏版)》请在第壹文秘上搜索。
1、2023-3-28C语言程序设计语言程序设计12023-3-28C语言程序设计语言程序设计2是是C程序的基本单位,每一个函数模块用来实程序的基本单位,每一个函数模块用来实现一个特定的功能。现一个特定的功能。1 1理解函数的功能。理解函数的功能。2 2掌握函数定义的一般形式。掌握函数定义的一般形式。3 3掌握函数的形参与实参的对应关系、参数传递方法及函数掌握函数的形参与实参的对应关系、参数传递方法及函数返回值的概念。返回值的概念。4 4掌握函数调用的几种形式。掌握函数调用的几种形式。5 5掌握函数嵌套调用的一般过程。掌握函数嵌套调用的一般过程。6. 6. 掌握指针的定义、使用以及指针作为函数的参
2、数。掌握指针的定义、使用以及指针作为函数的参数。7. 7. 掌握返回指针值的函数。掌握返回指针值的函数。8 8掌握局部变量与全局变量的概念及它们的使用特点。掌握局部变量与全局变量的概念及它们的使用特点。函数:函数:main(),getchar(),putchar(),printf(),scanf(),exp(),fabs(),sqrt(),gets(),puts(),strcpy(),strcmp(),strcat(),strupr(),strlwr(),strlen()等。等。 例:从键盘中输入两个数,分别求出这两个数的最小例:从键盘中输入两个数,分别求出这两个数的最小公倍数和最大公约数。公
3、倍数和最大公约数。2023-3-28C语言程序设计语言程序设计4int gys(int x,int y) int gbs(int x,int y)#include void main() int a,b,m,n; printf(“input 2 numbers:n”); scanf(“%d,%d”&a,&b); m=gys(a,b);n=gbs(a,b); printf(“gys=%d,gbs=%dn”,m,n);2023-3-28C语言程序设计语言程序设计5结构化程序设计方法:结构化程序设计方法:自上向下、逐步分解、分自上向下、逐步分解、分而治之而治之源程序文件源程序文件1 1预编译命令预编
4、译命令说明部分说明部分执行部分执行部分函数函数1 1函数函数n n源程序文件源程序文件i i源程序文件源程序文件n nC C程序程序C C程序结构程序结构&必须有且只能有一个名为必须有且只能有一个名为mainmain的主函数的主函数&C C程序的执行总是程序的执行总是从从mainmain函数开始,在函数开始,在mainmain中结束中结束&函数函数不能嵌套定义不能嵌套定义, ,可以可以嵌套嵌套调用调用2023-3-28C语言程序设计语言程序设计6模块化程序设计的特点:模块化程序设计的特点:(1 1)模块相对独立,功能单一。编写相对简单,可)模块相对独立,功能单一。编写相对简单,可以独立编写调试
5、。以独立编写调试。(2 2)可集体开发,缩短开发周期。不同的模块可以)可集体开发,缩短开发周期。不同的模块可以由不同的人员开发,最终能够合成完整的程序。由不同的人员开发,最终能够合成完整的程序。(3 3)开发出的模块,可在不同的应用程序中多次使)开发出的模块,可在不同的应用程序中多次使用,减少重复劳动,提高开发效率。用,减少重复劳动,提高开发效率。 (4)测试、更新以模块为单位进行而不会影响其他)测试、更新以模块为单位进行而不会影响其他模块。模块。 n函数分类函数分类n从用户角度从用户角度n标准函数(库函数):由系统提供标准函数(库函数):由系统提供n用户自定义函数用户自定义函数n从函数形式从
6、函数形式n无参函数无参函数n有参函数有参函数使用使用库函数库函数(见教材附录(见教材附录D)应注意:应注意:1、函数功能、函数功能2、函数参数的数目和顺序,及各参数意义和类型、函数参数的数目和顺序,及各参数意义和类型3、函数返回值意义和类型、函数返回值意义和类型4、需要使用的包含文件、需要使用的包含文件2023-3-28C语言程序设计语言程序设计8函数体函数体编写方法与主编写方法与主函数的编写方函数的编写方法一样法一样2023-3-28C语言程序设计语言程序设计9例例3.1:计算整数:计算整数x的的y次方次方long power(int x,int y) int n;long p=1; for
7、(n=1;n=y;n+) p=p*x; return(p);函数类型函数类型参数列表参数列表返回值返回值void main() int a,b;long c; scanf(“%d%d”,&a,&b); c=power(a,b); printf(“c=%ldn”,c);2023-3-28C语言程序设计语言程序设计10例例3.2 void print1( ) printf(“Welcome to China!n”);main( ) print1(); print1(); print1();函数可以函数可以无参数无参数2023-3-28C语言程序设计语言程序设计11n函数语句函数语句: 例例 pri
8、ntstar(); printf(“Hello,World!n”);n函数表达式函数表达式: 例例 m=max(a,b)*2;n函数参数函数参数: 例例 printf(“%d”,max(a,b); m=max(a,max(b,c);2023-3-28C语言程序设计语言程序设计12例例3.3:用函数实现两个数的数值交换:用函数实现两个数的数值交换#include void swap(int a,int b) int t; t=a;a=b;b=t; printf(“result :x=%d y=%dn”,a,b);void main() int x=10,y=5; printf(“x=%d,y=%
9、dn”,x,y); swap(x,y);形式参数形式参数实际参数实际参数2023-3-28C语言程序设计语言程序设计13形参与实参形参与实参形式参数形式参数:定义函数时函数名后面括号中的变量名定义函数时函数名后面括号中的变量名实际参数实际参数:调用函数时函数名后面括号中的表达式调用函数时函数名后面括号中的表达式v说明说明 实参必须有确定的值,可以是常量、变量、表实参必须有确定的值,可以是常量、变量、表达式、函数等;达式、函数等;形参必须指定类型;形参必须指定类型;形参与实参形参与实参类型一致,个数相同;类型一致,个数相同;形参在函数被调用前不占内存形参在函数被调用前不占内存; ;函数调用时为形
10、函数调用时为形参分配内存;调用结束,内存释放。参分配内存;调用结束,内存释放。2023-3-28C语言程序设计语言程序设计14n参数传递方式参数传递方式n值传递方式值传递方式n方式:函数调用时方式:函数调用时,为形参分配单元为形参分配单元,并将实参的并将实参的值值复制复制到形参中;调用结束,形参单元被释放,到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值实参单元仍保留并维持原值n特点:特点:n形参与实参占用不同的内存单元形参与实参占用不同的内存单元n单向传递,实参的值传给形参单向传递,实参的值传给形参2023-3-28C语言程序设计语言程序设计15c=max(a,b);(main
11、函数)函数) (max 函数)函数)max(int x, int y) int z; z=xy?x:y; return(z); 例例3.4 比较两个数并输出大者比较两个数并输出大者#include void main() int a,b,c; scanf(%d,%d,&a,&b); c=max(a,b); printf(Max is %d,c);int max(int x, int y) int z; z=xy?x:y; return(z);实参实参形参形参2023-3-28C语言程序设计语言程序设计16n函数语句函数语句: 例例 printstar(); printf(“Hello,Worl
12、d!n”);n函数表达式函数表达式: 例例 m=max(a,b)*2;n函数参数函数参数: 例例 printf(“%d”,max(a,b); m=max(a,max(b,c);函数调用时函数调用时,为形参分配单元为形参分配单元,并将实参并将实参的值的值复制复制到形参中;调用结束,形参单到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值元被释放,实参单元仍保留并维持原值例例 3.5 计算计算x的立方的立方#include float cube(float x) return(x*x*x);void main() float a, product; printf(Please input
13、 value of a:); scanf(%f,&a); product=cube(a); printf(”Cube of %.4f is %.4fn,a,product);xaproduct1.21.21.7282023-3-28C语言程序设计语言程序设计18 例例3. 6 从键盘中输入一个年份,判断该年是否是从键盘中输入一个年份,判断该年是否是闰年。闰年。#include void main() int year,st; printf(“Input a year: n”); scanf(“%d”,&year); st=leap(year); if(st=1) printf(“n%d is
14、runniann”,year); else printf(“n%d is not runniann”,year );int leap(int year) int st; if(year%4=0& year%100!=0|year%400=0) st=1; else st=0; return(st);实际参数实际参数形式参数形式参数2023-3-28C语言程序设计语言程序设计19函数体函数体编写方法与主编写方法与主函数的编写方函数的编写方法一样法一样6、函数声明的一般格式、函数声明的一般格式函数类型函数类型 函数名函数名(形参类型形参类型 形参名形参名,. )2023-3-28C语言程序设计语言
15、程序设计20n形式形式: return(表达式表达式); 或或 return 表达式表达式; 或或 return;n功能功能:使程序控制从被调用函数返回到调用函数:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数中,同时把返值带给调用函数n说明说明:n函数中可有多个函数中可有多个return语句语句,一旦遇到一个一旦遇到一个return语句,就立即返回到主调函数。语句,就立即返回到主调函数。n若无若无return语句,遇语句,遇时,自动返回调用函数时,自动返回调用函数n若函数类型与若函数类型与return语句中表达式值的类型语句中表达式值的类型不一致,按前者为准,自动转换不一致,
16、按前者为准,自动转换-函数调函数调用转换用转换nvoid型函数型函数int max(int x,int y)if(xy) return(x); return(y);void main()int a,b,c; scanf(“%d,%d”,&a,&b); c=max(a,b); printf(“max is %d”,c);2023-3-28C语言程序设计语言程序设计21例例3.7 函数返回值类型转换函数返回值类型转换#include int max(float x, float y) float z; z=xy?x:y; return(z);void main() float a,b; int c; scanf(%f,%f,&a,&b); c=max(a,b); printf(Max is %dn,c);输入:输入:23.0,66.0输出:输出:662023-3-28C语言程序设计语言程序设计22例例3.8:从键盘中输入两个数,分别求出这两个:从键盘中输入两个数,分别求出这两个数的最小公倍数和最大公约数。数的最小公倍数和最大公约数。int gys(int x,int y)int gbs(i