教学课件任务5 模块化程序设计.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《教学课件任务5 模块化程序设计.ppt》由会员分享,可在线阅读,更多相关《教学课件任务5 模块化程序设计.ppt(68页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、PPT模板下载:/moban/ 行业PPT模板:/hangye/ 节日PPT模板:/jieri/ PPT素材下载:/sucai/PPT背景图片:/beijing/ PPT图表下载:/tubiao/ 优秀PPT下载:/xiazai/ PPT教程: /powerpoint/ Word教程: /word/ Excel教程:/excel/ 资料下载:/ziliao/ PPT课件下载:/kejian/ 范文下载:/fanwen/ 试卷下载:/shiti/ 教案下载:/jiaoan/ 字体下载:/ziti/ 教学课件任务5 模块化程序设计C语言程序设计任务五 模块化程序设计5.1 教学目标5.2 工作任务
2、5.3 相关实践知识 在使用C语言设计较复杂的程序时,通常先把问题分解成几个部分,再根据每个部分应完成的功能编写出相应的程序段,这些具有独立功能的程序段就称为函数。使用函数,就能将原来较复杂的程序设计分解为相对简单的程序段设计。5.3 相关实践知识5.3.1 掌握无返回值函数的调用【案例5-1】编写一个显示欢迎信息的程序,输入姓名,显示欢迎信息。算法分析:编写一个message()函数用于显示欢迎信息。在main()函数中输入姓名,调用message()函数,显示完整的欢迎信息。5.3 相关实践知识程序代码:#include #include void message(char *s); /*
3、函数原型声明*/void main()char name10; printf(Please input your name:n); scanf(%s,name); message(name); /*函数调用*/void message(char *s) /*函数定义*/ int n,i; printf(%s Welcome to the C world!n,s);5.3 相关实践知识程序说明: void message(char *s); :函数原型声明语句,声明主函数中需要调用后面的message()函数。 程序从main()函数开始执行,输入姓名赋给变量name。message(name)
4、语句调用message()函数,并将name作为参数传递过去。 message()函数执行,输出显示欢迎信息。 message()函数执行完毕返回main()函数。 main()函数执行完毕,程序结束。5.3 相关实践知识运行结果如下:Please input your name:SunnySunny Welcome to the C world!5.3 相关实践知识5.3.2 掌握有返回值函数的调用【案例5-2】编写程序计算两个整数绝对值阶乘之差。算法分析:编写一个fac()函数计算一个整数x的绝对值阶乘。在main()函数中分两次调用fac()函数,分别求出x和y的绝对值阶乘,再计算两者的
5、差值。5.3 相关实践知识程序代码:#include #include #include int fac(int n) int i,f=1; n=abs(n); for(i=1;i=n;i+) /*计算一个整数绝对值的阶乘*/ f=f*i; return(f);void main() int x,y,c1,c2; printf(please input x,y:n); scanf(%d,%d,&x,&y); c1=fac(x); /*调用函数fac,求x绝对值的阶乘*/ c2=fac(y); /*调用函数fac,求y绝对值的阶乘*/ printf(The outcome is %dn,c1-c
6、2); /*输出结果*/5.3 相关实践知识运行结果如下:please input x,y:6,5The outcome is 600程序说明: return(f)是将f作为函数的值返回给主调函数 c1=fac(x)是将实际参数x传递给fac(int n)函数的形式参数n5.3 相关实践知识【案例5-2】编写程序计算两个整数绝对值阶乘之差。算法分析:编写一个fac()函数计算一个整数x的绝对值阶乘。在main()函数中分两次调用fac()函数,分别求出x和y的绝对值阶乘,再计算两者的差值。5.3 相关实践知识C语言程序如下:#include #include #include int fac(
7、int n) int i,f=1; n=abs(n); for(i=1;i=n;i+) /*计算一个整数绝对值的阶乘*/ f=f*i; return(f);void main() int x,y,c1,c2; printf(please input x,y:n); scanf(%d,%d,&x,&y); c1=fac(x); /*调用函数fac,求x绝对值的阶乘*/ c2=fac(y); /*调用函数fac,求y绝对值的阶乘*/ printf(The outcome is %dn,c1-c2); /*输出结果*/5.3 相关实践知识运行结果如下:please input x,y:6,5The
8、outcome is 600程序说明: return(f)是将f作为函数的值返回给主调函数 c1=fac(x)是将实际参数x传递给fac(int n)函数的形式参数n5.3 相关实践知识【案例5-3】输入长方体的长宽高l,w,h,求体积及三个面x*y,x*z,y*z的面积。int s1,s2,s3; /* 定义全局变量s1,s2,s3 */int count( int a,int b,int c) /* 定义局部变量阿a,b,c */ int v; /* 定义局部变量v */ v=a*b*c; s1=a*b; s2=b*c; s3=a*c; return v;void main() int v
9、,l,w,h; /* 定义局部变量v,l,w,h */ printf(Please input length,width and height:n); scanf(%d,%d,%d,&l,&w,&h); v=count(l,w,h); printf(v=%d s1=%d s2=%d s3=%dn,v,s1,s2,s3);5.3 相关实践知识运行结果如下:Please input length,width and height:1,2,3v=6 s1=2 s2=6 s3=3程序说明: 本程序中定义了三个全局变量s1,s2,s3,用来存放三个面积,其作用域为整个程序。 函数count()用来求正方
10、体体积和三个面积,函数的返回值为体积v。由主函数完成长宽高的输入及结果输出。5.3 相关实践知识5.3.3 理解数组和指针作为函数参数【案例5-4】编写一个函数实现两个数交换。算法分析:编写一个swap()函数实现对a,b两个数的交换。在main()函数中调用swap()函数,交换后输出结果。5.3 相关实践知识程序设计:#include void swap(int *a,int *b); /*函数声明*/void main() int x,y; x=10; y=20; printf(Before swapping:x=%d y=%dn,x,y); swap(&x,&y); /*函数调用*/
11、printf(After swapping:x=%d y=%dn,x,y);void swap(int *a,int *b) /*函数定义*/ int t; t=*a; *a=*b; *b=t;5.3 相关实践知识运行结果如下:Before swapping:x=10 y=20After swapping:x=20 y=10程序说明: void swap(int *a,int *b)中定义两个指针类型的形参int *a和int *b,分别表示需要交换的两个数; 函数调用使用语句swap(&x,&y),将x的地址传递指针类型的形参a, 将y的地址传递指针类型的形参b。 5.3 相关实践知识【案例
12、5-5】编写一个求一维数组最大值的函数。算法分析:编写一个max()函数实现对形参数组求最大值。在main()函数中调用max ()函数,对x数组求最大值,输出结果。5.3 相关实践知识程序设计:#include #include int max_value(int a,int n); /*函数声明*/void main() int x10,i,max; randomize(); printf(array:n); for(i=0;i10;i+) xi=random(90)+10; printf(%3d,xi); max=max_value(x,10); /*函数调用*/ printf(nThe
13、 max value is %dn,max);int max_value(int a,int n) /*函数定义*/ int i,t; t=a0; for(i=1;it) t=ai; return(t);5.3 相关实践知识运行结果如下:array:76 34 55 45 37 93 80 90 51 84The max value is 93程序说明: 定义max函数时,定义两个形参int a和int n,分别表示需求最大值的数组和数组元素的个数; 函数调用使用语句max_value(x,10),将x的首地址传递给形参数组a。 5.3 相关实践知识5.3.4 函数的嵌套调用和递归调用【案例5
14、-6】输入一个整数n,求12+22+32+n2的值。算法分析:编写一个function2()函数计算一个整数x的平方,编写一个function1()函数求和。function1()函数中调用function2()求平方,函数main() 函数中调用function1()函数求算式的和。此题属于函数的嵌套调用,执行过程见图5-1:5.3 相关实践知识图5-1 函数嵌套执行过程5.3 相关实践知识程序设计:#includeint function2(int x) int y; y=x*x; return(y);void function1(int x) int i; long sum; sum=0
15、; for(i=1;i=x;i+) sum=sum+function2(i); /*调用函数function2求x的平方*/ printf(1*1+2*2+.+%d*%d=%ldn,x,x,sum);void main() int n; printf(Please input n:n); scanf(%d,&n); function1(n); /*调用函数function1求算式的和*/5.3 相关实践知识运行结果如下:Please input n:61*1+2*2+.+6*6=91程序说明: 本程序中采用了三个函数嵌套的调用方式,在主函数main()中,提示用户输入n的值。 在函数funct
16、ion1()中,只进行数值的累加,数值的平方在函数function2()中进行计算。 在整个过程中,函数function1()被主函数main()调用一次,函数function2()被主函数function1()调用n次。5.3 相关实践知识【案例5-7】用递归的方法计算n!。计算n!的递归公式如下所示: 算法分析:当n不为0和1时,n!=n*(n-1)!,当n-1不为0和1时,(n-1)!=(n-1)*(n-2)!,因而该题可以用递归调用的方法编程实现。以n=3为例,执行过程见图5-2:5.3 相关实践知识图5-2 求3!的递归执行过程5.3 相关实践知识程序设计:#include #inc
17、lude #include float fact(int n);void main( ) int i,n; float s; printf(Please input n:n); scanf(%d,&n); s= fact(n); /*调用fact(n)函数求阶乘*/ printf(s=%fn,s);float fact(int n) float f; if(n=0|n=1)f=1; else f=n*fact(n-1); /*递归调用fact(n)函数*/ return(f); 5.3 相关实践知识运行结果如下:Please input n:3s=6.000000程序说明: 本程序中采用了函数
18、递归调用的方式,在主函数main()中,提示用户输入n的值。 在函数fact()中,对n求阶乘,当n为1或0时,fact(n)的返回值f=1。否则fact(n)的返回值f =n*fact(n-1)。 当n-1不为0或1时,再次调用fact()函数,直到递减到1,求出最终结果。5.4 相关理论知识5.4.1 C语言的程序结构 C语言程序的结构如图5-3所示,总是从main()函数开始,完成对其他函数的调用后再返回到main()函数,最后由main()函数结束整个程序。5.4 相关理论知识图5-3 C语言程序结构图5.4 相关理论知识在语言中可从不同的角度对函数分类:1. 从函数定义的角度看,函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件任务5 模块化程序设计 教学 课件 任务 模块化 程序设计
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内