C程序设计-第7章

上传人:za****8 文档编号:23231086 上传时间:2021-06-06 格式:PPT 页数:39 大小:357.50KB
返回 下载 相关 举报
C程序设计-第7章_第1页
第1页 / 共39页
C程序设计-第7章_第2页
第2页 / 共39页
C程序设计-第7章_第3页
第3页 / 共39页
点击查看更多>>
资源描述
1第 六 章 循 环 结 构 程 序 设 计本 章 内 容1. 循 环 结 构 概 述2. goto语 句 及 用 goto语 句 构 成 的 循 环3. Whi le语 句 的 使 用4. Do Whi le语 句 的 使 用5. For 语 句 的 使 用6. 循 环 的 嵌 套7. Break语 句 和 Conti nue语 句 的 使 用8. 程 序 举 例 C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 2输 入 10个 整 数 , 求 它 们 的 平 均 值 , 并 输 出 大 于 平 均 值的 个 数 。 main() int a,b,c,d,e,f,g,h,i,j,n=0; float average; scanf(“%d”, scanf(“%d”, scanf(“%d”, scanf(“%d”, scanf(“%d”, scanf(“%d”, scanf(“%d”, scanf(“%d”, scanf(“%d”, scanf(“%d”, C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 3average=(a+b+c+d+e+f+g+h+i+j)/10;if( aaverage ) n=n+1;if( baverage ) n=n+1;if( caverage ) n=n+1;if( daverage ) n=n+1;if( eaverage ) n=n+1;if( faverage ) n=n+1;if( gaverage ) n=n+1;if( haverage ) n=n+1;if( iaverage ) n=n+1;if( javerage ) n=n+1;printf(“n=%d,n); C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 46.1 概 述 循 环 结 构 是 程 序 中 一 种 很 重 要 的 结 构 。 其 特 点 是 , 在 给 定条 件 成 立 时 , 反 复 执 行 某 程 序 段 , 直 到 条 件 不 成 立 为 止 。 给 定的 条 件 称 为 循 环 条 件 , 反 复 执 行 的 程 序 段 称 为 循 环 体 。 语 言提 供 了 多 种 循 环 语 句 , 可 以 组 成 各 种 不 同 形 式 的 循 环 结 构 。 ( 1) 用 goto语 句 和 if语 句 构 成 循 环 ( 2) 用 while语 句 ( 3) 用 do-while语 句 ( 4) 用 for语 句 C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 5表 达 式语 句 表 达 式语 句a) 当 型 循 环 b) 直 到 循 环非 0 0 非 0 0 C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 66.2 goto语 句 及 用 goto语 句 构 成 的 循 环 一 、 无 条 件 转 移 语 句 goto语 句 一 般 格 式 : goto 语 句 标 号 ; 其 中 语 句 标 号 是 按 标 识 符 规 定 书 写 的 符 号 , 放 在 某 一 语 句行 的 前 面 , 标 号 后 加 冒 号 (: )。 语 句 标 号 起 标 识 语 句 的 作 用 ,与 goto 语 句 配 合 使 用 。 如 : label: i+; goto label; 语 言 不 限 制 程 序 中 使 用 标 号 的 次 数 , 但 各 标 号 不 得 重 名 。 goto语 句 的 语 义 是 改 变 程 序 流 向 , 转 去 执 行 语 句 标 号 所 标 识的 语 句 。 C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 7二 、 用 goto语 句 与 if语 句 实 现 循 环用 goto语 句 与 if语 句 实 现 循 环 的 形 式 :形 式 1:loop1: 语 句 ; if ( 表 达 式 ) goto loop1; 形 式 2:loop1: if ( 表 达 式 ) goto loop2; 语 句 ; goto loop1;loop2 : 注 意 : 在 结 构 化 程 序 设 计 中 一 般 不 主 张 使 用 goto语 句 , 以免 造 成 程 序 流 程 的 混 乱 , 使 理 解 和 调 试 程 序 都 产 生 困 难 。 C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 8例 1: 编 程 序 求 : s=1+2+3+100main() int s=0,n=1; loop: s=s+n; n+; if (n100) goto loop2; s=s+n; n+; goto loop1; loop2: printf(S=%d,s); C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 9例 2: 统 计 从 键 盘 输 入 一 行 字 符 的 个 数 。 #includestdio.h void main() int n=0; printf(input a stringn); loop: if(getchar()!=n) n+; goto loop; printf(%d,n); C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 106.3 while 语 句 执 行 过 程 是 : 计 算 表 达 式 的 值 , 当 值 为 真 (非 0)时 , 执 行 循 环 体 语 句 。 如 右 上 图 。 while语 句 的 一 般 形 式 为 : while(表 达 式 ) 语 句 ; 其 中 表 达 式 是 循 环 条 件 , 语 句 为循 环 体 , 若 是 多 个 语 句 则 必 须 用 组 成 复 合 语 句 。 表 达 式语 句非 0 0 C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 11例 1: 编 程 序 求 : s=1+2+3+100main() int s=0,n=1; while (n=100) s=s+n; n+; printf(S=%d,s); C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 126.4 Dowhile语 句 do-while语 句 的 一 般 形 式 为 : do 语 句 ; while (表 达 式 ); 其 中 : 语 句 是 循 环 体 , 表 达 式 是 循 环 条 件 。 表 达 式语 句非 0 0 执 行 过 程 : 先 执 行 循 环 体 语 句 一 次 , 再 判 别 表达 式 的 值 , 若 为 真 (非 0)则 继 续 循 环 , 否 则 终 止 循 环 。 C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 13例 1: 编 程 序 求 : s=1+2+3+100main() int s=0,n=1; do s=s+n; n+; while (n=100); printf(S=%d,s); C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 14使 用 while和 do-while语 句 应 注 意 以 下 几 点 : 1.在 if语 句 , while语 句 中 , 表 达 式 后 面 都 不 能 加 分号 , 而 在 do-while语 句 的 表 达 式 后 面 则 必 须 加 分 号 。 2.do-while语 句 也 可 以 组 成 多 重 循 环 , 而 且 也 可 以和 while语 句 相 互 嵌 套 。 3.当 循 环 体 由 多 个 语 句 组 成 时 , 也 必 须 用 括 起 来组 成 一 个 复 合 语 句 。 4.如 果 循 环 至 少 要 执 行 一 次 , while和 do-while语 句可 以 相 互 替 换 。 C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 156.5 for语 句 for语 句 是 语 言 所 提 供 的 功 能 更 强 , 使 用 更 广 泛 的 一 种循 环 语 句 。一 、 使 用 一 般 形 式 为 : for(表 达 式 1; 表 达 式 2; 表 达 式 3) 语 句 ; 其 中 : 表 达 式 1通 常 用 来 给 循 环 变 量 赋 初 值 , 一 般 是 赋 值表 达 式 。 也 允 许 在 for语 句 外 给 循 环 变 量 赋 初 值 , 此 时 可 以 省略 该 表 达 式 。 表 达 式 2通 常 是 循 环 条 件 , 一 般 为 关 系 表 达 式 或 逻 辑 表 达 式 。 表 达 式 3通 常 可 用 来 修 改 循 环 变 量 的 值 , 一 般 是 赋 值 语 句 。 C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 16for语 句 的 执 行 过 程 : 1.首 先 计 算 表 达 式 1的 值 。 2.再 计 算 表 达 式 2的 值 , 若 值 为真 (非 0)则 执 行 循 环 体 一 次 , 否 则跳 出 循 环 。 3.然 后 再 计 算 表 达 式 3的 值 ,转 回 第 2步 重 复 执 行 。 在 整 个 for循 环 过 程 中 , 表 达式 1只 计 算 一 次 , 表 达 式 2和 表 达式 3则 可 能 计 算 多 次 。 循 环 体 可 能多 次 执 行 , 也 可 能 一 次 都 不 执 行 。 表 达 式 2语 句非 0 0语 句求 解 表 达 式 1求 解 表 达 式 3for 语 句 的 执 行 过 程 C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 17例 : 用 for语 句 计 算 s=1+2+3+.+99+100 main() int n,s=0; for(n=1;n=100;n+) s=s+n; printf(s=%dn,s); 本 例 for语 句 中 的 表 达 式 3为 n+, 实 际 上 也 是 一种 赋 值 语 句 , 相 当 于 n=n+1, 以 改 变 循 环 变 量 的 值 。 C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 18二 、 在 使 用 for语 句 中 要 注 意 以 下 几 点 : 1.for语 句 中 的 各 表 达 式 都 可 省 略 , 但 分 号 间 隔 符 不 能 少 如 : for(; 表 达 式 2; 表 达 式 3) 省 去 了 表 达 式 1。 for(表 达 式 1; ; 表 达 式 3) 省 去 了 表 达 式 2。 for(表 达 式 1; 表 达 式 2; ) 省 去 了 表 达 式 3。 for(; ; ) 省 去 了 全 部 表 达 式 。 2.在 循 环 变 量 已 赋 初 值 时 , 可 省 去 表 达 式 1。 如 省 去 表 达 式2或 表 达 式 3则 将 造 成 无 限 循 环 , 这 时 应 在 循 环 体 内 设 法 结 束 循环 。 C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 19main() int n=1,s=0; for(;n=100;n+) s=s+n; printf(s=%dn,s); main() int n=1,s=0; for(;n100) break; printf(s=%dn,s); for( ; ; )等 效 于 while( 1) C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 21 3. for语 句 中 的 三 个 表 达 式 都 可 以 是 逗 号 表 达 式 , 即 每 个 表达 式 都 可 由 多 个 表 达 式 组 成 。 例 : main() int n,s; for(n=1,s=0;n=100;n+) s=s+n; printf(s=%dn,s); main() int n,s; for(n=1,s=0;n=100; s+=n, n +); printf(s=%dn,s); 这 里 为 什 么 要 加 ; C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 22例 : 统 计 从 键 盘 输 入 一 行 字 符 的 个 数 。 #includestdio.h void main() int n=0; printf(input a string:n); for(;getchar()!=n;n+); printf(%d,n); 说 明 : 本 例 中 , 省 去 了 for语 句 的 表 达 式 1, 表 达 式 3也 不 是 用来 修 改 循 环 变 量 , 而 是 用 作 输 入 字 符 的 计 数 。 这 样 , 就 把 本 应 在循 环 体 中 完 成 的 计 数 放 在 表 达 式 中 完 成 了 。 因 此 循 环 体 是 空 语 句 。应 注 意 的 是 , 空 语 句 后 的 分 号 不 可 少 , 如 缺 少 此 分 号 , 则 把 后 面的 printf 语 句 当 成 循 环 体 来 执 行 。 反 过 来 说 , 如 循 环 体 不 为 空 语 句 时 , 决 不 能 在 表 达 式 的 括 号后 加 分 号 , 这 样 又 会 认 为 循 环 体 是 空 语 句 而 不 能 执 行 循 环 体 。 C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 236.6 循 环 的 嵌 套 for语 句 也 可 与 while,do-while语 句 相 互 嵌 套 , 构 成 多 重 循 环 。以 下 形 式 都 合 法 的 嵌 套 。 (4) while() for() (1) while( ) while( ) ( 2) do do while() while();(3) for() for() C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 24(7) while() do while(); (5) for( ) while( ) (6) dofor( ) while();(8) for() do while(); C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 25例 : 打 印 如 下 形 式 的 九 九 乘 法 表 .main() int x,y; for(x=1;x=9;x+) for(y=1;y100) break; s=s+n; n+; printf(s=%dn,s); C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 29 分 析 下 面 程 序 的 功 能main() char a,b; printf(input a string:n); b=getchar(); while(a=getchar()!=n) if(a=b) printf(same charactern); break; b=a; 功 能 是 : 检 查 输 入 的 一 行 中 有 无 相 邻 两 字 符 相 同 。 C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 30 done=0; for( ) for ( ) while ( ) if ( ) done=1; break; if (done) break; if (done) break; 多 层 嵌 套 循 环 : 可 用 goto退 出 ; 而 break;只 能 退 出 本 层 循 环 。 C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 31main() int n; for(n=7;n=100;n+) if (n%7!=0) continue; printf(%d ,n); main() int n; for(n=7;n=3) 程 序 如 下 C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 33main() long f1,f2; int k; f1=1;f2=1; for(k=1;k=20;k+) printf(%12ld %12ld,f1,f2); if(k%2=0) printf(n); f1=f1+f2; f2=f2+f1; C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 34 例 6.8 判 断 一 个 整 数 m是 否 是 素 数 。 素 数 是 只 能 被 1 和 本 身 整 除 的 数 。 教 材 Pg.126 C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 35#include math.hvoid main() int m,i,k; printf(Enter m=n); scanf(%d, k=sqrt(m); for(i=2;ik) printf(Yesn); else printf(Non); 输 入 m当 ik YN 打 印 Yesbreak打 印 No程 序 流 程 图 C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 36例 6.9 打 印 输 出 100200之 间 的 素 数 。 #include math.hvoid main() int n=0,i,k,m; for (m=101;m=199;m+) k=sqrt(m); for(i=2;ik) n+; printf(%d ,m); if (n% 10=0) printf(n); C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 37例 6.10 字 符 加 密 、 解 密 教 材 Pg.128加 密 的 思 想 是 : 将 每 个 字 母 C加 ( 或 减 ) 一 序 数 k, 即 用 它 后 的 第 k个字 母 代 替 , 变 换 式 公 式 : c=c+k 例 如 序 数 k为 4, 这 时 “ A”“E”, “ a”“e”,“ B”“F” 当 加 序 数 后 的 字 母 超 过 “ Z”或 “ z”则 c=c+k -26 例 如 : You are good Csy evi kssh 解 密 为 加 密 的 逆 过 程 将 每 个 字 母 C减 ( 或 加 ) 一 序 数 k, 即 c=c-k, 例 如 序 数 k为 4, 这 时 “ Z”“V”, “ z”“v”,“ Y”“U” 当 减 序 数 后 的 字 母 小 于 “ A”或 “ a”则 c=c-k +26 C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 38加 密 程 序 如 下 :#include stdio.hmain() char c; while(c=getchar()!=n) if(c=a printf(%c,c); C语 言 程 序 设 计 第 六 章 循 环 结 构 程 序 设 计 39解 密 程 序 如 下 :#include stdio.hmain() char c; while(c=getchar()!=n) if(c=a if (cA | ca-5) c=c+26; printf(%c,c);
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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