C语言-5循环结构_第1页
C语言-5循环结构_第2页
C语言-5循环结构_第3页
C语言-5循环结构_第4页
C语言-5循环结构_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

C语言--5循环结构第一页,共49页。复习:C语句的类型课程回顾——C语句5类控制语句函数调用语句表达式语句空语句复合语句2C语言程序设计——算法的描述 SCS-SWPU第二页,共49页。(一)控制语句:完成一定的控制功能

1、

if()~else条件语句switch()开关语句

2、

for()~循环语句

while()~循环语句

do~while();循环语句

3、break间断语句continue继续语句4、return返回语句课程回顾——C语句3C语言程序设计——算法的描述 SCS-SWPU第三页,共49页。课程引入例:1+2+3该如何实现定义变量sum=0sum+=1sum+=2sum+=3输出sumi<=100结束Ysum+=ii++N定义变量sum=0,i=1又例:4C语言程序设计——算法的描述 SCS-SWPU第四页,共49页。第五章循环结构程序设计while语句5.1do-while语句5.25.3for语句break语句和continue语句5.45.5程序举例5C语言程序设计——第一章C语言概述 SCS-SWPU第五页,共49页。5.1while语句1.while循环语句的形式

while(表达式)循环语句先判断条件,后执行语句表达式语句零非零2.执行过程:跳出循环此处无;6C语言程序设计——算法的描述 SCS-SWPU第六页,共49页。例1:求i=1,sum=0i<=100?sum=sum+ii=i+1零非零main(){inti=1,sum=0;

while(i<=100){sum=sum+i;i++;}printf("%d",sum);}注意:(1)循环体如果包含一个以上的语句,应该用花括弧括起来,以复合语句形式出现.(2)在循环体中应有使循环趋向于结束的语句。累加和变量需置初值0累乘积变量需置初值15.1while语句7C语言程序设计——算法的描述 SCS-SWPU第七页,共49页。1.do-while循环语句的形式

do

循环体

while(条件表达式);

先执行语句,后判断条件

2.执行过程此处有;表达式语句零非零跳出循环5.2do-while语句8C语言程序设计——算法的描述 SCS-SWPU第八页,共49页。表达式=0?语句零非零i<=100?sum=sum+ii=i+1i=1例2:用do-while型循环求:main(){inti=1,sum=0;do{sum=sum+i;i++;}while(i<=100);printf("%d",sum);}5.2do-while语句9C语言程序设计——算法的描述 SCS-SWPU第九页,共49页。【例5.3】while和do-while循环的比较。#include"stdio.h"intmain(){

intsum=0,i;scanf("%d",&i);

while(i<=10){sum=sum+i;i++;}printf("sum=%d\n",sum);}

?#include"stdio.h"intmain(){intsum=0,i;scanf("%d",&i);

do

{sum=sum+i;i++;}while(i<=10);printf("sum=%d\n",sum);}

运行结果:1↙sum=55

再运行一次:11↙sum=0运行结果:1↙sum=55

再运行一次:11↙sum=11结论:(1)do—while循环语句首先执行循环体,然后计算表达式并检查循环条件,所以循环体至少执行一次。(2)退出do—while循环的条件与退出while循环的条件相同5.2do-while语句10C语言程序设计——算法的描述 SCS-SWPU第十页,共49页。一般格式:执行流程:表达式2循环体假(0)真(非0)for表达式1表达式3for(表达式1;表达式2;表达式3){

循环体语句

}

C语言中的for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句。5.3for语句11C语言程序设计——算法的描述 SCS-SWPU第十一页,共49页。表达式2?执行语句YN执行for循环之后的语句执行表达式3执行表达式1循环初始条件循环控制条件循环体5.3for语句循环变量增值/减值for语句等价于下列语句:表达式1;while(表达式2){语句;表达式3;}

12C语言程序设计——算法的描述 SCS-SWPU第十二页,共49页。例用for循环求

#include<stdio.h>main(){inti,sum=0;

for(i=1;i<=100;i++)sum+=i;printf("%d",sum);}相当于:i=1,sum=0;while(i<=100){sum=sum+i;i++;}

for语句最简单的形式:for(循环变量赋初值;循环条件;循环变量增值)

循环体5.3for语句13C语言程序设计——算法的描述 SCS-SWPU第十三页,共49页。5.3for语句——总结用上述三种循环语句求

while语句:n=1;s=0;while(n<=100){s=s*n;n++;}

n=1;s=0;do{s=s*n;n++;}while(n<=100);

do-while语句:for(n=1,s=0;n<=100;n++)s=s*n;

for语句:14C语言程序设计——算法的描述 SCS-SWPU第十四页,共49页。5.3for语句——使用格式说明for(循环变量赋初值;循环条件;循环变量增值)

{循环体语句}说明:for语句中任意一个表达式均可省,但分号“;”不可省(1)省略“表达式1”:此时在for语句之前给循环变量赋初值。如

for(;i<=100;i++)sum=sum+i;

执行时,跳过“求解表达式1”这一步,其他不变。i=1;for(;i<=100;i++)

sum=sum+i;15C语言程序设计——算法的描述 SCS-SWPU第十五页,共49页。5.3for语句——使用格式说明for(循环变量赋初值;循环条件;循环变量增值)

{循环体语句}说明:(2)省略表达式2:即不判断循环条件,认为表达式2始终为真。

例如:for(i=1;;i++)sum=sum+i;

它相当于:

i=1;while(1){sum=sum+1;i++;}16C语言程序设计——算法的描述 SCS-SWPU第十六页,共49页。5.3for语句——使用格式说明for(循环变量赋初值;循环条件;循环变量增值)

{循环体语句}说明:(3)省略表达式3:此时程序设计者应另外设法保证循环能正常结束。如:

for(i=1;i<=100;){sum=sum+i; i++;}

17C语言程序设计——算法的描述 SCS-SWPU第十七页,共49页。for语句的使用格式灵活:表达式类型任意,可省略,但分号“;”不可省当表达式2被省略时,需要在循环体中设置循环结束语句,否则构成死循环无限循环:for(;;)括号后边的表达式可以是任意有效的C语言表达式for(i=1;;i++){if(i>100)break;sum+=i;}5.3for语句——总结for(i=1;;i++)

sum+=i;for(i=1;1;i++)

sum+=i;18C语言程序设计——算法的描述 SCS-SWPU第十八页,共49页。例1:#include<stdio.h>main(){inti;

for(i=0;i<10;i++)putchar(‘a’+i);}运行结果:abcdefghij例2:#include<stdio.h>main(){inti=0;

for(;i<10;i++)

putchar(‘a’+i);}例3:#include<stdio.h>main(){inti=0;

for(;i<10;)putchar(‘a’+(i++));}例4:#include<stdio.h>main(){inti=0;

for(;i<10;putchar(‘a’+i),i++);}省略表达式1省略表达式1、3省略循环体结论:for语句的功能强大!5.3for语句——总结19C语言程序设计——算法的描述 SCS-SWPU第十九页,共49页。例5main(){inti,j,k;for(i=0,j=100;i<=j;i++,j--){k=i+j;printf("%d+%d=%d\n",i,j,k);}}例6#include<stdio.h>main(){charc;for(;(c=getchar())!='\n';)printf("%c",c);}表达式1、3为逗号表达式结论:表达式2:进行逻辑判断,只要为真就执行循环!

如:for(i=0;i==5;i++)sum+=i;for(i=0;i=5;i++)sum+=i;表达式1,3:可以是C语言任意合法表达式5.3for语句——总结20C语言程序设计——算法的描述 SCS-SWPU第二十页,共49页。1、计算1+1/2+1/4+…+1/1000的值并输出程序练习i<=1000sum+=1./i假(0)真(非0)

开始sum=0,i=1i+=221C语言程序设计——算法的描述 SCS-SWPU第二十一页,共49页。2、从键盘输入100个字符,分别统计其中字母、数字字符和其他字符的个数i<=100ch=getchar()假(0)真(非0)

开始letter=0,digital=0,other=0i++程序练习22C语言程序设计——算法的描述 SCS-SWPU第二十二页,共49页。例题:

找出100~999之间的所有“水仙花”数,所谓“水仙花”数是指一个三位数,其各位数字的立方和等于该数本身,例如:153=13+33+53,所以,153是“水仙花”数。分析:设100<=n<=999,i、j、k分别代表数n百位、十位、个位上的数字,则:

i=n/100j=n/10%10k=n%10如果i3+j3+k3==n,则n即是所求。课堂复习23C语言程序设计——算法的描述 SCS-SWPU第二十三页,共49页。循环的嵌套

-在循环体内又包含一个循环结构,称为循环嵌套。

for(;;){……do{……}while();……while(){……}…...}内循环外循环内循环循环嵌套的执行流程三种循环(while循环、do-while循环和for循环)可以互相嵌套。5.3循环嵌套24C语言程序设计——算法的描述 SCS-SWPU第二十四页,共49页。下面几种都是合法的形式:(1)while()(2)do(3)for(;;){…{…{while()dofor(;;){…}{…}{…}}while();}}while();5.3循环嵌套25C语言程序设计——算法的描述 SCS-SWPU第二十五页,共49页。下面几种都是合法的形式:(4)

while()(5)for(;;)(6)do{…{…{…do{…}while();for(;;){}while();{}…{…}…}}}while();

5.3循环嵌套26C语言程序设计——算法的描述 SCS-SWPU第二十六页,共49页。多行多列数据输出——循环嵌套外循环:控制行内循环:控制列ij例题1:打印九九乘法表5.3循环嵌套27C语言程序设计——算法的描述 SCS-SWPU第二十七页,共49页。外循环内循环i<=9printf假(0)真(非0)i=1j++j=1j<=9真(非0)假(0)i++‘\n’5.3循环嵌套28C语言程序设计——算法的描述 SCS-SWPU第二十八页,共49页。?5.3循环嵌套29C语言程序设计——算法的描述 SCS-SWPU第二十九页,共49页。例题2:把一张一元钞票换成1分,2分和5分的硬币,每种至少一枚,问有多少种换法?分析:设i,j,k分别表示1分、2分、5分硬币的枚数,则:i*1+j*2+k*5=100,且k∈[1,19],j∈[1,47]5.3循环嵌套30C语言程序设计——算法的描述 SCS-SWPU第三十页,共49页。百钱买百鸡鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一用百钱买百鸡,问翁、母、雏各几何?分析:设cock、hen、chicken表示三者数量,其中,cock的取值范围(0,20),hen的取值范围为(0,33),则chicken=100-cock-hen,且5*cock+3*hen+chicken/3=100定义变量用cock和hen的双重循环确定chicken的值如果满足5*cock+3*hen+chicken/3=100则符合题目要求知道全部状态测试完课堂练习31C语言程序设计——算法的描述 SCS-SWPU第三十一页,共49页。第五章循环结构程序设计while语句5.1do-while语句4.24.3for语句break语句和continue语句5.45.5程序举例32C语言程序设计——第一章C语言概述 SCS-SWPU第三十二页,共49页。5.4break和continue语句1、

break语句一般形式:break;功能:在switch语句中,结束case分支,跳出switch语句在循环语句,终止并跳出循环体说明:break只能终止并跳出最近一层的结构break只能用于循环语句和switch语句中33C语言程序设计——算法的描述 SCS-SWPU第三十三页,共49页。表达式……break;……假(0)真(非0)while表达式2……break;…...假(0)真(非0)for表达式1表达式35.4break和continue语句34C语言程序设计——算法的描述 SCS-SWPU第三十四页,共49页。switch表达式语句组1break;语句组2break;语句组nbreak;语句组break;…...const1const2constndefaultcase5.4break和continue语句35C语言程序设计——算法的描述 SCS-SWPU第三十五页,共49页。例:floatpi=3.14159;for(r=1;r<=10;r++){area=pi*r*r;if(area>100)break;printf(″r=%f,area=%f\n″,r,area);}

程序的作用是计算r=1到r=10时的圆面积,直到面积area大于100为止。从上面的for循环可以看到:当area>100时,执行break语句,提前结束循环,即不再继续执行其余的几次循环。5.4break和continue语句36C语言程序设计——算法的描述 SCS-SWPU第三十六页,共49页。2、continue语句一般形式:continue;功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断说明:仅用于循环语句中continue语句仅结束本次循环break语句则是结束整个循环过程。5.4break和continue语句37C语言程序设计——算法的描述 SCS-SWPU第三十七页,共49页。真(非0)do……continue;…...表达式假(0)while表达式……continue;……假(0)真(非0)while表达式2……continue;…...假(0)真(非0)for表达式1表达式35.4break和continue语句38C语言程序设计——算法的描述 SCS-SWPU第三十八页,共49页。例5.6把100~200之间的不能被3整除的数输出。#include<stdio.h>

voidmain()

{intn;

for(n=100;n<=200;n++)

{if(n%3==0)

continue;

printf("%d″,n);

}

}5.4break和continue语句#include<stdio.h>

voidmain()

{intn;

for(n=100;n<=200;n++)

{if(n%3!=0)

printf("%d″,n);

}

}39C语言程序设计——算法的描述 SCS-SWPU第三十九页,共49页。例求输入的十个整数中正整数的个数及其和与平均值

#include<stdio.h>main(){inti,num=0,a;floatsum=0;for(i=0;i<10;i++){scanf("%d",&a); if(a<=0)continue; num++; sum+=a;}printf("%dplusinteger'ssum:%6.0f\n",num,sum);printf("Meanvalue:%6.2f\n",sum/num);}5.4break和continue语句40C语言程序设计——算法的描述 SCS-SWPU第四十页,共49页。第五章循环结构程序设计while语句5.1do-while语句4.24.3for语句break语句和continue语句5.45.5程序举例41C语言程序设计——第一章C语言概述 SCS-SWPU第四十一页,共49页。5.5循环程序举例求Fibonacci数列求p求最大公约数、最小公倍数判断素数42C语言程序设计——算法的描述 SCS-SWPU第四十二页,共49页。例1求Fibonacci数列前40个数。这个数列有如下特点:第1,

温馨提示

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

评论

0/150

提交评论