




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2022/7/18电气与信息工程学院计算机系制造Lesson 13 程序的组织构造2022/7/18电气与信息工程学院计算机系制造学习目的:31学会运用构造化程序设计方法编写程序2022/7/18电气与信息工程学院计算机系制造3函数调用2函数编写原那么1、将比较复杂的问题分解成小问题函数,以简化程序设计2、将经常用的、公共的功能定义成函数,以在程序中重用2022/7/18电气与信息工程学院计算机系制造3函数调用2练习1:从键盘输入一个数n,输出他的一切质因子,例如输入30 输出 2 3 5 要求:1、定义一个函数isPrime(int x)。函数的功能:假设x是质数,前往1,否那么前往02、在
2、主函数中,从2循环到n/2,将是n的因子,并且是质数的输出2022/7/18电气与信息工程学院计算机系制造3函数运用3例3:输出乘法口诀表。2022/7/18电气与信息工程学院计算机系制造3函数运用3例3:输出乘法口诀表。分析: 它是一个9行9列的二维表格,加上一个行标题和一个列标题,显示出来应该是10行10列。2022/7/18电气与信息工程学院计算机系制造3函数运用3问题分析行与行之间采用假设干个“=或“-字符表示表格之间的线段,为此,可以定义一个函数,专门用来延续地显示假设干个字符,以防止在每次需求显示线段的时候,都反复地书写相应的语句序列。(重用) 2022/7/18电气与信息工程学院
3、计算机系制造#include void drawLine(int n,char ch); /* 延续显示n个ch字符 */int main() int i,j; printf(n 9.9 tablen); /* 显示表名 */ drawLine(30, =); /* 显示每列的标题 */ printf(n 1 2 3 4 5 6 7 8 9); drawLine(30, =); for (i=1; i=9; i+) /* 显示每行的内容 */ printf(n%3d, i); for (j=1; j=9; j+) printf(%3d, i*j); if (i9) drawLine(30, -
4、); else drawLine(30, =); return 0;lesson13_03.c2022/7/18电气与信息工程学院计算机系制造void drawLine(int n, char ch) /*延续显示n个ch字符*/ int i; putchar(n); /*换行*/ for (i=1; iy?x:y; return(z); int max(int x,int y);int main() int a,b,c; scanf(%d,%d,&a,&b); c=max(a,b); printf(Max is %d,c); return 0;int max(int x, int y) in
5、t z; z=xy?x:y; return(z);形参实参例1:函数执行过程lesson13_01.c2022/7/18电气与信息工程学院计算机系制造3函数调用2例2:参数传送,分析程序结果#include int main() int x=7,y=11; printf(x=%d,y=%dn,x,y); printf(swapped:n); swap(x,y); printf(x=%d,y=%dn,x,y);swap(int a,int b) int temp; temp=a; a=b; b=temp;711x:y:调用前:调用终了:711x:y:调用:711a:b:711x:y:swap:7
6、11x:y:117a:b:temp实参和形参是单向值传送!普通地在函数体中修正形参的值是不会影响实参的!lesson13_02.c2022/7/18电气与信息工程学院计算机系制造分析如下程序的执行结果#include int fun(int n,int s);int main() int sum=0; fun(5,sum); printf(sum=%d,sum);int fun(int n,int s) int i=0; for(i=1,s=0;i=n;i+) s+=i; return s;2022/7/18电气与信息工程学院计算机系制造3函数运用3例4:计算要求准确度到达10-6。 2022
7、/7/18电气与信息工程学院计算机系制造3函数运用3问题分析在这个公式中,第i项的分子是xi;分母是i!。为了便于计算每一项的数值,设计了两个函数power( )和factorial( ) 分别用来完成计算xi和i!的义务。另外,为了更好地表达模块化的设计思绪,再设计一个函数e( ) 用于计算ex。 2022/7/18电气与信息工程学院计算机系制造算法描画 2022/7/18电气与信息工程学院计算机系制造#include long power(int x, int y);long factorial(int n);double e(int x);int main( ) int x; print
8、f(nEnter x:); scanf(%d, &x); printf(ne%d=%f, x, e(x); return 0;long power(int x, int y) /* 计算xy */ long p = 1; int i; for (i=1; i=y; i+) p = p*x; return p;2022/7/18电气与信息工程学院计算机系制造long factorial(int n) /* 计算n! */ int i; long f = 1; for (i=2; i= 1E-6 ); /* 精度的检查 */ return result;2022/7/18电气与信息工程学院计算机系
9、制造3课堂练习4!nm*!(n-m)计算下式,n和m从键盘输入2022/7/18电气与信息工程学院计算机系制造3函数运用3例5:从键盘输入一组文本行,求出最长行并且输出。 2022/7/18电气与信息工程学院计算机系制造3函数运用3问题分析从问题的求解要求可知,没有必要保管输入的一切文本行。只需保管曾经输入各行中的最长行,以及刚输入的当前行。设计一个专门用于计算最长文本行的函数void readline(char maxline )。其实现过程为:一边输入文本行保管于数组line、一边与当前最长的文本行长度进展比较。假设新输入的文本行更长,那么更新记录最长文本行的信息,最后得到的最长文本行将经
10、过参数带出去。2022/7/18电气与信息工程学院计算机系制造算法描画 2022/7/18电气与信息工程学院计算机系制造#include #include void readline(char maxline );int main() char maxline80=; readline(maxline);/* 输入并计算最长行 */ printf(nThe longest line is:n); puts(maxline);/* 输出最长行 */ return 0;lesson13_05.c2022/7/18电气与信息工程学院计算机系制造void readline(char maxline )
11、 /* 输入并计算最长文本行 */ char line80; int maxlength,n; maxlength=0; /*初始化*/ line0=0; printf(nEnter text lines:n); do gets(line); /*输入文本行*/ n = strlen(line); if (nstrlen(maxline) /*与记录的最长文本行进展比较*/ maxlength = n; /*更新记录最长文本行的信息*/ strcpy(maxline, line); while (n0); return ;2022/7/18电气与信息工程学院计算机系制造编写程序,将从键盘输入的
12、字符串两头的空格去掉后输出。例如输入的字符串是 ABC ,输出ABC 要求:1、定义函数trim(char s),函数的功能是将字符串两头的空格去掉2、在主函数中调用trim函数将从键盘输入的字符串两头的空格去掉后输出3课堂练习52022/7/18电气与信息工程学院计算机系制造3递归算法与递归函数6C言语允许函数1、嵌套调用,即在函数中可以调用其它的函数。2、递归调用,即在函数内部直接地调用本人。2022/7/18电气与信息工程学院计算机系制造3递归算法与递归函数6f( )调f调f2调f1f1( )f2( )int f(int x) int y,z; z=f(y); . return(2*z)
13、;int f1(int x) int y,z; z=f2(y); . return(2*z);int f2(int t) int a,c; c=f1(a); . return(3+c);2022/7/18电气与信息工程学院计算机系制造3递归算法与递归函数6例6: 计算阶乘 的函数 n!=n * (n-1) * (n-2) * * 2*1 n!=n * (n-1) * (n-2) * * 2 * 1 n!=n * (n-1)!1!=1递归关系终止条件算n!,必需算出 (n-1)!; 计算出 (n-1)!,必需计算出(n-2)!; ;由此类推,直到推到1!=1,前往后即可依次计算出 2!,3!,(
14、n-1)!,n! 。2022/7/18电气与信息工程学院计算机系制造3递归算法与递归函数6当求解一个问题时,假设求解过程又用到本人那么可以运用递归求解float fac(int n) float f; return f; if(n=0|n=1) f=1; else f=fac(n-1)*n; int main( ) float y; int n; printf(“输入:); scanf(%d,&n); y=fac(n); printf(%d! =%.0f, n, y); return 0;lesson13_06.c2022/7/18电气与信息工程学院计算机系制造3递归算法与递归函数6main函
15、数输入m 3y=fac(m)输出y 6调用facmn 3 因 3!=1或0 f=3*fac(3-1)前往f=6调用facmn 2前往f=2前往f=1 因 2!=1或0 f=2*fac(2-1)调用facmn 1因1=1 f=1终了递归调用过程演示:2022/7/18电气与信息工程学院计算机系制造3课堂练习7输出以下数列1 1 2 3 5 8 13的前20项要求:1、定义函数fib(int n),函数的功能是前往该数列中的第n项2、在主函数中循环逐次求每一项3、提示:fib(n)=fib(n-1)+fib(n-2)2022/7/18电气与信息工程学院计算机系制造3课堂练习7编写程序,从键盘输入x和n,输出x的n次方要求:1、定义函数f(int x,int n),函数的功能是求x的n次方2、在主函数中调用该函数,输出x的n次方3、提示f(x,n)=f(x,n-1)*x;2022/7/18电气与信息工程学院计算机系制造3课后练
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业员工绩效考核方案制定工具
- 奇异之伞800字(7篇)
- 我看雷锋2000字(12篇)
- 农村生态环境保护与资源开发联动合同
- 白桦林意象解析与文学价值探索教案
- 企业市场调查分析数据化报告模板
- 日记爬山550字14篇
- 纪念白求恩课件
- 发人深思的拍卖会900字11篇
- 企业员工手册及政策宣贯平台
- 仓储主管考试试卷及答案
- 地理探索之旅:初中研学旅行方案策划
- 护理执行医嘱制度
- 妇联开展宣讲活动方案
- 母婴保健培训课件学习
- 渠道拓展培训
- 动画场景设计流程
- 2025年山东省济南市中考英语模拟试题(含答案)
- 公安涉密载体管理制度
- 2025年中国蛇养殖行业市场前景预测及投资价值评估分析报告
- JG/T 536-2017热固复合聚苯乙烯泡沫保温板
评论
0/150
提交评论