清华大学C课件9.ppt

清华大学C课件9.ppt

ID:51022698

大小:988.00 KB

页数:69页

时间:2020-03-17

清华大学C课件9.ppt_第1页
清华大学C课件9.ppt_第2页
清华大学C课件9.ppt_第3页
清华大学C课件9.ppt_第4页
清华大学C课件9.ppt_第5页
资源描述:

《清华大学C课件9.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、第六章函数、递推与递归清华大学函数的概念、定义、调用和返回带自定义函数的程序设计递推算法递归思想及算法实现内容要点为什么需要函数?——满足实际应用需求6.1函数函数是组成C/C++程序的基础C/C++库中已经为用户提供了许多标准库函数用户可以根据自己的需要选用合适的库函数如果没有所需函数,用户可自己定义和编写一些函数函数概述函数是模块化的基本单位主调函数与被调函数程序、源文件与函数关系程序中各模块关系file1.cppmain(){}fun1(){}fun2(){}file2.cppfun3(){}fun4(){}fun5(){}program……intma

2、in(){inta,b,sum;……sum=Add(a,b);//函数调用……}intAdd(intx,inty);//函数声明intAdd(intx,inty)//函数定义{…………}//函数体取代函数声明尾部的分号要使用C++函数,必须完成如下工作:提供函数定义提供函数声明(原型)调用函数函数定义:有返回值的函数没有返回值的函数(void函数)voidfunctionName(parameterList)//没有返回值{……return;//可选}typeNamefunctionName(parameterList)//有返回值{……returnvalu

3、e;}【任务6.1】素数判定思路:设计一个函数intcheckprime(inta),负责检查a是否为素数:如果是素数,该函数返回1;否则,该函数返回0。#include#includeusingnamespacestd;intmain(){inta=0;cout<<"请输入一个整数:a=";cin>>a;if(checkprime(a))//函数调用cout<

4、ckprime(intn)//函数定义,n为形式参数{intk=0;for(k=2;k<=sqrt(n);k=k+1){if(n%k==0)//如果n能被k整除则返回0return0;}return1;//n不能被k整除则返回1}有何问题?函数原型intcheckprime(intn);提高算法效率只要在1和n之间存在一个因子就可终止,并返回n不是素数若n可被2整除,不需检验其它数,程序终止并返回n不是素数;若否,则所有偶数都不是因子,程序只需检验奇数程序不必检验因子一直到n,只需到sqrt(n)即可intcheckprime(intn){inti;if(n

5、%2==0)return0;for(i=3;i<=sqrt(n);i+=2){if(n%i==0)return0;}return1;}问题1:本算法效率?每次迭代都需要计算平方根,很费时问题2:本算法正确性?n=1n=2时结果错误intcheckprime(intn){intlimit,i;limit=sqrt(n);if(n%2==0)return0;for(i=3;i<=limit;i+=2){if(n%i==0)return0;}return1;}问题:本算法正确性?浮点数的存储有误差,程序的正确性依赖于机器的表示精度intcheckprime(int

6、n){intlimit,i;limit=sqrt(n)+1;if(n%2==0)return0;for(i=3;i<=limit;i+=2){if(n%i==0)return0;}return1;}if(n<=1)return0;if(n==2)return1;改进后的正确函数:函数定义:intcheckprime(intn)checkprime为函数名int是函数返回值的数据类型n为函数的形式参数,形式参数也要定义其数据类型形式参数的特点:定义函数时放在函数名后的括号中函数未被调用时不占内存空间函数被调用时系统为其分配内存空间函数调用结束后释放内存空间作用

7、域限定在函数内,属于局部变量函数声明(原型):例:intcheckprime(intn);要放在主函数之前,告诉系统有自定义的函数可以被调用。函数原型确保:编译器正确处理函数返回值编译器检查使用的参数数目是否正确编译器检查使用的参数类型是否正确函数调用:一个函数在调用子函数时,要将实在参数赋给形式参数。实在参数是一个具有确定值的表达式。例如:if(checkprime(a))实在参数的个数及类型应与形式参数一致,赋值时前后对应关系不能改变。调用时1717实在参数a形式参数nintcheckprime(intn){…………}如何设计(定义)函数?函数名称参数返

8、回值求整数的绝对值intabs(intx){……re

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。