四章语句与程序控制结构.ppt

上传人:本田雅阁 文档编号:3196546 上传时间:2019-07-29 格式:PPT 页数:104 大小:393.51KB
返回 下载 相关 举报
四章语句与程序控制结构.ppt_第1页
第1页 / 共104页
四章语句与程序控制结构.ppt_第2页
第2页 / 共104页
四章语句与程序控制结构.ppt_第3页
第3页 / 共104页
四章语句与程序控制结构.ppt_第4页
第4页 / 共104页
四章语句与程序控制结构.ppt_第5页
第5页 / 共104页
点击查看更多>>
资源描述

《四章语句与程序控制结构.ppt》由会员分享,可在线阅读,更多相关《四章语句与程序控制结构.ppt(104页珍藏版)》请在三一文库上搜索。

1、1,第四章 语句与程序控制结构,4.1 语句总述 4.2 顺序结构 4.3 选择结构 4.4 循环结构 4.5 程序举例,2,4.2 顺序结构程序举例 3,4,6 例1:输入三角形的三边长,求三角形的面积。 公式: #include ”math.h” main( ) float a, b, c, area, s; printf(”Enter a, b, c:”); scanf(”%f,%f,%f”, ,3,例2:将一个三位整数的各位数符分离出来,并转 换为数字字符倒序输出。 main( ) int num; char c1, c2, c3; printf(”Enter a data(10099

2、9):”); scanf(”%d”, ,4,例3:定期存款一年期利率2.3%,三年期年利率 3.2%,今有本金1万元,按一年期连续存三年和按三年期存入,各得多少利息? (按一年期再存时本息一并存) 设:d为本金,p为利率 一年期利息公式: 第一年本息:d+dp= d(1+p) 第一年本息:d(1+p)+ d(1+p)p= d(1+p)2 三年利息:d(1+p)3d 三年期利息公式:dp3,5,源程序: #include “math.h“ #define P1 2.3/100 #define P3 3.2/100 main( ) float x1, x3, d; scanf(“%f“, ,6,4

3、. 3.1 if 语句 (分支控制语句) 1. if 语句的 三种形式 单路分支:条件成立执行操作,不成立什么也不做; 双路分支:条件成立执行A操作,不成立执行B操作; 嵌套分支:条件成立执行A操作,不成立时还需要进 一步进行分支判断。,4.3 选择结构,7,第一种形式单路分支 if (表达式) 语句 内嵌语句;可是一条语句、复 合语句、空语句。描述了条件 成立时要执行的操作。 可是任何形式的表达式;通常是关系或 逻辑表达式。描述了分支控制条件。,8,执行流程: 首先求解表达式,并对其值进行逻辑判断;非 零视为真,执行内嵌语句,之后执行后续语句。 若分支条件不成立,则直接执行后续语句。 对应算

4、法:,P,T F 内嵌 语句,9,例:输入一个整数,为正则输出 main( ) int x; scanf(”%d”, ,10,第二种形式双路分支 if (表达式) 语句1 else 语句2 其中:内嵌语句1是条件成立时所执行的操作; 内嵌语句2是条件不成立时所执行的操作; 执行流程: 首先求解表达式,并对其值进行逻辑判断;为 真,执行内嵌语句1,之后执行后续语句。 若分支条件不成立,则执行内嵌语句2,之后 执行后续语句。,11,对应算法:,P,T F 内嵌 内嵌 语句1 语句2,可分行书写: if (表达式) 语句1 else 语句2,12,例:根据x求y值 y= main( ) float

5、x, y; scanf(”%f”, ,x x0 x2 + 1 x0,13,条件成立与不成立的输出格式、输出项完全一样,因而上例可化简如下: main( ) float x, y; scanf(”%f”, ,14,例:求任意三角形面积,若三边值不能构成三角形时输出表示错误的信息。 #include math.h” main( ) float a, b, c, s, area; printf(”Enter a, b, c:”); scanf(”%f,%f,%f”, ,15,第三种形式阶梯if (不成立时嵌套分支) if ( e1 ) s1 else if ( e2 ) s2 else if ( e

6、3 ) s3 else if ( em ) sm else sn 其中:ei各层的分支条件;si各层的内嵌语句; 执行流程:首先计算并判断e1的值,为真执行s1, 之后退出分支。e1为假则计算并判断e2的值,为真 执行s2, 之后退出分支。依次类推。,e1,e2,T F T F T F s1 s2 s3 s4,e3,16,例:对学生成绩分档; main( ) int g; printf(”Enter score:”); scanf(”%d”, ,80100分 A档 7079分 B档 6069分 C档 059分 D档,17,注意:分支条件的正确性 main( ) int g; printf(”E

7、nter score:”); scanf(”%d”, 57 65 89 D C C,18,上例:用单路分支实现 main( ) int g; printf(”Enter score:”); scanf(”%d”, 多个并列if语句,执行效率不如阶梯 if。,80100分 A档 7079分 B档 6069分 C档 059分 D档,19,2. if 的嵌套 在一个分支结构中,又完整地包含一个或多个分支结构,则构成了分支结构的嵌套。 例:分支条件不成立时需要进一步分支 算法表示: 算法实现: if (e1) s1 else if (e2) s2 else s3,e1,e2,T F T F s1 s2

8、 s3,20,例:分支条件成立与不成立,均要进一步分支 算法表示: 算法实现:,e1 e2 e3,T F T F T F s1 s2 s3 s4,if (e1) if (e2) s1 else s2 else if (e3) s3 else s4,21,例:分支条件不成立时需要若干层进一步的分支 算法表示: 算法实现:,e1,e2,e3,T F T F T F s1 s2 s3 s4,if (e1) s1 else if (e2) s2 else if (e3) s3 else s4,可见:阶梯if是条件不成立时的嵌套结构,22,例:编程,判定某年是否闰年 闰年条件:整百的年份能被400整除;

9、 或非整百的年份能被4整除。 算法表示:,输入year year%100= =0,year%400= =0,year%4= =0,T F T F leap=1 leap=0 leap=1 leap=0,leap= =1,T F,T F,输出“is” 输出“not”,23,程序清单: main( ) int year, leap; scanf(”%d”, ,24,例:根据 x求y值。,3x - 11 (0 x 10) y= 2x + 5 (10 x 20) x (20 x 30),x0&x30 T F,x10 T F,x20 T F,y=x,y= 3x-11,y= 2x+5,输 出 x 无 效,

10、输出 y,输入x,输出X无效,3x-11y,x0&x30,x10,x20,2x+5y,xy,输出y,F,F,F,T,T,T,25,程序清单: main( ) float x, y; printf(”Enter x:”); scanf(”%f”, ,26,方法2:,3x - 11 ( 0 x 10) y= 2x + 5 (10 x 20) x (20 x 30),x=30 T F,输 出 x 无 效,x10 T F,y= 3x-11,y= 2x+5,y=x,x20 T F,输出 y,输入 x,scanf(“%f“, ,27,if语句嵌套的注意事项: 1) 采用缩进格式,可清晰地表示出嵌套层次关系

11、; 2) C编译系统确定if和else的配对原则是: 从最内层else开始识别,将内层else与上面最近 的未曾配对的if配对; 例: 算法实现: if (e1) if (e1) if (e2) s1 if (e2) s1 else s2 else s2,e1 e2,T F T F s1 s2,28,if语句 示例,【例一】以下程序的作用是什么? main( ) char c; printf(“Input :”); scanf(“%c”, ,/*将小写字母转换为大写字母*/,29,if语句 示例,【例二】以下程序的执行结果是什么? main( ) int x=2,y=-1,z=2; if (x

12、y) if (y0) z=0; else z+=1; printf(“%dn”,z); ,/*结果是2*/,哦,原来是因为else 总是与靠近它的if配套,常见错误: if (x0) ; if (x=2) if (10”); y=x-1;,30,4.3.2 switch多分支选择 语句 (多路开关语句) 1. switch的一般形式 switch (表达式) case 常量1: s1 case 常量2: s2 case 常量n: sn default : sn+1 其中:表达式可是任何形式,但其值应为整型; 内嵌语句si可是一条语句、复合或空语句; 常量i可是整、字符、符号常量、常量表达式。,

13、31,2. switch的执行流程 首先求解表达式,然后测试其值与哪个case后 的常量相等,相等则从该case后的语句开始执行, 直到其后的所有内嵌语句执行完毕,退出多分支结 构。 若表达式的值不与任何常量相等,则执行default 后的语句,执行完毕退出分支。,32,switch执行流程图: switch (表达式) case c1: s1 case c2: s2 case cn: sn default : sn+1 ,求解表达式,c1?,c2?,cn?,sn+1,s1,sn,s2,Y,Y,Y,N,N,N,33,求解表达式,c1?,c2?,cn?,sn+1,s1,sn,s2,3. 使用说明

14、 1) 在switch中可以使用break语句跳出switch结构;,break,break,break,34,例:对成绩分档 main( ) char c1; int g; scanf(”%d”, ,80100分 A档 7079分 B档 6069分 C档 059分 D档,break; break; break; break; break;,35,2) case后的各常量不能相同,否则编译无法通过; 3) default为可选项,它提供了表达式的值与任何量 都不相同时的执行方案;若表达式的值与任何常量都不相同时什么也不需要做,则省略关键字 default; 4) 多个case可共用一组执行语句

15、; 例: switch( g/10 ) case 10: case 9: case 8: c1=A ; break; case 7: c1=B ; break; ,36,例:设计一个简单的菜单选择程序,根据选择可实 现a与b的四则运算。 #include “stdio.h” main( ) int a, b; char c1; clrscr( ); printf(”1. Addn”); printf(”2. Subtractn”); printf(”3. Multiplyn”); printf(”4. Dividen”); printf(”Enter your choice:”); c1=ge

16、tchar( ); ,37,c1=getchar( ); if (c1=1 /*main*/,YS,38,switch语句 示例,main() char s; scanf(“%c”, ,输入“c”,求输出结果。,结果: 6069 60 错误输入,?!,39,switch语句 示例,解决方法break语句: main() char s; scanf(“%c”, ,这才差不多!,break!,运行结果: 6069,40,switch语句 示例,解决方法break语句: main() char s; scanf(“%c”, ,讨论 switch(s)语句中的s实际上并非真正的条件选择,而只是一种跳转

17、指示(与if语句不同),表示下面应该跳转到什么位置继续执行。而各case实际上只是一个跳转处的标记。当程序跳转到某个case处时,并非只执行此case行的程序组,而是从此处开始一直向下执行各条语句,直到整个switch开关体结束(“”)。 如果要使每个case处相当于一种if(s)else的效果,必须在其语句组最后加上break语句。,41,switch语句 示例,main() int x=1,y=0,a=0,b=0; switch(x) case 1 : switch(y) case 0 : a+;break; case 1 : b+;break; case 2 : a+;b+;break;

18、 case 3 : a+;b+; printf(“a=%d,b=%dn”,a,b); ,说明 1、每个case常量表达式的值必须互不相同,否则会出现互相矛盾的结果。 2、允许多个case共用一个执行语句。,求程序运行结果。,结果:a=2,b=1。,如果x=2?,结果:a=1,b=1,如果x=3?,结果:a=1,b=1,42,4.3.3 程序举例 例:从键盘输入四个整数,输出其中的最大数。 main( ) int a, b, c, d, max; printf(”Enter a, b, c, d:”); scanf(”%d,%d,%d,%d”, ,43,例:找出三个整数中的最大、最小数。 mai

19、n( ) int a, b, c, max, min; printf(”Enter a, b, c:”); scanf(”%d,%d,%d”, ,44,例:输入三个整数,由大到小输出。 main( ) int a, b, c; scanf(“%d,%d,%d”, ,输入abc,ab?,ab,bc?,ac?,ac,bc,N,N,N,Y,Y,Y,45,例:输入一个不多于5位的正整数 要求:1. 输出它是几位; 2. 输出该数; 3. 逆序、空格分隔输出各位数字; 如输入:123,输出:3 2 1,输入a 求a的位数 分离a的各位数字 输出a、位数、逆序数字,46,main( ) long a; i

20、nt w, p5,p4,p3,p2,p1; /*p5高位*/ printf(”Enter a(1-99999):”); scanf(”%ld”, ,47,p2=(a-p5*10000L-p4*1000-p3*100)/10; p1=a-p5*10000L-p4*1000-p3*100-p2*10; printf(“t%ld,%dntt”, a, w); switch( w ) case 5: printf(”%dbbb”, p5); /*无须break*/ case 4: printf(”%dbbb”, p4); case 3: printf(”%dbbb”, p3); case 2: pri

21、ntf(”%dbbb”, p2); case 1: printf(”%dbbb”, p1); printf(“n”); ,YS,48,另一种输出方法: switch( w ) case 5: printf(”%d %d %d %d %d”, p1, p2, p3, p4, p5); break; case 4: printf(”%d %d %d %d”, p1, p2, p3, p4); break; case 3: printf(”%d %d %d”, p1, p2, p3); break; case 2: printf(”%d %d”, p1, p2); break; case 1: pr

22、intf(”%d”, p1); ,49,例:输入四个整数,升序排序并输出。,输入a、b、c、d T ab F ab T cd F cd T ac F ac ,T bc F bc T bd F bd T cd F cd 输出a、b、c、d,ba,dc,cb,db B次小,dc,50,4.4.1 while语句 一般形式:while (表达式) 语句 其中: 表达式表示了循环条件;形式:任何表达式。 内嵌语句为循环体;形式:单条、复合、空语句。 执行流程: 首先求解表达式并对其值进行逻辑判断,为真 执行内嵌语句;之后再次求解表达式并判断,为真 再次执行内嵌语句;当表达式值为假时,退出while 循

23、环,执行后续语句。,51,循环类型:当型,先判断后执行,循环体有可能一 次也不被执行。 例:求 main( ) int i=1, sum=0; while(i=100) sum+=i; i+ ; printf(”%d”, sum); ,52,使用说明: 1) 在while的循环体中一定要有使循环趋于结束的 语句;否则将形成死循环; 2) 注意循环操作的范围、花括号、分号的使用; 3) 注意与循环有关的变量赋初值的位置及初值的 正确性; 如:i=0; sum=1; 是错误的。,53,例:输入一个班某门课的成绩,统计80分的人数, 并计算出平均成绩,保留小数两位。 main( ) int i, c

24、ount, score, num, sum; i=1, count=sum=0; printf(”Enter number:”); scanf(”%d”, ,54,4.4.2 do - while语句 一般形式: do 语句 while (表达式) ; 其中: 表达式表示了循环条件;形式:任何表达式。 内嵌语句为循环体;形式:单条、复合、空语句。 执行流程: 首先执行内嵌语句,之后求解表达式并对其值 进逻辑判断,为真再次执行内嵌语句,如此反复, 直到表达式的值为假退出 do - while循环。,55,循环类型:直到型,先执行后判断,循环体至少执 行一次。 例:求5! main( ) int

25、i, fact; i=1, fact=1; do fact=fact*i; i+ ; while(i=5); printf(”%dn”, fact); (单步执行;监视:i、fact),YS,56,例:从键盘输入字符直到输入字符#为止,并统计 输入字母的个数。 特点:循环次数事先无法确定 #include ”stdio.h” main( ) char ch; int count=0; do ch=getchar( ); if(ch=A ,57,例:输入一个最多5位的无符号正整数,以十、二、 八、十六进制形式输出。 main( ) unsigned num, n, t; printf(”nPle

26、ase input a data(1-65535):”); scanf(”%u”, ,58,#include “math.h“ main( ) unsigned num, n, t; int i; printf(“nPlease input a data(1-65535):“); scanf(“%u“, ,59,4.4.3 for语句 一般形式:for (表达式1; 表达式2; 表达式3) 语句 其中: 内嵌语句为循环体;形式:单条、复合、空语句; 各表达式可是任何形式的表达式; 通常:表达式1用于对循环控制变量赋初值; 表达式2给出循环控制条件; 表达式3使循环控制变量增值。 循环类型:当型

27、,60,for语句执行流程:,求解e1,求解e3,内嵌语句,求解测试 e2,F T,整个循环过程中e1只求解一次;,内嵌语句和e3是重复执行的内容;,e2相当于是for的循环条件;,61,例:求 main( ) int i, sum; for (sum=0, i=1; i=100; i+) sum=sum+i; printf(”1+2+3+100=%dn”, sum); 1+2+3+100=5050,62,使用说明: 1) for语句三个表达式的作用可理解为: for(循环变量赋初值;循环条件;循环变量增量) 语句 2) e1、e1、e3均为可选项,它们可分别地或同时 被省略。 省略e1: f

28、or ( ; i=100; i+) sum=sum+i; 在执行流程中跳过求解e1这一步,直接求解并 判断e2;但相关变量赋初值要在for 语句之前单独 实现。,63,省略e2: 将不再进行循环条件测试,认为e2永为真; 此时循环体中应有可结束循环的处理,否则死循环。 for ( i=1; ; i+) if (i100) break; /*控制退出循环*/ sum=sum+i; 省略e3: 在流程中将跳过e3的求解,此时循环变量的控制可在循环体中实现。 for (sum=0, i=1 ; i=100; ) sum=sum+i; i+; ,64,省略e1和 e3: 将跳过e1、e3的求解。 su

29、m=0; i=1; sum=0; i=1; for ( ; i=100 ; ) 等价 while(i=100) sum=sum+i; sum=sum+i; i+; i+; 省略e1、e2、e3: 将搭建一个for循环的框架,在这 个框架中便可使用break语句,达到跳过某段内容的 目的。 for ( ; ; ) if (e) break; /*单独的if不能用break*/ ,65,例:for(i=10; i; i-) printf(“%d,”, i); 10,9,8,7,6,5,4,3,2,1, 例:for(i=0; i=10; i=i+2) printf(“%3d”, i); printf

30、(“ni=%d”, i); 0 2 4 6 8 10 i=12,66,例:for(i=1, j=6; ij; i+, j-) printf(“%d*%d=%dn”, i, j, i*j); 1*6=6 2*5=10 3*4=12 例:空循环构成一个延时器 long t; for(t=0; t=83000000; +t) ;,67,例:计算15的阶乘 main( ) int i, fact; for(fact=1, i=1; i=5; i+) fact=fact*i; printf(“t%d!=%dn“, i, fact); 1!=1 (每次循环都进行输出)) 2!=2 3!=6 4!=24 5

31、!=120,68,例: 计算某班32位学生某门课的平均成绩,并输出 最高分、最低分。 main( ) int i, score, max=0, min=100; float sum=0; for(i=1;imax) max=score; if(scoremin) min=score; printf(“average=%-8.2fn“, sum/32); printf(“max=%d,min=%dn“, max, min); ,69,循环的嵌套 一个循环体内又包含一个完整的循环结构,称 为循环的嵌套;嵌套的层次可是双重的或多重的。 C四种形式的循环可以互相嵌套,但绝不能出现 交叉现象。 正确的循

32、环嵌套形式:,外循环 ,内循环 ,外循环,内循环1,内循环2,三重循环,70,错误的循环交叉形式:,例:do-while嵌套 例:do-while、for混合嵌套 do do do for(e1;e2;e3) while(e1); while(e); while(e);,71,例:for循环嵌套 for(e1; e2; e3) for(b1; b2; b3) ,求解e1,部分语句1,部分语句2,e2?,b2?,求解b1,内循环体,求解b3,求解e3,F T,F T,72,例:求110之间任意5个整数的阶乘值 main( ) int i, j, n; long fact; for(i=1; i=

33、5; i+) scanf(“%d,“, (单步跟踪;监视i、j、n、fact),73,例:在90秒范围内模拟倒计时数字秒表 秒的范围控制 i: 90 延时1秒(假定)的循环控制j: 0 82000000 main( ) int i; long j; clrscr( ); gotoxy(40,12); /*定位到屏幕中心*/ for(i=9; i=0; i-) for(j=0; j=82000000; j+); /*延时1秒*/ printf(“a%db“, i ); ,74,例:按下列形式打印乘法九九表 i: 1 1*1=1 2 2*1=2 2*2=4 3 3*1=3 3*2=6 3*3=9

34、4 4*1=4 4*2=8 4*3=12 4*4=16 9 9*1=9 9*2=18 9*3=27 9*9=81 j 1 2 3 9 被乘数i取值19;i每取一值,乘数j取值1i,75,main( ) int i, j, k; for(i=1; i=9; i+) for(j=1; j=i; j+) k=i*j; printf(“%d*%d=%-4d“, i, j, k); printf(“n”); /*加getch();每行暂停*/ getch( ); ,76,4.4.4 break语句和continue语句 循环的附加控制,将打破常规的循环机制。 1. break语句 一般形式: break

35、; 功能:用于跳出由while、do-while、for构成的循 环结构,或跳出switch构成的多路分支结构。 用法:通常作为循环结构中if语句的内嵌语句。,77,使用说明: 1) 内循环中的break仅跳出内循环结构;,if(e) break;,if(e) goto l1;,l1:语句,2) 被循环语句嵌套的switch中出现的break,仅跳 出switch;,switch(e) break; ,78,例:计算半径为1到10的各圆面积,直到面积大于 100为止。 半径的范围控制 r: 110 附加控制area100 main( ) int r; float area; for(r=1;

36、r100) break; printf(“r=%d,area=%-7.2fn”, r, area); (单步跟踪;监视r、area),79,例: 求int型量的最大累加和 (1+2+3+.+? =sum, sum最大且32767) main( ) int i, sum=0; /*循环次数不明确*/ for(i=1, sum=0; ; i+) /* 省略了e2*/ if(long)sum+i32767) break; sum=sum+i; printf(“i=%d, sum=%dn“, i, sum); i=256, sum=32640,80,例:输入两个正整数m和n,求其最大公约数和最小 公倍

37、数。 算法1: (穷举法) 找出m、n中的较小者 t; 最大公约数肯定在t、t-1、t-2、1之间; 2) 测试m%i和n%i是否同时为0 ; 除数i依次取 t、t-1、t-2 1 ; 测试条件成立时的 i值即为最大公约数; 3) 最小公倍数:mn/最大公约数;,81,main( ) int m, n, t, i; printf(“Enter m,n:”); scanf(“%d,%d”, 18,12 17,3 GCD=6,SCM=36 GCD=1,SCM=51,82,算法2: (辗转相除法) main( ) int a, b, m, n, r, t; printf(“Enter a, b:”)

38、; scanf(“%d,%d”, ,输入a、b a m, b n T F mn 求m%n r r!=0? n m r n m%n r 输出n、a*b/n,mn?,83,2. continue语句 一般形式: continue; 功能:用于由while、do-while、for构成的循环中, 跳过本次循环后面尚未执行的语句,提前结 束本次循环,并继续循环流程的下一步。 例:for中用 continue 例:while中用continue for(e1; e2; e3 ) while( e1 ) if (e) continue; if(e) continue; ,84,例:把100200之间不能被

39、3整除的数输出;并控制 一行输出10个数据。 main( ) int n, c=0; printf(“n”); for(n=100; n=200; n+) if(n%3=0) continue; printf(“%d”, n); c+; printf(“%s”, c%10=0? ”n” : ” ); ,85,几种循环的比较 1. 循环的控制类型 1) 计数器控制 2) 标记控制 例:求一个班某门课的平均成绩。 计数器控制循环: scanf(“%d”, ,86,标记控制循环: printf(“Enter grade, -1 to end:”); scanf(“%d”, ,87,2. 循环语句的选

40、用 1) 循环次数已知且循环操作规律,选用 for方便; 2) 循环次数未知且循环操作没有按一定规律变化 的量,可采用while或do-while语句。,88,例:输入5个最多8位的正整数,将各数按位颠倒 输出。 main( ) int i; long n, d; for(i=1; i=5; i+) /*循环次数确定*/ printf(“Enter a data(1-99999999):”); scanf(“%ld”, ,89,例:键盘输入一个偶数,非偶数则要求重输。 main( ) int n; do printf(“Enter n:”); /*循环次数不定*/ scanf(“%d”, ,9

41、0,4.5 程序举例 例:用 公式求的近似值, 直到最后一项的绝对值小于10-4为止。 考虑问题: 1) 需循环累加,但累加项数不确定; 2) 有规律的量 分母n的取值:1、3、5、7 奇偶项符号s的变化:+、-、+、- 3) 循环条件:fabs(t)=10-4循环,t为某项值。,91,#include “math.h“ main( ) int s; float n, t, pi; n=1.0; s=1; t=1./n; pi=0; while(fabs(t)=1e-4) /*判断某项*/ pi=pi+t; /*累加和*/ n=n+2.0; /*改变分母*/ s=-s; /*符号变反*/ t=

42、s/n; /*计算下一项*/ printf(“PI=%10.6fn“, pi*4); getch( ); ,92,例:求Fibonacci数列的前40个数,并按一行4个数 排列输出。 1,1,2,3,5,8,13,21 考虑问题: 1) 属递推问题:从前一项或几项推出下一项结果; 2) 定义几个变量? 一个:无法实现 ; 多个:各求其值,开销大; 三个:f3=f1+f2; f1=f2; f2=f3; 两个:f1=f2=1; f1=f1+f2; f2=f2+f1; 由前两项相加求得下一项后第一项可覆盖,即 变量的值是不断更迭的(迭代法)。,93,main( ) long f1, f2, i; f1=f2=1; for(i=1; i=20; i+) printf(“%12ld%12ld“, f1, f2); if(i%2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1