




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作学习目标学习目标:3 1学会使用结构化程序设计方法编写程序学会使用结构化程序设计方法编写程序2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3函数调用函数调用2函数编写原则函数编写原则1、将比较复杂的问题分解成小问题(函、将比较复杂的问题分解成小问题(函数),以简化程序设计数),以简化程序设计2、将经常用的、公共的功能定义成函数,、将经常用的、公共的功能定义成函数,以在程序中重用以在程序中重用2022-3-7电气与信
2、息工程学院计算机系制作电气与信息工程学院计算机系制作3函数调用函数调用2练习练习1:从键盘输入一个数从键盘输入一个数n,输出他的所有质因子,例输出他的所有质因子,例如输入如输入30 输出输出 2 3 5 要求:要求:1、定义一个函数、定义一个函数isPrime(int x)。函数的功能:。函数的功能:如果如果x是质数,返回是质数,返回1,否则返回,否则返回02、在主函数中,从、在主函数中,从2循环到循环到n/2,将是,将是n的因的因子,并且是质数的输出子,并且是质数的输出2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3函数应用函数应用3 例3:输出乘法口诀表。20
3、22-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3函数应用函数应用3 例例3 3:输出乘法口诀表。:输出乘法口诀表。l分析分析: : 它是一个它是一个9行行9列的二维表格,加上一个列的二维表格,加上一个行标题和一个列标题,显示出来应该是行标题和一个列标题,显示出来应该是10行行10列。列。2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3函数应用函数应用3 问题分析l行与行之间采用若干个“=”或“-”字符表示表格之间的线段,为此,可以定义一个函数,专门用来连续地显示若干个字符,以避免在每次需要显示线段的时候,都重复地书写相应的语句序列。( (
4、重用重用) ) 2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作#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
5、, i); for (j=1; j=9; j+) printf(%3d, i*j); if (i9) drawLine(30, -); else drawLine(30, =); return 0;lesson13_03.c2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作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
6、; scanf(%d,%d,&a,&b); c=max(a,b); printf(Max is %d,c); return 0;int max(int x, int y) int z; z=xy?x:y; return(z);形参形参实参实参例例1:函数执行过程:函数执行过程lesson13_01.c2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3函数调用函数调用2例例2:2:参数传递参数传递, ,分析程序结果分析程序结果#include int main() int x=7,y=11; printf(x=%d,y=%dn,x,y); printf
7、(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:调用前:调用前:调用结束:调用结束:7 71111x:x:y:y:调用:调用:711a:b:711x:y:swap:711x:y:117a:b:temp实参和形参是单向值传递!实参和形参是单向值传递!一般地在函数体中修改形参的一般地在函数体中修改形参的值是不会影响实参的!值是不会影响实参的!lesson13_02.c2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作分
8、析如下程序的执行结果分析如下程序的执行结果#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-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3函数应用函数应用3例例4:计算:计算要求精确度达到要求精确度达到10-6。 .! nx.! 3x! 2xx1en32x2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计
9、算机系制作3函数应用函数应用3 问题分析问题分析l在这个公式中,第在这个公式中,第i项的分子是项的分子是xi;分母是;分母是i!。!。为了便于计算每一项的数值,设计了两个函数为了便于计算每一项的数值,设计了两个函数power( )和和factorial( ) 分别用来完成计算分别用来完成计算xi和和i!的的任务。另外,为了更好地体现模块化的设计思任务。另外,为了更好地体现模块化的设计思路,再设计一个函数路,再设计一个函数e( ) 用于计算用于计算ex。 2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作 算法描述 开开始始 结结束束 1result 1i result
10、+tmpresult i+1i return result xi/i!tmp 精精度度不不够够 Y N 2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作#include long power(int x, int y);long factorial(int n);double e(int x);int main( ) int x; printf(nEnter x:); scanf(%d, &x); printf(ne%d=%f, x, e(x); return 0;long power(int x, int y) /* 计算计算xy */ long p =
11、1; int i; for (i=1; i=y; i+) p = p*x; return p;2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作long factorial(int n) /* 计算计算n! */ int i; long f = 1; for (i=2; i= 1E-6 ); /* 精度的检查精度的检查 */ return result;2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3课堂练习课堂练习4!nm * *!(n-m)2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3函数应用函数应用3
12、2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3函数应用函数应用3 问题分析问题分析l从问题的求解要求可知,没有必要保存输入的所有文从问题的求解要求可知,没有必要保存输入的所有文本行。只需保存已经输入各行中的最长行,以及刚输本行。只需保存已经输入各行中的最长行,以及刚输入的当前行。入的当前行。l设计一个专门用于计算最长文本行的函数设计一个专门用于计算最长文本行的函数void void readline(char maxline )readline(char maxline )。l其实现过程为:一边输入文本行保存于数组其实现过程为:一边输入文本行保存于数组linel
13、ine、一、一边与当前最长的文本行长度进行比较。如果新输入的边与当前最长的文本行长度进行比较。如果新输入的文本行更长,则更新记录最长文本行的信息,最后得文本行更长,则更新记录最长文本行的信息,最后得到的最长文本行将通过参数带出去。到的最长文本行将通过参数带出去。2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作 算法描述 开开 始始 结结 束束 0 maxlength 0 line0 非非 空空行行 Y N 新新 长长度度 maxlength 保保 存存新新 的的最最长长行行 输输 入入文文 本本行行line 更更长长 Y N 2022-3-7电气与信息工程学院计算机
14、系制作电气与信息工程学院计算机系制作#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-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作void readline(char maxline ) /* 输入并计算最长文本行输
15、入并计算最长文本行 */ 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-3-7
16、电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3课堂练习课堂练习52022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3递归算法与递归函数递归算法与递归函数6语言允许函数语言允许函数1 1、嵌套调用,即在函数中可以调用、嵌套调用,即在函数中可以调用其它的函数。其它的函数。2 2、递归调用,即在、递归调用,即在。2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3递归算法与递归函数递归算法与递归函数6f( )调调f调调f2调调f1f1( )f2( )int f(int x) int y,z; z=f(y); . return(2*z
17、);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-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3递归算法与递归函数递归算法与递归函数6的函数的函数 n!=n * (n-1) * (n-2) * * 2*1 n!=n * (n-1) * (n-2) * * 2 * 1 n!=n * (n-1)!算算,必须算出,必须算出 计算出计算出 必须必须计算出计算出由此类推,直到推到由此类推,直到推到,返回后即可依次计算出返回后即可依次计算
18、出 2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3递归算法与递归函数递归算法与递归函数6当求解一个问题时,如果求解过程又用到自当求解一个问题时,如果求解过程又用到自己则可以使用递归求解己则可以使用递归求解)1()!1()1 ,0(1!nnnnnfloat 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,
19、n, y); return 0;lesson13_06.c2022-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3递归算法与递归函数递归算法与递归函数6main函数函数输入输入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-3-7电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作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-3-7电气与信息工程学院计算
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《潘婷广告策划案》课件
- 四读书活动方案
- 高三生物学一轮复习课件微专题:细胞分裂与变异、细胞自噬、焦亡、铁死亡等
- 数学启蒙之旅
- 建筑项目管理课件
- 《管理者策略》课件
- 《建筑材料与构造》课件
- 2025年北京市房山区中考数学一模试卷
- 湖南省浏阳市2023-2024学年高二上学期期末质量监测数学试卷 含解析
- 2025年事业单位考试真题及答案C类
- 2025届新高考教学教研联盟高三第二次联考政治试题及答案
- 赌博酒驾警示教育
- 产业园物业管理实施方案
- 管理学基础-形考任务三-国开-参考资料
- 梁晓声母亲测试题及答案
- 企业会计人员劳动合同模板2025
- 浙江省肿瘤医院医疗废物暂存间环保设施提升改造项目报告表
- 敬老院安全培训课件
- 《加拉帕戈斯群岛》课件
- 社区老旧小区外墙翻新脚手架方案
- 2025年医院消化内科年度工作计划
评论
0/150
提交评论