C语言循环语句

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


∑n
n=1
#include <stdio.h> main() { int i,sum=0; i=1; do { sum+=i; i++; }while(i<=100); printf("%d",sum); }
2012-5-20
20
循环比较总结
1、几种循环通常情况下可以互相替代 、 2、while和do-while循环,只在 循环, 、 和 循环 只在while后面指定 后面指定 循环条件, 循环条件,在循环体内应包含使循环趋于结束 的语句; 循环比较灵活 循环比较灵活, 的语句;for循环比较灵活,循环趋于结束语句 可以用在表达式3, 可以用在表达式 ,也可以在循环体语句中完 成。 3、 while和do-while循环的循环变量初值应在 、 和 循环的循环变量初值应在 while和do-while循环之前完成。 循环之前完成。 和 循环之前完成 4、三种循环都可以用 跳出循环, 、三种循环都可以用break跳出循环,用 跳出循环 continue 结束本次循环。 结束本次循环。
7
5.3 Do-while语句 语句
一般形式: do 循环体语句; while(表达式); 执行流程:
循环体语句
真(非0) 表达式 假(0)
2012-5-20 8
特点:先执行循环体,后判断表达式 说明: 至少执行一次循环体 do~while可转化成while结构
While循环 循环 赋初值 假(0) 表达式 真(非0) 非 循环体 假(0) 真(非0) 非 表达式 Do-While循环 循环
2012-5-20
}
19
100
5.6 几种循环的比较
#include <stdio.h> main() { int i,sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf("%d",sum); } #include <stdio.h> main() { int i,sum=0; for(i=1;i<=100;i++) sum+=i; printf("%d",sum); }
∑n
n=1
循环初值
循环变量增值
#include <stdio.h> main() { int i,sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf("%d",sum); }
循环条件
循环终值
循环体语句
2012-5-20
6
显示1~10的平方 例: 显示 的平方
2012-5-20 21
5.7
break语句和 语句和continue语句 语句 语句和
• 功能:在循环语句和switch语句中,终止并 跳出循环体或开关体 • 说明: –break只能终止并跳出最近一层的结构 –break不能用于循环语句和switch语句 之外的任何其它语句之中
1、break语句
#include <stdio.h> main() { int i=1; while(i<=10) { printf("%d*%d=%d\n",i,i,i*i); i++; } }
2012-5-20
运行结果: 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
循环体语句
2012-5-20
9
100
例: 用do~while循环求 循环求
∑n
n=1
#include <stdio.h> main() { int i,sum=0; i=1; do { sum+=i; i++; }while(i<=100); printf("%d",sum); }
2012-5-20 10
2012-5-20
16
程序实现
#include <stdio.h>
1、定义3个变量。用双 循环实现: 、定义 个变量 用双for循环实现 个变量。 循环实现: { int x,y,z; int x,y,z; for(x=0;x<=100;x++) for(x=0;x<=100;x++) for(y=0;y<=100;y++) z=100-x-y; for(y=0;y<=100;y++) 为什么不是 2、利用 语句判断 ,y,z是否满足条件: 语句判断x, , 是否满足条件 是否满足条件: 、利用if语句判断 5*x+3*y+z/3==100呢 {z=100-x-y; if(15*x+9*y+z==300)
2012-5-20
4
特点:先判断表达式,后执行循环体 几点说明: 循环体有可能一次也不执行 循环体可为任意类型语句 下列情况,退出while循环 条件表达式不成立(为零) 循环体内遇break,return,goto 无限循环: while(1) 循环体语句;
2012-5-20 5
100
例: 用while循环求 循环求
goto 语句标号; ….….. 标号:语句; 说明: 不能用整数作标号 只能出现在goto所在函数内,且唯一 只能加在可执行语句前面 限制使用goto语句
2012-5-20 3
5.2
while语句 语句
while(表达式) 循环体语句;
一般形式:
流程图:
假(0) 表达式 真(非0) 非 循环体语句
第五章 循环语句
2012-5-20
1
5.1
概 述
1、C语言可实现循环的语句: 、 语言可实现循环的语句 语言可实现循环的语句: – 用goto 和 if 构成循环 – while 语句 – do ~ while 语句 – for 语句
2012-5-20
2
2、goto语句 、 语句 含义 : 无条件转移 goto语句 goto语句一般格式: 格式:
11
5.4
for循环 循环
for([表达式1] ;[ 表达式2] ;[ 表达式3]) 一般形式: 循环体语句; 执行流程:
表达式1 表达式 假(0) 表达式2 表达式 真(非0) 非 循环体语句
表达式3 表达式
2012-5-20
12
for语句最简单应用形式:
for(循环变量赋初值;循环条件;循环变量增值) { 循环体语句; } 例 用for循环求∑n 说明:
2012-5-20
22
for while do 假(0) 假(0) 表达式 …… 真(非0) 真(非0) …… break; …… 真(非0) 表达式 假(0) 表达式3 break; …... while …… break; …... 表达式2 表达式1
2012-5-20
23
break举例:输出圆面积,面积大于100时停止 #define PI 3.14159 main() { int r; float area; for(r=1;r<=10;r++) { area=PI*r*r; if(area>100) break; printf("r=%d,area=%.2f\n",r,area); } }
Fra Baidu bibliotek
表达式1
表达式2 真(非0) ( 0) …… continue; …...
假(0) 表达式3
2012-5-20 25
例:把100~200之间的不能被3整除的数输出
main() { int n; for(n=100;n<=200;n++) {if(n%3==0) continue; printf(“%d”,n); } }
例 while和do~while比较 和 比较 #include <stdio.h> main() { int i,sum=0; scanf("%d",&i); do { sum+=i; i++; }while(i<=10); printf("%d",sum); }
2012-5-20
# include <stdio.h> main() { int i,sum=0; scanf("%d",&i); while(i<=10) { sum+=i; i++; } printf("%d",sum); }
…... } …... }while( ); ……. } …… while() { …… } …... }
14
2012-5-20
我国古代数学家张丘建在《算经》中出了一道题“鸡翁一, 例: 我国古代数学家张丘建在《算经》中出了一道题“鸡翁一, 值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡, 值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡, 问鸡翁、鸡母、鸡雏各几何? 问鸡翁、鸡母、鸡雏各几何?” 解题思路: 解题思路: 利用以前学过的数学知识列方程。 利用以前学过的数学知识列方程。 假设鸡翁数为x,鸡母数为y,鸡雏数为z。列方程为: 假设鸡翁数为 ,鸡母数为 ,鸡雏数为 。列方程为: x+y+z=100 ……① ① 三个未知数, 两个方程
if(15*x+9*y+z==300) printf(“%,d%d,%d\n”,x,y,z); }
2012-5-20 17
main()
}
#include <stdio.h> main() { int x,y,z; for(x=0;x<=100;x++) for(y=0;y<=100;y++) {z=100-x-y; if(15*x+9*y+z==300&&z>=0) printf(“%,d%d,%d\n”,x,y,z); }
2012-5-20
}
18
#include <stdio.h> main() { int x,y,z; for(x=0;x<=100;x++) for(y=0;y<=100;y++) for(z=0;z<=100;z++) if(15*x+9*y+z==300&&x+y+z==100) printf(“%,d%d,%d\n”,x,y,z);
5x+3y+z/3=100……② ② 问题解决之道: 问题解决之道:穷举法 穷举解决之道: 穷举解决之道:循环
2012-5-20
15
x+y+z=100
……① ①
5x+3y+z/3=100……② ②
算法如下: 算法如下: 假设x、 已知 由方程①可以得出z=100-x-y 已知, 假设 、y已知,由方程①可以得出 由条件可知x和 的值有限制 只可能在0~100之间。需要用 的值有限制, 之间。 由条件可知 和y的值有限制,只可能在 之间 二重循环实现。每个x和 的组合都对应一个 的值,如果x, 的组合都对应一个z的值 二重循环实现。每个 和y的组合都对应一个 的值,如果 , y和z的值满足 的值满足方程②,即为所求结果 和 的值满足 ②
2012-5-20 26
例 判断m是否素数
读入m k=√m i=2
Ch5_8.c
当i≤k m被i整除 真 用break 结束循环 i=i+1 i≥k+1 真 假 假
输出:m”不是素数” 输出:m”是素数”
2012-5-20 27
#include "math.h" main() { int m,i,k; printf("input a number:"); scanf("%d",&m); k=sqrt(m); for (i=2;i<=k;i++) if(m%i==0) break; if (i>=k+1) printf("%d is a prime number\n",m); else printf("%d is not a prime number\n",m); }
for语句中表达式1, 表达式2 ,表达式3 类型任 #include <stdio.h> 意,都可省略,但分号;不可省 main() 无限循环: for(;;) { int i,sum=0; for语句可以转换成while结构 for(i=1;i<=100;i++) 表达式1; 表达式1; sum+=i; while(表达式 表达式2) while(表达式2) printf("%d",sum); { } 循环体语句; 循环体语句;
2012-5-20 24
2、continue语句
for
功能:结束本次循环,跳过循环体中尚未执行的 语句,进行下一次是否执行循环体的判断 仅用于循环语句中
while 假(0) do 假(0) 表达式 …… continue; …... 真(非0) while 表达式 真(非0) …… continue; ……
表达式3; 表达式3;
2012-5-20 13
}
5.5
循环嵌套
循环的嵌套
三种循环可互相嵌套,层数不限 外层循环可包含两个以上内循环,但不能相互交叉 嵌套循环的执行流程 嵌套循环的跳转 (1) while() 禁止: do (4) for( ; ;) (3) while() (2) { …… { …… { …… { …… 1.从外层跳入内层 while() do do do { …… 2.跳入同层的另一循环 …… { …… { { …… 3.向上跳转 ); } }while(); }while( ); }while(
相关文档
最新文档