lesson13程序的组织结构函数调用_第1页
lesson13程序的组织结构函数调用_第2页
lesson13程序的组织结构函数调用_第3页
lesson13程序的组织结构函数调用_第4页
lesson13程序的组织结构函数调用_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2024/1/25电气与信息工程学院计算机系制造Lesson13程序的组织构造2024/1/25电气与信息工程学院计算机系制造学习目的:31学会运用构造化程序设计方法编写程序2024/1/25电气与信息工程学院计算机系制造3函数调用2函数编写原那么1、将比较复杂的问题分解成小问题〔函数〕,以简化程序设计2、将经常用的、公共的功能定义成函数,以在程序中重用2024/1/25电气与信息工程学院计算机系制造3函数调用2练习1:从键盘输入一个数n,输出他的一切质因子,例如输入30输出235要求:1、定义一个函数isPrime(intx)。函数的功能:假设x是质数,前往1,否那么前往02、在主函数中,从2循环到n/2,将是n的因子,并且是质数的输出2024/1/25电气与信息工程学院计算机系制造3函数运用3例3:输出乘法口诀表。2024/1/25电气与信息工程学院计算机系制造3函数运用3例3:输出乘法口诀表。分析:它是一个9行9列的二维表格,加上一个行标题和一个列标题,显示出来应该是10行10列。2024/1/25电气与信息工程学院计算机系制造3函数运用3问题分析行与行之间采用假设干个“=〞或“-〞字符表示表格之间的线段,为此,可以定义一个函数,专门用来延续地显示假设干个字符,以防止在每次需求显示线段的时候,都反复地书写相应的语句序列。(重用)2024/1/25电气与信息工程学院计算机系制造#include<stdio.h>voiddrawLine(intn,charch);/*延续显示n个ch字符*/intmain(){inti,j;printf("\n9.9table\n"); /*显示表名*/drawLine(30,'='); /*显示每列的标题*/printf("\n123456789");drawLine(30,'=');for(i=1;i<=9;i++){ /*显示每行的内容*/printf("\n%3d",i);for(j=1;j<=9;j++)printf("%3d",i*j);if(i<9)drawLine(30,'-');else drawLine(30,'=');}return0;}lesson13_03.c2024/1/25电气与信息工程学院计算机系制造voiddrawLine(intn,charch)/*延续显示n个ch字符*/{inti;putchar('\n');/*换行*/for(i=1;i<=n;i++)putchar(ch);/*延续显示n个字符ch*/return;}2024/1/25电气与信息工程学院计算机系制造3函数运用3从键盘输入图形的行数,按照如下规那么输出图形,例如行数等于5的图形如下:*************************课堂练习2024/1/25电气与信息工程学院计算机系制造3函数运用3提示:1、定义函数printSpace(intn),输出n个空格2、定义函数printStar(intn),输出n个*号3、在主函数根据图形的行数循环,调用前面的函数输出图形的每一行2024/1/25电气与信息工程学院计算机系制造3函数调用2函数调用的普通方式:函数名(实参列表);方式参数(形参):定义函数时写在函数名后括号内的变量,形参前必需有数据类型intfun(intn)实践参数〔实参〕:调用函数时写在函数名后括号内的变量,实参仅写变量名sum+=fun(i)2024/1/25电气与信息工程学院计算机系制造3函数调用2参数的传送当函数没有执行时,参数此时并不存在,只是用来阐明在调用这个函数时需求在这个位置向函数提供的数据类型。在调用函数之后,参数传送需求阅历两个根本步骤:首先,根据方式参数的声明格式,为每一个方式参数分配存储空间;然后再将真实参数的值赋给对应的方式参数。2024/1/25电气与信息工程学院计算机系制造3函数调用2c=max(a,b);max(intx,inty){intz;z=x>y?x:y;return(z);}intmax(intx,inty);intmain(){inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("Maxis%d",c);return0;}intmax(intx,inty){intz;z=x>y?x:y;return(z);}形参实参例1:函数执行过程lesson13_01.c2024/1/25电气与信息工程学院计算机系制造3函数调用2例2:参数传送,分析程序结果#include<stdio.h>intmain(){intx=7,y=11;printf("x=%d,y=%d\n",x,y);printf("swapped:\n");swap(x,y);printf("x=%d,y=%d\n",x,y);}swap(inta,intb){inttemp;temp=a;a=b;b=temp;}711x:y:调用前:调用终了:711x:y:调用:711a:b:711x:y:swap:711x:y:117a:b:temp实参和形参是单向值传送!普通地在函数体中修正形参的值是不会影响实参的!lesson13_02.c2024/1/25电气与信息工程学院计算机系制造分析如下程序的执行结果#include<stdio.h>intfun(intn,ints);intmain(){intsum=0;fun(5,sum);printf("sum=%d",sum);}intfun(intn,ints){inti=0;for(i=1,s=0;i<=n;i++)s+=i;returns;}2024/1/25电气与信息工程学院计算机系制造3函数运用3例4:计算

要求准确度到达10-6。

2024/1/25电气与信息工程学院计算机系制造3函数运用3问题分析在这个公式中,第i项的分子是xi;分母是i!。为了便于计算每一项的数值,设计了两个函数power()和factorial()分别用来完成计算xi和i!的义务。另外,为了更好地表达模块化的设计思绪,再设计一个函数e()用于计算ex。2024/1/25电气与信息工程学院计算机系制造算法描画2024/1/25电气与信息工程学院计算机系制造#include<stdio.h>longpower(intx,inty);longfactorial(intn);doublee(intx);intmain(){intx;printf("\nEnterx:");scanf("%d",&x);printf("\ne^%d=%f",x,e(x));return0;}longpower(intx,inty) /*计算xy*/{longp=1;inti;for(i=1;i<=y;i++)p=p*x;returnp;}2024/1/25电气与信息工程学院计算机系制造longfactorial(intn) /*计算n!*/{inti;longf=1;for(i=2;i<=n;i++)f=f*i;returnf;}doublee(intx) /*计算ex*/{doubleresult=1.0,tmp;inti=1;do{tmp=power(x,i)*1.0/factorial(i);i++;result+=tmp;}while(tmp>=1E-6); /*精度的检查*/returnresult;}2024/1/25电气与信息工程学院计算机系制造3课堂练习4!nm*!!(n-m)计算下式,n和m从键盘输入2024/1/25电气与信息工程学院计算机系制造3函数运用3例5:从键盘输入一组文本行,求出最长行并且输出。2024/1/25电气与信息工程学院计算机系制造3函数运用3问题分析从问题的求解要求可知,没有必要保管输入的一切文本行。只需保管曾经输入各行中的最长行,以及刚输入的当前行。设计一个专门用于计算最长文本行的函数voidreadline(charmaxline[])。其实现过程为:一边输入文本行保管于数组line、一边与当前最长的文本行长度进展比较。假设新输入的文本行更长,那么更新记录最长文本行的信息,最后得到的最长文本行将经过参数带出去。2024/1/25电气与信息工程学院计算机系制造算法描画2024/1/25电气与信息工程学院计算机系制造#include<stdio.h>#include<string.h>voidreadline(charmaxline[]);intmain(){charmaxline[80]="";readline(maxline); /*输入并计算最长行*/printf("\nThelongestlineis:\n");puts(maxline); /*输出最长行*/return0;}lesson13_05.c2024/1/25电气与信息工程学院计算机系制造voidreadline(charmaxline[]) /*输入并计算最长文本行*/{charline[80];intmaxlength,n;maxlength=0;/*初始化*/line[0]='\0';printf("\nEntertextlines:\n");do{gets(line);/*输入文本行*/n=strlen(line);if(n>strlen(maxline)){/*与记录的最长文本行进展比较*/maxlength=n;/*更新记录最长文本行的信息*/strcpy(maxline,line);}}while(n>0);return;}2024/1/25电气与信息工程学院计算机系制造编写程序,将从键盘输入的字符串两头的空格去掉后输出。例如输入的字符串是〞ABC〞,输出〞ABC〞要求:1、定义函数trim(chars[]),函数的功能是将字符串两头的空格去掉2、在主函数中调用trim函数将从键盘输入的字符串两头的空格去掉后输出3课堂练习52024/1/25电气与信息工程学院计算机系制造3递归算法与递归函数6C言语允许函数1、嵌套调用,即在函数中可以调用其它的函数。2、递归调用,即在函数内部直接地调用本人。2024/1/25电气与信息工程学院计算机系制造3递归算法与递归函数6f()调f调f2调f1f1()f2()intf(intx){inty,z;……z=f(y);…….return(2*z);}intf1(intx){inty,z;……z=f2(y);…….return(2*z);}intf2(intt){inta,c;……c=f1(a);…….return(3+c);}2024/1/25电气与信息工程学院计算机系制造3递归算法与递归函数6例6:计算阶乘的函数n!=n*(n-1)*(n-2)*…*2*1n!=n*(n-1)*(n-2)*…*2*1n!=n*(n-1)!1!=1递归关系终止条件算n!,必需算出(n-1)!;计算出(n-1)!,必需计算出(n-2)!;…;由此类推,直到推到1!=1,前往后即可依次计算出2!,3!,…,(n-1)!,n!。2024/1/25电气与信息工程学院计算机系制造3递归算法与递归函数6当求解一个问题时,假设求解过程又用到本人那么可以运用递归求解floatfac(intn){floatf;

returnf;}if(n==0||n==1)f=1;elsef=fac(n-1)*n;intmain(){floaty;intn;printf(“输入:");scanf("%d",&n);y=fac(n);printf("%d!=%.0f",n,y);return0;}lesson13_06.c2024/1/25电气与信息工程学院计算机系制造3递归算法与递归函数6main函数输入m3y=fac(m)输出y

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论