《C语言第讲-C语言编程三结构》课件.pptVIP

  • 8
  • 0
  • 约2.12万字
  • 约 121页
  • 2018-11-12 发布于广西
  • 举报

《C语言第讲-C语言编程三结构》课件.ppt

C 语句可以分为5类: 1、控制语句----9种 2、函数调用语句 3、表达式语句 4、空语句---什么也不做 5、复合语句----用{}括起来 复合语句:用 {…}括起来的一组语句 一般形式:{ 执行语句部分; } 说明: “}”后不加分号 语法上和单一语句相同 复合语句可嵌套 if ( )~else~ 条件语句 for( )~ 循环语句 do ~ while ( )~ 循环语句 while ( )~ 循环语句 continue 结束本次循环 break 中止执行switch或循环语句 switch 多分支选择语句 goto 转向语句 return 从函数返回语句 表示算法的三种基本结构 1966年,Bohra和Jacopini提出了程序中需要的三种控制结构 顺序结构 选择结构 循环结构 [例]百鸡问题。公鸡每只5元,母鸡每只3元,小鸡每3只1元,用100元买100只鸡,问公鸡、母鸡、小鸡各多少? 分析: 设 : 公鸡x只 、母鸡y只 、小鸡z只 根据条件列出方程: 牛顿迭代公式 由牛顿迭代公式可以不断地求出x1,x2….,xn。实际设计时,只需用两个变量x1和x通过循环不断求出新的数据即x2,x3,x4….,xn 一、递推法 利用前项和后项的相互关系求新项的过程称为“递推”。 分析: 初始条件: F1=1 n=1 F2=1 n=2 递推条件: Fn=Fn-1+Fn-2 n≥3 [例] 求Fibonacci数列, 0,1,1,2,3,5,8,13……的前40个数。 f1=1,f2=1 for k=1,to 20 输出f1,f2 f1=f1+f2 f2=f2+f1 流程图: 利用前项和后项的相互关系求新项的过程称为“递推”。 main( ) {long int f1,f2; int k; f1=1;f2=1; for(k=1;k=20;k++) {printf(%12ld %12ld ,f1,f2); if(k%2==0)printf(\n); ① f1=f1+f2; ② f2=f2+f1; ③ } } 程序: 问题: 2)①语句中,if(k%2==0)printf(\n);起什么作用? 1) f1,f2为什么采用长整型变量? 3)②③语句能否调换? 4)②语句等号右边的f1值与③语句等号右边的f1值是 否相同? 也可以用三个变量: main( ) { long int p,j,k; int i; j=1;k=1; printf(%12d %12d,j,k); for(i=1;i=38;i++) { p=j+k; printf(%12ld,p); j=k;k=p; } } 级数展开式计算 [例]:级数ex的前m+1项之和的展开式为: ex= 采用递推法:从前一项推出后一项结果 第k项tk= 可由前一项求得,即: tk=tk-1× ex= 因此,可采用如下算法: 令 t0=1, 则:t1= t0*(x/1),t2=t1*(x/2),t3= t2*…, tk=tk-1*(x/k) ex= 输入x,m 1?t,0?s for k=1,to m s+t?s t*x/k?t 输出s main() { int k,m; float x,s,t; printf(input m x); scanf(%d%f,m,x); s=0; t=1; for(k=1;k=m;k++) { s+=t; (1) t=t*x/k; (2) } printf(e**%.2f=%f\n,x,s); } ex= 问题: for循环体中(1)和(2)语句顺序能否调换?调换后会产生什么样的结果? 利用前项和后项的相互关系求新项的过程称为“递推” 二、穷举法 将所有可能的方案都一一测试,找出其中符合要求的。 用途: 求数学上的整数方程、不定方程、或其它

文档评论(0)

1亿VIP精品文档

相关文档