资源描述:
《5 循环结构程序设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第5章循环结构程序设计5.1问题的提出与程序示例循环结构的特点是:根据给定条件成立与否来决定是否反复执行某个程序段。C语言中可以用以下语句来实现循环:⑴用goto语句和if语句构成循环;⑵用while语句;⑶用do_while语句;⑷用for语句。5.2while语句格式:While(表达式)循环体功能:计算表达式的值,当表达式的值为非0(真)时,就反复执行循环体。若表达式的值为假(0),则结束循环。循环体中的语句超过一句时,要使用{}Ae真假流程图最常见的循环语句是通过计数控制循环体的执行次数。inti=0,sum=0;while(i
2、<=20){sum=sum+i;i++;}printf(“sum=%d”,sum);另一种是使用用户输入的一个特殊值来结束循环。charc;c=getchar();while(c!=‘$’){putchar(c);c=getchar();}putchar(‘’);注意循环次数的控制要正确。比如循环控制变量或特殊的条件。如果用循环变量控制,要注意循环变量的初值和控制条件,一定要在循环体中改变循环变量,使得循环能趋于结束,否则会出现死循环。(P99例5.4,例5.6)建议:即便循环体只有一个简单语句,也用花括号括起来。循环条件中一般是逻
3、辑表达式和关系表达式,也可以是算数表达式(非0为真,0为假)。一般地,表达式中应含有变量(循环控制变量)。while(3)和while(0)虽然从程序设计的角度上说是不合理的,但是合法的。(例5.7)如果程序出现死循环,编译连接时不会显示错误。运行时可以使用Ctrl+break结束死循环。例:输出100---999之间所有能被7整除的数,并统计共有几个这样的数.因为要对一批数据中的每一个数判断是否能被7整除,所以要用循环结构。假设使用x作为循环控制变量,则x初始值为100,当x>999时结束。在循环体内,需要判断x是否能被7整除,所以要
4、使用分支结构。如果能整除要输出x,并记录个数,假设用变量n记录能被7整除的数的个数,则n初始值为0main(){intx=100,n=0;while(x<=999){if(x%7==0){printf("%5d",x);n++;}x++;}printf(“n=%d",n);}main(){inti,sum;i=0,sum=0;while(i<=100){sum=sum+i;i=i+7;}printf("%d",sum);}把0—100所有7的倍数(或所有能被7整除的数)相加.赋初值循环条件循环控制变量发生变化循环体例:阅读以下程序m
5、ain(){inti=1;while(i<=10){printf("%d*%d=%d",i,i,i*i);i++;}}运行结果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100如果把i++和printf语句的次序交换,会出现什么结果?怎么样修改可以使程序结果仍然如右图所示?例:程序的执行结果是什么While循环是先判断表达式,后执行循环体循环体有可能一次也不执行main(){intx=10;while(x==0){x=x-1;}printf("%d",x);}5
6、.3do…while语句格式:do循环体while(表达式);功能:首先执行循环体,然后判断表达式的值,若非0(真),就反复执行循环体,直到表达式的值为0,结束循环.Ae真假流程图注意:do…while与while的区别是:do…while总是要先进行一遍循环,再进行表达式的判断,因此循环体中的语句至少要执行一次。所以有些程序不能使用do…while语句完成;有些能使用两种语句,但在循环控制上有所不同。比较例5.2和例5.9,例5.3和例5.10为了避免编译系统把do…while语句的while当作while语句的开始,do…while
7、循环体中的语句即使只有一句,也需要采用分程序结构,用{}括起来。例用do…while编程求s=1+2+3+…+100main(){ints=0,k=1;do{s=s+k;k++;}while(k<=100);printf("s=%d",s);}赋初值循环条件循环控制变量发生变化循环体5.4for语句格式:For(表达式1;表达式2;表达式3)循环体功能计算表达式1计算表达式2,判断表达式2是否为真,若为真,执行循环体中的语句,若为假,循环结束,跳到for语句下面的一个语句计算表达式3跳转到第②步执行初值循环条件循环控制变量的改变表达
8、式1表达式2真假流程图循环体语句表达式3注意for语句完全可以用while代替,但for直观、简单、方便for用while代替的流程表达式1;while(表达式2){语句;表达式3;}可以省略表达式1,但须