chap4-2循环结构程序设计

上传人:宝路 文档编号:47976308 上传时间:2018-07-07 格式:PPT 页数:71 大小:722.39KB
返回 下载 相关 举报
chap4-2循环结构程序设计_第1页
第1页 / 共71页
chap4-2循环结构程序设计_第2页
第2页 / 共71页
chap4-2循环结构程序设计_第3页
第3页 / 共71页
chap4-2循环结构程序设计_第4页
第4页 / 共71页
chap4-2循环结构程序设计_第5页
第5页 / 共71页
点击查看更多>>
资源描述

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

1、4.2.1 while语句 4.2.2 do-while语句 4.2.3 for语句 4.2.4 转移语句 4.2.5 循环的嵌套 4.2.6 循环结构程序设计举例 4.2 循环结构程序设计循环的概念当所要解决的问题存在重复执行内容时, 应该使用循环结构来实现,具体的设计步骤可 归纳如下。(1)构造循环体。(2)寻找控制循环的变量。(3)找出控制循环的3个要素。 循环控制变量的初值。 循环的条件。 使循环趋于结束的部分。在C语言中可以用以下语句来实现循环:1. 用while语句;2. 用do-while语句;3. 用for语句;4. 用goto语句和if语句构成循环;4.2.1 while语句

2、真(非零)表达式循环体假(零)1、while 语句的形式:while (表达式)循环体; 2 、 while 语句 常称为“当型”循环语句。3、说明:先判断表达式,后执行语句。表达式同if语句后的表达式一样,可以是任何类型的表达式。 循环体多于一句时,用一对 括起。while循环结构常用于循环次数不固定,根据是否满足某个条件决定循环与否的情况。 例:分析下列程序段的循环次数i=1; while (i0) printf(“ + “);else printf(“ - “);scanf(“ %d “, 判断正负号#include “stdio.h“ void main() char ch;int n

3、um=0; ch=getchar();例: 统计从键盘输入的一行字符的个数(以回车键作为输入结束标记)。while(ch!=n) 判断是否输入结束 num+; ch=getchar(); printf(“num=%dn“,num); 注意表达式在判断前,必须要有明确的值。 循环体中一般有改变条件表达式的语句。 while (表达式)后面没有分号。 4.2.2 do-while语句1、 do-while的形式 :do 循环体; while (表达式);2、 do-while语句 常称为“直到型”循环语句。真(非零)表达式循环体假(零)3、说明:先执行语句,后判断表达式。第一次条件为真时,whil

4、e,do-while等价;第一次条件为假时,二者不同。例: 用do-while语句编程实现:计算1+2+3+4+100算法:s1.设一个变量sum用于存放最后的结果,初值为0s2.设一个循环变量i,初值为1s3. sum=sum+i s4. i+s5. 判断i是否小于等于100,若是重复执行s3 s5 ;否则程序结束main() int sum=0,i=1;dodosum=sum+i;i+;whilewhile(i100) break;sum=sum+i; 1、for语句中表达式省略的形式 (3)表达式3也可以省略,但此时保证 循环能正常结束如:for(sum=0,i=1;i100) brea

5、k;sum=sum+i; i+;相当于(6)循环体为空语句对for语句,循环体为空语句的一般形式为:for (表达式1;表达式2;表达式3) ;如:for(sum=0,i=1;isqrt(x)printf(“ %d is a prime “ ,x); else printf(“ %d is not a prime “ ,x); 在判断范围内无因 子,程序正常终止有因子,程序 非正常终止#include “ math.h “ void main() int x,k,f=1; scanf(“ %d “,排除法:如果有因子, 不再往下判断是否是素 数for(k=2;k=1;x-)if(x%17=0)

6、 break; printf(“x=%dn“,x); 找到满足条件的最 大数,结束循环(1)语句形式: continue;(2)语句作用: 结束本次循环。三、continue 语句(3)语句执行流程: continue语句可以结束本次循环,即不再 执行循环体中continue 语句之后的语句,转 入下一次循环条件的判断与执行。 例: 求300以内能被17整除的所有整数。 #include “stdio.h“void main()int x,k;for(x=1;x=10) break;if(b%3=1)b+=3; continue;printf(“%dn“,a); 例:分析以下程序的运行结果。

7、程序运行结果:4 在循环体语句中又包含有另一个完整的循环结构的形式,称为循环的嵌套。如果内循环体中又有嵌套的循环语句,则构成多重循环。4.2.5 循环的嵌套嵌套在循环体内的循环体称为内循环,外面的循环称为外循环。while 、do-while、for三种循环都可以互相嵌套。循环语句之间的关系for(.) . for(.) . . 内循环外循环for(.) . for(.) .并列循环嵌套循环交叉循环for(.) . for(.) .错误真真外循环初始条件内循环初始条件内循环体外循环条件假内循环条件假内循环循环条件外循环循 环条件循环结束二重 循环 嵌套 结构 执行 流程 例:输出图形:*编程分

8、析:采用双重循环,一行一行输出。每一行输出步骤:一般3步。1)光标定位3)每输完一行光标换行(n)2)输出图形。例如本题:共4行,若行号用k表示, 则每一行有2*k-1个*号。#include “ stdio.h “ void main() int k1,k2;for(k1=1;k1=k1;k2-)putchar( ); for(k2=1;k2=n) printf(“t%d“,n); 例:求解百鸡百钱问题。公元钱五世纪,我国古代 数学家张丘建在算经一书中提出了“百鸡百钱” 问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱 一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? 算法分析:百鸡百钱问题是典型的穷

9、举法问题。我 们设x,y,z分别为买的鸡翁,鸡母,鸡雏的个数,则 有 x+y+z=100 5*x+3*y+z/3=100 而x,y可能取数的范围为 x:020 y:033 z可以由公式z=100-x-y计算出来。 据此,我们建立一个两重循环,对所有可能的情况 进行判别。 程序源代码如下:#include “stdio.h“ main() int i,j,k;printf(“解百鸡百钱问题n“);for (i=1;i0); 问最后b的值为多少?循环了多少次?b=4 循环2次习题习题3. i=1;a=0;s=1;do a=a+s*i;s=-s;i+;while(i main() char c;wh

10、ile(c=getchar()!=?)putchar(+c);sjhiu习题习题5. 5. main() int i,j;for(i=1;i50)break;while(a=14);a=12 y=12 a=16 y=28 a=16 y=44 a=16 y=60/*给a赋值*/7. 1-习题习题21 +31 +991 -1001 用三种做法做for(i=1;i0) t=m%n;m=n;n=t;习题习题9.输入两个整数x、y,求xymain() int x,y,i,mul=1;scanf(“%d,%d”,for(i=1;i=y;i+) mul=mul*x;printf(“%d”,mul);习题习题

11、 10.求出1100之间的所有素数main() int i,j,flag;for(i=2;i=100;i+) flag=1;for(j=2;j=sqrt(i);j+)if(i%j=0) flag=0;break; if(flag=1)printf(“%5d”,i);习题习题11.计算1!+2!+3!+100!main() int i,sum=0,s=1;for(i=1;i=100;i+)sum=sum+s;s=s*i;printf(“%5d”,sum);1、写出程序运行结果: void main() int i,j,x=0;for(i=0;i2;i+)x+;for(j=0;j=3;j+)if(j%2) continue;x+;x+; printf(“x=%dn”,x); 运行结果:x=8练 习void 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;case 3:a+;b+; printf(“a=%d,b=%dn”,a,b); 运行结果:a=2,b=1

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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