周日补课循环结构

上传人:max****ui 文档编号:23579317 上传时间:2021-06-09 格式:PPT 页数:43 大小:821KB
收藏 版权申诉 举报 下载
周日补课循环结构_第1页
第1页 / 共43页
周日补课循环结构_第2页
第2页 / 共43页
周日补课循环结构_第3页
第3页 / 共43页
资源描述:

《周日补课循环结构》由会员分享,可在线阅读,更多相关《周日补课循环结构(43页珍藏版)》请在装配图网上搜索。

1、循 环 结 构 概 述循 环 结 构 的 本 质 : 将 功 能 重 复 的 代 码 以 简 化 的 形 式 表 述 出 来 循 环 结 构 的 基 本 作 用 : -减 少 重 复 执 行 一 项 任 务 时 需 要 的 代 码 语 句 数 量 循 环 结 构 的 特 点 : 要 解 决 的 问 题 必 须 能 够 归 纳 成 一 个 通 式 在 循 环 结 构 中 , 若 某 个 变 量 的 值 的 变 化 可 以 决 定循 环 是 继 续 还 是 结 束 , 则 称 该 变 量 是 循 环 控 制 变量 循 环 次 数 是 有 限 的 , 循 环 体 中 应 有 使 循 环 趋 于 结束

2、 的 语 句 , 否 则 将 进 入 死 循 环 循 环 可 以 在 满 足 一 定 条 件 下 提 前 结 束 C语 言 可 实 现 循 环 的 语 句 : 用 goto 和 if 构 成 循 环 while do语 句 do while 语 句 for 语 句 goto语 句 及 用 goto构 成 循 环 goto语 句 一 般 格 式 :goto 语 句 标 号; .标 号 : 语 句; while语 句v一 般 形 式:while(表 达 式 ) 循 环 体 语 句 ;v执 行 流 程:expr循环体假(0)真(非0)while v特 点 : 先 判 断 表 达 式 , 后 执 行

3、循 环 体 只 要 当 循 环 条 件 表 达 式 为 真 , 就 执 行 循 环 体语 句v说 明 :l循 环 体 有 可 能 一 次 也 不 执 行l循 环 体 可 为 任 意 类 型 语 句l下 列 情 况 , 退 出 while循 环u条 件 表 达 式 不 成 立 ( 为 零 )u循 环 体 内 遇 break,return,gotol无 限 循 环 : while(1) 循 环 体 ; 例 :用 while循 环 求 1到 100的 累 加 和 #include main() int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(

4、%d,sum);循 环 初 值 循 环 终 值循 环 变 量 增 值 循 环 条 件循 环 体Sum=0,i=1当i=100Sum=sum+ii=i+1 例 显 示 110的 平 方#include main() int i=1,k; while(i=10) k=i*i; printf(%d*%d=%dn,i,i,k); i+; return 0;运行结果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100 dowhile语 句v一 般 形 式 : do 循 环 体 语 句 ; while(表 达 式 );v执 行 流 程:

5、do循环体expr 假(0)真(非0) while v特 点 : 先 无 条 件 执 行 循 环 体 , 后 判 断 表 达 式v说 明 :l至 少 执 行 一 次 循 环 体ldowhile可 转 化 成 while结 构expr循 环 体假(0)真(非0)循 环 体 While循环 sum=0,i=1当i=100Sum=sum+ii=i+1例 用 dowhile循 环 求 1到 100的 累 计 和 #include int main() int i,sum=0; i=1; do sum+=i;i+; while(i=100); printf(%d,sum); return 0; sum=

6、0,i=1sum=sum+Ii=i+1 当i=100 例 while和 dowhile比 较#include int main() int i,sum=0; scanf(%d, do sum+=i;i+; while(i=10); printf(%d,sum); return 0; #include int main() int i,sum=0; scanf(%d, while(i=10) sum+=i;i+; printf(%d,sum); return 0; for语 句v一 般 形 式 : for(expr1 ; expr2 ; expr3) 循 环 体 语 句 ;v执 行 流 程:ex

7、pr2循环体假(0)真(非0)forexpr1 expr3 vfor语 句 一 般 应 用 形 式:for(循 环 变 量 赋 初 值 ; 循 环 条 件 ; 循 环 变 量 增 值 ) 循 环 体 语 句 ; v说 明 :lfor语 句 中 expr1, expr2 ,expr3 类 型 任 意 , 都 可 省 略 , 但分 号 ; 不 可 省l无 限 循 环 : for(;)lfor语 句 可 以 转 换 成 while结 构 expr1;while(expr2) 循 环 体 语 句 ; expr3;例 用 for循 环 求 1100累 加 和 #include main() int i,

8、sum=0; for(i=1;i=100;i+) sum+=i; printf(%d,sum); 例 : #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 int main( ) int i=0; for(;i10;) putchar(a+(i+); return 0; 例 : #include main( ) int i=0; for(;i10;putchar(

9、a+i),i+) ; 循 环 的 嵌 套v三 种 循 环 可 互 相 嵌 套 ,层 数 不 限v外 层 循 环 可 包 含 两 个 以 上 内 循 环 ,但 不 能 相 互 交 叉v嵌 套 循 环 的 执 行 流 程(1) while() while() . (2) do do while( ); . while( ); (3) while() do while( ); . (4) for( ; ;) do while(); while() .v嵌 套 循 环 的 跳 转禁 止 :l从 外 层 跳 入 内 层l跳 入 同 层 的 另 一 循 环 向 上 跳 转 例 循 环 嵌 套 , 输 出

10、九 九 表1 2 3 4 5 6 7 8 91 2 3 4 5 6 7 8 92 4 6 8 10 12 14 16 183 6 9 12 15 18 21 24 279 18 27 36 45 54 63 72 81.i j#include int main() int i,j; for(i=1;i10;i+) printf(%4d,i); printf(n-n); for(i=1;i10;i+) for(j=1;j10;j+) printf(j=9)?%4dn:%4d,i*j); return 0; i10printf假(0)真(非0)i=1j+j=1j10真(非0)假(0)i+for(i

11、=1;i10;i+) for(j=1;j10;j+) printf(j=9)?%4dn:%4d,i*j);外循环内循环 辅 助 控 制 语 句 break语 句功 能 : 在 循 环 语 句 和 switch语 句 中 ,终 止 并 跳出 循 环 体 或 开 关 体说 明 : break只 能 终 止 并 跳 出 最 近 一 层 的 结 构 break不 能 用 于 循 环 语 句 和 switch语 句 之 外的 任 何 其 它 语 句 之 中 exprbreak;假(0)真(非0)while dobreak;.expr假(0)真(非0) while expr2break;.假(0)真(非0

12、)forexpr1expr3 switchexpr语 句 组 1break; 语 句 组 2break; 语 句 组 nbreak; 语 句 组break;.const 1 const 2 const n defaultcase break举 例 1: 输 出 圆 面 积 , 面 积 大 于 100时 停 止#include#define PI 3.14159int main() int r; float area; for(r=1;r100) break; printf(r=%d,area=%.2fn,r,area); return 0; break举 例 2: 小 写 字 母 转 换 成

13、大 写 字 母 ,直 至 输 入 非 字 母 字 符#include int main() int i,j; char c; while(1) c=getchar(); if(c=a for (i=10; ;i-) sum+=i; if (sum=0) break; continue语 句v功 能 : 结 束 本 次 循 环 , 跳 过 循 环 体 中 尚 未 执 行 的语 句 , 进 行 下 一 次 是 否 执 行 循 环 体 的 判 断v仅 用 于 循 环 语 句 中 exprcontinue;假(0)真(非0)while真(非0) docontinue;.expr 假(0) whilee

14、xpr2continue;.假(0)真(非0)forexpr1expr3 例 求 输 入 的 十 个 整 数 中 正 数 的 个 数 及 其 平 均 值#include int main() int i,num=0,a; float sum=0; for(i=0;i10;i+) scanf(%d,if(a=0) continue;num+;sum+=a; printf(%d plus integers sum :%6.0fn,num,sum); printf(Mean value:%6.2fn,sum/num); return 0; t=1,pi=0,n=1.0,s=1当|t|1e-6pi=p

15、i+tn=n+2s=-st=s/npi=pi*4输出pi 分 子 : 1, -1, 1, -1分 母 : 1, 3, 5, 7, .为止最后一项的绝对值小于的近似值,直到公式求例用61071513114 兔 子 问 题 : 有 一 对 兔 子 , 从 出 生 后 第 3个 月 起 每 个 月 都生 一 对 兔 子 , 小 兔 子 长 到 第 三 个 月 后 每 个 月 又生 一 对 兔 子 , 假 如 兔 子 都 不 死 , 问 每 个 月 的 兔子 总 数 为 多 少 ? 程 序 分 析 : 兔 子 的 规 律 为 数 列 1,1,2,3,5,8,13,21. 例求Fibonacci数列:1

16、,1,2,3,5,8,的前40个数)(nFFF )(nF )(nF nnn 3212 111 21 f1=1,f2=1for i=1 to 20输出f1,f2f1=f1+f2f2=f2+f1 例 判 断 m是 否 素 数 读入m k=m i=2 当ikm被i整除真假用break结束循环i=i+1ik+1真假输出:m”是素数”输出:m”不是素数” 猴 子 吃 桃 子 问 题 : 猴 子 第 一 天 摘 下 若 干 桃 子 , 当 即 吃 了 一 半 ,还 不 过 瘾 , 又 多 吃 了 一 个 。 以 后 每 天 早 上 都 吃 了前 一 天 的 一 半 又 多 一 个 。 到 第 十 天 的

17、早 上 , 想 吃的 时 候 , 发 现 只 剩 下 一 个 桃 子 了 。 问 第 一 天 总 共摘 了 多 少 个 桃 子 ? 分 析 : 这 个 问 题 是 一 个 递 推 问 题 , 第 10天 只 剩 下一 个 桃 子 , 第 9天 吃 了 桃 子 的 一 半 并 还 多 吃 了 一个 , 即 第 9天 的 桃 子 数 是 4个 , 第 8天 的 桃 子 数 为10个 依 次 类 推 , 可 以 得 出 第 1天 的 桃 子 数 。 通 式 : 前 一 天 桃 子 数 =(后 一 天 桃 子 数 +1)X2 #include stdio.hmain() int i,n1,n2; n2

18、=1; for(i=1;i=9;i+) n1=(n2+1)*2; n2=n1; printf(The peaches of the first day is %d.n,n1); getchar(); getchar(); return 0; 数 字 组 合 问 题 : 有 1、 2、 3、 4个 数 字 , 能 组 成 多 少 个 互 不 相同 且 无 重 复 数 字 的 三 位 数 ? 都 是 多 少 ? 程 序 分 析 : 可 填 在 百 位 、 十 位 、 个 位 的 数字 都 是 1、 2、 3、 4。 组 成 所 有 的 排 列 后 再 去掉 不 满 足 条 件 的 排 列 。 水

19、仙 花 数 问 题 打 印 出 所 有 的 “ 水 仙 花 数 ” , 所 谓 “ 水 仙花 数 ” 是 指 一 个 三 位 数 , 其 各 位 数 字 立 方 和 等于 该 数 字 本 身 。例 如 : 153=13+53+33 开 始for a=1 to 9for b=0 to 9for c=0 to 9 输 出 dd=?xd=a*100+b*10+cX=a*a*a+b*b*b+c*c*c结 束 yesno #include int main()int a,b,c,d,x; for (a=1; a=9; a+) /*百 位 */ for (b=0; b=9; b+) /*十 位 */ fo

20、r (c=0; c=9; c+) /*个 位 */ d=a*100+b*10+c; x=a*a*a+b*b*b+c*c*c; if (d=x) printf(Daffodils number is %dn,d); getchar(); return 0; 用 一 重 循 环 解 决 水 仙 花 数 :用 一 重 循 环 的 循 环 控 制 变 量 :表 示 三 位 数 i4=100999 百 位 数 i1=i4/100 十 位 数 i2=(i4%100)/10 个 位 数 i3=i4%10 水 仙 花 数 i4=i1*i1*i1+i2*i2*i2+i3*i3*i3 #include int m

21、ain()int a,b,c,d; for (d=100; d=999; d+) a=d%10; /*个 位 */ b=(d%100)/10; /*十 位 */ c=d/100; /*百 位 */ if (d=a*a*a+b*b*b+c*c*c) printf(Daffodils number is %dn,d); getchar(); return 0; 求 值 问 题 10 2i 编 程 计 算 算 式 j 的 值 i=1 j=i 设 计 分 析 : 这 个 程 序 需 要 双 层 循 环 , 外 层 循 环 由 j来 控 制 , 总 共 循 环 10次 , 内 层 循 环 由 i来 控制

22、 , 共 执 行 2j-j+1=j+1次 。 基 本 操 作 是 计 算累 加 和 , 因 此 , 在 程 序 执 行 时 共 需 要 三 个变 量 , 两 个 循 环 控 制 变 量 和 一 个 累 积 和 变量 。 算法N-S图: sum=0,i=1 i=10 j=i ,j=2*i sum+=jj+ i+; 输出i 若 该 题 要 求 输 出 以 下 格 式 , 则 怎 样 编 写 程 序 ?Sum=0!0+1+2=33+2+3+4=1212+3+4+5+6=3030+4+5+6+7+8=6060+5+6+7+8+9+10=105105+6+7+8+9+10+11+12=168168+7+8+9+10+11+12+13+14=252252+8+9+10+11+12+13+14+15+16=360360+9+10+11+12+13+14+15+16+17+18=495495+10+11+12+13+14+15+16+17+18+19+20=660

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!