Cpp-5结构及函数2012_第1页
Cpp-5结构及函数2012_第2页
Cpp-5结构及函数2012_第3页
Cpp-5结构及函数2012_第4页
Cpp-5结构及函数2012_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、第五讲第五讲 循环语句循环语句( (续续) )函数函数+语言语言主讲:马险峰主讲:马险峰 20122012年年1010月月1919日日2v循环结构 while 循环while(while(表达式表达式) )语句语句do-while 循环 do do 语句语句 while (while (表达式表达式); );i=1; sum=0;while(sum=50)sum=sum+2*i; +i;i=1; sum=0;do sum=sum+2*i; +i; while(sum=50)3v循环结构 for 循环for(for(表达式表达式1; 1;表达式表达式2; 2;表达式表达式3) 3)语句语句for

2、(i=1,sum=0; sum=50; i+)for(for(循环变量初值循环变量初值; ; 条件条件; ; 变量增值变量增值) )语句语句4vbreak 语句和continue语句 break;结束整个循环continuecontinue;结束本次循环5语法形式for (表达式1;表达式2;表达式3) 语句 循环前先求解循环前先求解非非0时执行循环体时执行循环体每次执行完循环体后求解每次执行完循环体后求解表达式表达式2 2表达式表达式1循环体循环体表达式表达式3 30非0思考和注意思考和注意表达式为空的情况表达式为空的情况6其它控制语句vgoto 语句 goto 标号; 标号:语句; -标号

3、:同标识符void main() int s,i; s=0;i=1; re: if(i=100) s+s+I;i+;goto re; cout“s=“sendl7其它控制语句vbreak 和 continue 语句 break语句的作用:switch语句 循环语句:终止本层循环 continue语句 不终止本层循环,绕过本次循环,进入下一次循环8应用举例v穷举法 也称枚举法, 即将可能出现的各种情况一一测试,判断是否满足条件 百元买百鸡问题. 假定小鸡每只5角,公鸡每只2元,母鸡每只3元.100元钱买100只鸡,列出所有可能的方案.9应用举例#include #include void mai

4、n( )int x,y,z;long k(0);cout x y zendl;for (x=0;x=33;x+)for(y=0;y=50;y+)k+;z=100-x-y;if(3*x+2*y+0.5*z)=100)coutsetw(9)xsetw(9)ysetw(9)zendl;cout 该方法执行了k 次=1e-5 );printf(“ the root is %f ” , x);13牛顿迭代法求根牛顿迭代法求根用牛顿迭代法求下面方程在用牛顿迭代法求下面方程在1.51.5附近的根。附近的根。0634223= =+ +xxx14牛顿迭代法求根牛顿迭代法求根思路思路1、根据方程得到一个函数 f(

5、x)2、求解公式)( )(1xfxfxxnn -= =+ +15牛顿迭代法求根牛顿迭代法求根示例示例0634223= =+ +xxx方程:6342)(23xxxxf+ += =386)( 2+ += =xxxf16牛顿迭代法求根牛顿迭代法求根程序程序#include “math.h”main( )float f1, f2 , x0 , x ;x=1.5 ;do x0=x; f1 = 2*x0*x0*x0 - 4*x0*x0 + 3*x0-6 ; f2= 6*x0*x0 - 8*x0 + 3; x = x0 - f1/f2; while ( fabs ( x-x0) =1e-5 );printf

6、(“ the root is %f ” , x );17x1x2(x1,f(x1) )(x2,f(x2) )xx0 x2=x0 f(x2)=f(x0)(x0,f(x0) )第一种情况第一种情况x1、x0作边界作边界18x1x2(x1,f(x1) )(x2,f(x2) )xx0 x1=x0 f(x1)=f(x0)(x0,f(x0) )第二种情况第二种情况x0、x2作边界作边界19第四章 函数与预处理概述函数的定义函数的返回值函数的调用函数参数及其传递方式函数的嵌套与递归调用变量的存储属性数组作为函数参数205.1 函数的定义、调用和说明v引例xyzS=sqrt(c*(c-x)*(c-y)*(c-

7、z)c=0.5*(x+y+z)计算结果输入参数名称留给参数的位置(传递)出口(结果)21函数的定义v类型标志符 函数名(形式参数表) 声明部分 语句22一般格式合法标识符函数返回值类型缺省int型无返回值void函数体函数类型 函数名(形参类型说明表)说明部分语句部分例 有参函数 int max(int x,int y) int z; z=xy?x:y; return(z); 例 有参函数 int max(int x, y) int z; z=xy?x:y; return(z); 例 空函数 dummy( ) 函数体为空例 无参函数 printstar( ) printf(“*n”); 或 p

8、rintstar(void ) printf(“*n”); 函数的定义23返回语句v形式: return(表达式); 或 return 表达式; 或 return;v功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数v说明:函数中可有多个return语句若无return语句,遇时,自动返回调用函数若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换-函数调用转换void型函数例 无返回值函数 void swap(int x,int y ) int temp; temp=x; x=y; y=temp; 函数的返回值24调用形式 函数名(实参表);说明:实参与

9、形参个数相等,类型一致,按顺序一一对应函数的调用25v函数语句: 例 printstar(); printf(“Hello,World!n”);v函数表达式: 例 m=max(a,b)*2;v函数参数: 例 printf(“%d”,max(a,b); m=max(a,max(b,c);函数的调用方式26v对被调用函数要求:库函数: #include 用户自定义函数: 函数类型说明v函数说明一般形式: 函数类型 函数名(形参类型 形参名,. ); 或 函数类型 函数名();作用:告诉编译系统函数类型、参数个数及类型,以便检验函数定义与函数说明不同函数说明位置:程序的数据说明部分(函数内或外)函数

10、说明调用在前, 定义在后的情况27形参与实参v形式参数:定义函数时函数名后面括号中的变量名v实际参数:调用函数时函数名后面括号中的表达式c=max(a,b);(main 函数)(max 函数)max(int x, int y) int z; z=xy?x:y; return(z); 例 比较两个数并输出大者main() int a,b,c; cinab; c=max(a,b); coutMax is “y?x:y; return(z);形参实参 函数参数及其传递方式28说明:实参必须有确定的值形参必须指定类型形参与实参类型一致,个数相同若形参与实参类型不一致,自动按形参类型转换函数调用转换形参

11、在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放形参与实参形式参数:定义函数时函数名后面括号中的变量名实际参数:调用函数时函数名后面括号中的表达式函数参数及其传递方式29v值传递方式方式:函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值特点:v形参与实参占用不同的内存单元v单向传递参数传递方式30711x:y:调用前:调用结束:711x:y:#include main() int x=7,y=11; coutx= “x“y= “y; coutswappedendl; swap(x,y); coutx= “x“y= “a

12、b; cout“a=“a“ b=”b; cout“swapped”endl; swap(&a,&b); cout”a=“a“ b=“b;例 交换两个数a59b调前:a59b调swap:p1&a&bp2a95b交换:p1&a&bp2a95b返回:例子图解33#include long sum(int a, int b); long factorial(int n);main() int n1,n2; long a; scanf(%d,%d,&n1,&n2); a=sum(n1,n2); printf(a=%1d,a); long s

13、um(int a,int b) long c1,c2; c1=factorial(a); c2=factorial(b); return(c1+c2); long factorial(int n) long rtn=1; int i; for(i=1;i1long fac(int n) if(n=1) return(1); return (n*fac(n-1);35函数参数缺省double s(double x, double eps=1e-6)void main() couts(2.0)endl; couts(3.0)endl; couts(1.0, 1e-5)endl;.36函数重载int

14、 power(int x)double power(double x)void main() float a=3.5; coutpower(5)endl; coutpower(.2)endl; coutpower(a)endl;.37函数重载int min(int a, int b)Int min(int a, int b, int c)int min(int a, int b, int c, int d)void main() ; min(13,5,4,9); min(-2,8,0);.重载函数之间参数必须有所不同;不能同时使用重载和默认38函数模板template 函数类型 函数名(类型参数列表) 函数体 template T power(T x) return x*x;void main() coutpower(5)power(1.2);.模板可由多个参数;形参必须有一个模板类型39二分法求根二分法求根#include “math.h”main( ) float fx0 , fx1, fx

温馨提示

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

评论

0/150

提交评论