循环结构的C程序设计ppt课件

上传人:资****亨 文档编号:145061143 上传时间:2020-09-16 格式:PPT 页数:76 大小:971.50KB
返回 下载 相关 举报
循环结构的C程序设计ppt课件_第1页
第1页 / 共76页
循环结构的C程序设计ppt课件_第2页
第2页 / 共76页
循环结构的C程序设计ppt课件_第3页
第3页 / 共76页
循环结构的C程序设计ppt课件_第4页
第4页 / 共76页
循环结构的C程序设计ppt课件_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《循环结构的C程序设计ppt课件》由会员分享,可在线阅读,更多相关《循环结构的C程序设计ppt课件(76页珍藏版)》请在金锄头文库上搜索。

1、.,第六章 循环结构的C程序设计,.,第一节 循环的基本概念 第二节 while语句 第三节 do-while语句 第四节 for语句 第五节 break、continue、goto语句 第六节 几种循环语句比较 第七节 循环的嵌套 第八节 程序举例,.,循环的必要性,int result1,result2,result3; int result4,result5; result1 = 1 * 10; printf(1 10 %d n,result1); result2 = 2 * 10; printf(2 10 %d n,result2); result3 = 3 * 10; printf(

2、3 10 %d n,result3); result4 = 4 * 10; printf(4 10 %d n,result4); result5 = 5 * 10; printf(5 10 %d n,result5);,1 10 10 2 10 20 3 10 30 4 10 40 5 10 50,输出结果,重复语句,6.1 概述,.,循环的必要性,1 10 = 10 2 10 = 20 3 10 = 30 4 10 = 40 5 10 = 50,0 + 1,1 + 1,2 + 1,上个数字 + 1,.,重复 (上个数字 +1) 10,.,C 语言中的各种循环,while,do- while,

3、for,需要多次重复执行一个或多个任务的问题考虑使用 循环来解决,.,C语言可实现循环的语句: 用goto 和 if 构成循环 while 语句 do while 语句 for 语句,循环型程序设计,.,6.2 while语句 一般形式:,while(表达式) 循环体语句;,执行流程:,计算表达式的值,当值为真(非0)时,执行循环体语句,一旦条件为假,就停止执行循环体。如果条件在开始时就为假,那么不执行循环体语句直接退出循环。,工作原理,说明:语句部分可以是简单语句也可以是复合语句。,.,循环体,例 用while循环求,#include main() int i,sum=0; i=1; whi

4、le(i=100) sum=sum+i; i+; printf(%d,sum); ,.,说明: 循环体有可能一次也不执行 循环体可为任意类型语句,一个以上的语句用括起来 下列情况,退出while循环 条件表达式不成立(为零) 循环体内遇break,goto 无限循环: while(1) 循环体;,.,例:分析程序的运行结果 #include main ( ) int i=1,sum=0; while ( i=100 ) printf(“i=%d,sum=%d”,i,sum += i); i+; printf(”Sum=%dn”,sum); 结果:程序将不停的打印“i=1,sum=.”。 无法正

5、常终止的程序,称为“死循环”。 结论:在while语句循环体中,一定要有能够对循环控制条件产生影响的语句。避免出现“死循环”现象。,.,例 显示110的平方,#include main() int i=1; while(i=10) printf(%d*%d=%dn,i,i,i*i); i+; ,运行结果: 1*1=1 2*2=4 3*3=9 4*4=16 5*5=25 6*6=36 7*7=49 8*8=64 9*9=81 10*10=100,.,6.3 dowhile语句 一般形式:,do 循环体语句; while(表达式);,执行流程:,它先执行循环体中的语句,然后再判断条件是否为真,如果

6、为真则继续循环;如果为假,则终止循环。,工作原理,.,特点:先执行循环体,后判断表达式 说明: 至少执行一次循环体 dowhile可转化成while结构,分别用dowhile和while求,main() int i,sum=0; i=1; do sum+=i; i+; while(i=10); printf(%d,sum); ,main() int i,sum=0; i=1; while(i=10) sum=sum+i; i+; printf(%d,sum); ,do-while,while,.,问题描述: 猜数游戏。要求猜一个介于110之间的数字,根据用户猜测的数与标准值进行对比,并给出提示

7、,以便下次猜测能接近标准值,直到猜中为止。,do-while 循环示例,main() int number=5,guess; printf (猜一个介于 1 与 10 之间的数n); do printf(请输入您猜测的数:); scanf(%d, ,猜一个介于 1 与 10 之间的数 请输入您猜测的数:3 太小 请输入您猜测的数:5 您猜中了! 答案为 5,输入数字 5 后,dowhile 循环中的条件为假, 输出结果消息后,程序终止。,.,比较 while 和 do-while循环,while(循环条件) 循环体; ,do 循环体; while( 循环条件);,do-while 循环是先执行

8、后判断,所以,即使开始条件为假,循环体也至少会被执行一次。,while循环是先判断后执行,所以,如果条件为假,则循环体一次也不会被执行。,比较 while 和 do-while 循环的工作原理,编程:辗转相除法求任意两个整数间的最大公约数,.,:输入一个正整数,要求以相反的顺序输出该数。例如:输入12345,则输出为54321。 基本思路:可以从个位开始,按位输出整数的每一位,Input an integer to number,Until number = 0,Output number%10 number = number /10,.,main( ) unsigned int number

9、; printf (Input the number:); scanf (%d, ,思考:使用while或for语句,如何实现?,两个程序有何区别?,前面的程序可以处理数字0,后面的程序不能处理,1234,5,.,6.4 for语句 一般形式:,for(expr1 ; expr2 ; expr3) 循环体语句;,执行流程:,.,for( 表达式1 ; 表达式2 ; 表达式3 ) 语句; ,for 循环的一般语法:,for 循环,counter = 0; num = 1; cnt = 100;,counter = 10; num 0,counter +; num = num + 1; cnt-,

10、分号用于分隔 for 循环的 三个表达式,1、计算表达式1的值,通常为循环变量赋初值; 2、计算表达式2的值,即判断循环条件是否为真,若值为真则执行循环体一次, 否则跳出循环; 3、计算表达式3的值,这里通常写更新循环变量的赋值表达式,然后转回第2步重复执行;,工作原理,1,2,3,4,.,表达式1,表达式2,表达式3,语句,表达式1,表达式2,Y,表达式2,for循环,Y,N,表达式3,.,.,for 循环示例,#include void main() int number,i,fac=1; printf(n 请输入任意一个正整数:); scanf(%d, ,请输入任意一个正整数:5,5,1

11、,1,2,120,6,循环执行五次,5的阶乘 = 120,.,for 循环的表达式,for 循环中有三个表达式 for 语句中的各个表达式都可以省略 分号分隔符不能省略,for( ; ; ) ; ,可省略,不能省略,.,省略表达式1,int num=0; for(;num = 10 ;num +) printf(%dn,num*2); ,int a=0,n; printf(n 输入n的值: ); scanf(%d,相当于省去了为循环变量赋初值,此时应在for语句之前给循环变量赋初值,.,省略表达式2,for(num=1;num+) . ,即不判断循环条件,也就是认为表达式2始终为真, 这时应在

12、循环体内设法结束循环,否则将成为死循环,.,省略表达式3,for(i=1;i=100;) sum=sum+1; i+; ,即省去修改循环变量的值,但此时应在循环体内设法结束循环,.,省略三个表达式,for( ; ; ) printf(这将一直进行下去); i = getchar(); if(i = X | i = x) break; ,即不为循环变量赋初值,不设置循环条件(认为表达式2为真值),不修改循环变量的值,无终止地执行循环体。此时应在循环体内设法结束循环,否则会成为死循环,.,说明: expr1也可以是给其它变量赋初值;expr1和expr3也可以是逗号表达式 例:for(sum=0,

13、i=1;i=100;i+,i+) for(sum=0,i=1;i=100;i=i+2) for语句可以转换成while结构,expr1; while(expr2) 循环体语句; expr3; ,.,例:#include main( ) int i=0; for(i=0;i10;i+) putchar(a+i); ,运行结果:abcdefghij,例:#include main( ) int i=0; for(;i10;i+) putchar(a+i); ,例:#include main( ) int i=0; for(;i10;) putchar(a+(i+); ,例:#include mai

14、n( ) int i=0; for( ;i10; putchar(a+i),i+) ; ,.,main() int i,j,k; for(i=0,j=100;i=j;i+,j-) k=i+j; printf(%d+%d=%dn,i,j,k); ,#include main() char c; for(;(c=getchar()!=n;) printf(%c ,c); ,0+100=100 1+99=100 2+98=100 50+50=100,:数列1、1、2、3、5、8、13、21、是著名的菲波那奇数列,其递推通项公式为: F1 F2 Fn Fn-1 Fn-2(n=3) 为求出第N项的值,请

15、编写程序。 根据递推通项公式,可用递推法编写程序,计算第N项的值。 递推法:由初始的已知条件开始,先计算出第(N1)步的结果,再利用前面已知的(N1)项结果,按照递推公式(或遵照递推规则),推出第N步结果。 递推法是程序设计中最常用的方法之一,使用递推法必须有明确的递推初始值和递推规则(递推公式)。,.,6.5 break、continue、goto语句 break语句 功能:在循环语句和switch语句中,终止并跳出循环体或switch 说明: break只能终止并跳出最近一层的结构 break不能用于循环语句和switch语句之外的任何其它语句之中,continue语句 功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断 仅用于循环语句中,.,break 语句,跳出 for 循环 for( ; ; ) printf(这将一直进行下去); i = getchar(); if(i = X | i = x) break; ,跳出 while 循环 while(1) if(x = 10) break; ,跳出 do-while 循环 do if (x = 10) break; while

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号