最新-C-课件9-PPT.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《最新-C-课件9-PPT.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 课件 PPT
- 资源描述:
-
1、第六章第六章 函数、递推与递归函数、递推与递归函数的概念、定义、调用和返回函数的概念、定义、调用和返回带自定义函数的程序设计带自定义函数的程序设计递推算法递推算法递归思想及算法实现递归思想及算法实现内内 容容 要要 点点 为什么需要函数?为什么需要函数?满足实际应用需求满足实际应用需求6.1 函数函数 函数是组成函数是组成 C/C+程序的基础程序的基础 C/C+库中已经为用户提供了许多标准库函数库中已经为用户提供了许多标准库函数 用户可以根据自己的需要选用合适的库函数用户可以根据自己的需要选用合适的库函数 如果没有所需函数,用户可自己定义和编写一些函数如果没有所需函数,用户可自己定义和编写一些
2、函数函数概述函数概述 函数是模块化的基本单位函数是模块化的基本单位 主调函数与被调函数主调函数与被调函数 程序、源文件与函数关系程序、源文件与函数关系 程序中各模块关系程序中各模块关系mainfun1fun2fun3fun4fun5file1.cppmain()fun1()fun2()file2.cppfun3()fun4()fun5()program函数体取代函数声明尾部的函数体取代函数声明尾部的分号分号 要使用要使用C+函数,必须函数,必须完成如下工作:完成如下工作:提供函数定义提供函数定义 提供函数声明(原型)提供函数声明(原型)调用函数调用函数函数定义:函数定义:有返回值的函数有返回值
3、的函数 没有返回值的函数(没有返回值的函数(void函数)函数)void functionName(parameterList)/没有返回值没有返回值 return;/可选可选typeName functionName(parameterList)/有返回值有返回值 return value;【任务任务6.1】素数判定素数判定思路:思路:设计一个函数设计一个函数 int checkprime(int a),负责检查负责检查 a 是否为素数:是否为素数:n 如果是素数,该函数返回如果是素数,该函数返回 1;n 否则,该函数返回否则,该函数返回 0。#include#include using n
4、amespace std;int main()int a=0;cout a;if(checkprime(a)/函数函数调用调用cout a 是素数是素数 endl;elsecout a 不是素数不是素数 endl;return 0;int checkprime(int n);/函数声明函数声明int checkprime(int n)/函数函数定义,定义,n为形式参数为形式参数 int k=0;for(k=2;k y)t=1;else t=-1;return t;函数定义示例:Compare函数;多条多条 return 语句语句int Compare(int x,int y)if(x=y)re
5、turn 0;else if(x y)return 1;else return-1;编写函数编写函数 Swap,互换两个整型数据,互换两个整型数据 x、y 的值的值void Swap(int x,int y)int t;t=x;x=y;y=t;return;/没有返回值只需直接写没有返回值只需直接写return语句语句函数定义示例:Swap 函数int IsDigit(char c)if(c=0&c=48&c=a&c=z)/az的的ASCII值为值为61H7AH /AZ的的ASCII值为值为41H5AH return c a+A;else return c;函数定义示例:TransformIn
6、toUpperCase 函数 编写函数编写函数 IsLeapYear,判断某个给定年份是否,判断某个给定年份是否为闰年为闰年int IsLeapYear(int year)return year%4=0&year%100!=0|year%400=0;函数定义示例:IsLeapYear 函数int mysqrt(int x)int i=1,sum=0,count=0;while(sum=x)sum+=i;count+;i+=2;return count-1;思考:思考:参数的有效性、合法性判断参数的有效性、合法性判断应应 放在函数里放在函数里?放在主程序里放在主程序里?int mysqrt(in
7、t x)int i=0;while(i*i=x)i+;return i-1;函数定义示例:我的平方根函数我的平方根函数int main()int times;char ch;coutch;while(ch!=q)couttimes;n_chars(ch,times);coutThe value of times is timesendl;coutch;cout0)coutc;coutn;double cube(double x);int main()double p,q;p=1.2;q=cube(p);coutp=pendl;cout实参实参p的地址是的地址是&pendl;coutq=qend
8、l;return 0;double cube(double x)coutx=xendl;cout形参形参x的地址是的地址是&xendl;return(x*x*x);例:例:例:互换两个整数例:互换两个整数输入:输入:10 20输出:输出:10 20 10 20 20 10 10 20 xymain()x1020ymain()main()x1020Swap()tempymain()x2010Swap()10tempyx1020ymain()函数调用栈框架函数调用栈框架:值传递与数据互换问题值传递与数据互换问题 值传递:值传递:值复制操作值复制操作 将将实际参数实际参数值复制给值复制给形式参数形式
9、参数 此过程单向不可逆此过程单向不可逆 复制完成后,复制完成后,形参形参与与实参实参没有任何关联没有任何关联 如何解决数据值互换问题?如何解决数据值互换问题?使用使用全局变量全局变量作为函数通信的手段作为函数通信的手段 使用指针传递变量的地址使用指针传递变量的地址int a,b;/*全局变量,保证所有函数都可以访问到全局变量,保证所有函数都可以访问到*/void Swap();/*不再需要函数参数不再需要函数参数 */输出:输出:10 20 10 20 20 1020 10【任务6.2】给歌手打分 定义int Max(int a,int b)函数,返回a,b中的大者 定义int Min(int
10、 a,int b)函数,返回a,b中的小者 定义整型变量p,用以保存 N个数中的最大值 定义整型变量q,用以保存 N个数中的最小值 定义一个整型变量 sum 做累加用 最终得分:(sum-p-q)/(N-2)#include#includeusing namespace std;int Max(int,int);int Min(int,int);int main()int p=0;int q=100;int sum=0,x=0;int i=1;for(i=1;i=10;i=i+1)cout“请第请第”i “位裁判给分位裁判给分”x;p=Max(x,p);q=Min(x,q);sum=sum+x
11、;cout“选手得分选手得分”b)return a;else return b;int Min(int c,int d)if (c d)return c;else return d;#include#includeusing namespace std;void print(int,int);/void print(int*,int);int main()const int n=5;int an;coutEnter matrix a:n;for(int i=0;iai;coutYou have entered the matrix a:n;print(a,n);return 0;void pr
12、int(int array,int size)/void print(int*array,int size)for(int k=0;k=size-1;k+)coutsetw(10)arraykendl;问题:一维数组作为参数问题:一维数组作为参数void bubble(int,int);int main()int a10;bubble(a,10);return 0;void bubble(int array,int size)for(int j=1;jsize;j+)for(int i=0;isize-j;i+)if(arrayiarrayi+1)int p=arrayi;arrayi=arr
展开阅读全文