




已阅读5页,还剩54页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
循环的嵌套 一个循环体内又包含另一个完整的循环结构 称为循环的嵌套内嵌的循环中还可以嵌套循环 这就是多层循环3种循环 while循环 do while循环和for循环 可以互相嵌套 几种合法的循环嵌套 while嵌套whiledo while嵌套do whilefor嵌套forwhile嵌套do whilefor嵌套whiledo while嵌套for 循环嵌套说明 嵌套的循环控制变量不能相同内循环变化快 外循环变化慢如 for i 1 i 9 i for j 1 j i j printf d d d i j i j printf n 正确确定循环体循环控制变量常与求解的问题挂钩 例 找出满足下面条件的所有三位数1 其百位数不大于22 将个位与百位对换 得到的三位数是原三位数的两倍多 分析 1 用三重循环的循环控制变量分别表示百位数 十位数和个位数2 百位数i取值1 2十位数j取值0 9个位数k取值2 93 n 100 i 10 j km 100 k 10 j i4 若m 2 n并且m 3 n 则n是满足条件的三位数 includevoidmain inti j k n m s 0 for i 1 i 2 n 用一重循环的循环控制变量i表示原来的三位数i 101 299百位数n1 i 100十位数n2 i n1 100 10个位数n3 i 100 n1 10 n2m 100 n3 10 n2 n1若m 2 i并且m 3 i则i为满足条件的三位数 includevoidmain inti n1 n2 n3 m s 0 for i 101 i 2 i includevoidmain inti j k n m s 0 for i 1 i 2 n 例 打印九九乘法表 1 1 21 2 21 3 3 2 1 22 2 42 3 6 9 1 99 2 189 3 27 算法分析 第一行1 i i 第二行为2 i 2i 第三行为3 i 3i 第九行为9 i 9i 行号i从1 9 每次递增1 includevoidmain inti j for i 1 i 9 i for j 1 j 9 j printf 3d d 2d i j i j printf n 例 用循环语句打印下列图案 算法分析 这是一个典型的可采用循环嵌套解决的问题该图案一共有5行 打印时需要一行一行地进行 设正在处理的行表示为第i行 则i从1 5观察上面的图案 每行的字符数与所在的行有关 即第i行有i个星号 设j表示第i行的字符个数 则j从1 i includevoidmain inti j for i 1 i 5 i for j 1 j i j printf printf n 思考题 若打印下列图形如何修改上面程序122333444455555 改变循环执行的状态 用break语句提前终止循环用continue语句提前结束本次循环break语句和continue语句的区别 用break语句提前终止循环 break语句可以用来从循环体内跳出循环体 即提前结束循环 接着执行循环下面的语句 用break语句提前终止循环 例 在全系1000学生中 征集慈善募捐 当总数达到10万元时就结束 统计此时捐款的人数 以及平均每人捐款的数目 用break语句提前终止循环 编程思路 循环次数不确定 但最多循环1000次在循环体中累计捐款总数用if语句检查是否达到10万元如果达到就不再继续执行循环 终止累加计算人均捐款数 用break语句提前终止循环 编程思路 变量amount 用来存放捐款数变量total 用来存放累加后的总捐款数变量aver 用来存放人均捐款数定义符号常量SUM代表100000 include defineSUM100000intmain floatamount aver total inti for i 1 total 0 i SUM break aver total i printf num d naver 10 2f n i aver return0 指定符号常量SUM代表100000 include defineSUM100000intmain floatamount aver total inti for i 1 total 0 i SUM break aver total i printf num d naver 10 2f n i aver return0 应该执行1000次 include defineSUM100000intmain floatamount aver total inti for i 1 total 0 i SUM break aver total i printf num d naver 10 2f n i aver return0 达到10万 提前结束循环 include defineSUM100000intmain floatamount aver total inti for i 1 total 0 i SUM break aver total i printf num d naver 10 2f n i aver return0 实际捐款人数 include defineSUM100000intmain floatamount aver total inti for i 1 total 0 i SUM break aver total i printf num d naver 10 2f n i aver return0 只能用于循环语句和switch语句之中 而不能单独使用 用continue语句提前结束本次循环 有时并不希望终止整个循环的操作 而只希望提前结束本次循环 而接着执行下次循环 这时可以用continue语句 用continue语句提前结束本次循环 例 要求输出100 200之间的不能被3整除的数 编程思路 对100到200之间的每一个整数进行检查如果不能被3整除 输出 否则不输出无论是否输出此数 都要接着检查下一个数 直到200为止 N n 100 n 200 Y n能被3整除 N n n 1 输出n Y for n 100 n 200 n if n 3 0 continue printf d n break语句和continue语句的区别 continue语句只结束本次循环 而不是终止整个循环的执行break语句结束整个循环过程 不再判断执行循环的条件是否成立 N 表达式1 Y 表达式2 N Y N 表达式1 Y 表达式2 N Y break语句 continue语句 强行退出循环 只结束本次循环 例 输出以下4 5的矩阵 12345246810369121548121620 解题思路 可以用循环的嵌套来处理此问题用外循环来输出一行数据用内循环来输出一列数据按矩阵的格式 每行5个数据 输出 includeintmain inti j n 0 for i 1 i 4 i for j 1 j 5 j n if n 5 0 printf n printf d t i j printf n return0 累计输出数据的个数 控制一行内输出5个数据 includeintmain inti j n 0 for i 1 i 4 i for j 1 j 5 j n if n 5 0 printf n printf d t i j printf n return0 双重循环 includeintmain inti j n 0 for i 1 i 4 i for j 1 j 5 j n if n 5 0 printf n printf d t i j printf n return0 控制输出4行 includeintmain inti j n 0 for i 1 i 4 i for j 1 j 5 j n if n 5 0 printf n printf d t i j printf n return0 控制每行中输出5个数据 includeintmain inti j n 0 for i 1 i 4 i for j 1 j 5 j n if n 5 0 printf n printf d t i j printf n return0 i 1时 j由1变到5i j的值是1 2 3 4 5 includeintmain inti j n 0 for i 1 i 4 i for j 1 j 5 j n if n 5 0 printf n printf d t i j printf n return0 i 2时 j也由1变到5i j的值是2 4 6 8 10 如何修改程序 不输出第一行的空行 includeintmain inti j n 0 for i 1 i 4 i for j 1 j 5 j n if n 5 0 printf n printf d t i j printf n return0 if i 3 遇到第3行第1列 终止内循环 includeintmain inti j n 0 for i 1 i 4 i for j 1 j 5 j n if n 5 0 printf n printf d t i j printf n return0 if i 3 原来第3行第1个数据3没有输出 循环程序举例 例 用公式求的近似值 直到发现某一项的绝对值小于10 6为止 该项不累计加 循环程序举例 解题思路 求近似值的方法很多 本题是一种其他方法 循环程序举例 每项的分子都是1后一项的分母是前一项的分母加2第1项的符号为正 从第2项起 每一项的符号与前一项的符号相反 循环程序举例 include includeintmain intsign 1 doublepi 0 n 1 term 1 while fabs term 1e 6 pi pi term n n 2 sign sign term sign n pi pi 4 printf pi 10 8f n pi return0 求绝对值的函数 只保证前5位小数是准确的 include includeintmain intsign 1 doublepi 0 n 1 term 1 while fabs term 1e 6 pi pi term n n 2 sign sign term sign n pi pi 4 printf pi 10 8f n pi return0 改为1e 8 例 输入一个大于3的整数n 判定它是否素数 prime 又称质数 解题思路 让n被i整除 i的值从2变到n 1 如果n能被2 n 1 之中任何一个整数整除 则表示n肯定不是素数 不必再继续被后面的整数除 因此 可以提前结束循环注意 此时i的值必然小于n N N Y n i 1 输入n i 2 i n 1 Y n被i整除 i a 输出不是素数 Y 输出是素数 N includeintmain intn i printf n scanf d includeintmain intn i printf n scanf d k sqrt n includeintmain intn i k printf n scanf d k sqrt n include includeintmain intn i k printf n scanf d k sqrt n include 例 求100 200间的全部素数 解题思路 使用上例的算法在前面例子中程序中只要增加一个外循环 先后对100 200间的全部整数一一进行判定即可 for n 101 n k 1 printf d n m m 1 if m 10 0 printf n 只对奇数进行检查 控制每行输出10个数据 例 译密码 为使电文保密 往往按一定规律将其转换成密码 收报人再按约定的规律将其译回原文 ABCDEFG WXYZ非字母字符保持原状不变输入一行字符 要求输出其相应的密码 解题思路 问题的关键有两个 1 决定哪些字符不需要改变 哪些字符需要改变 如果需要改变 应改为哪个字符处理的方法是 输入一个字符给字符变量c 先判定它是否字母 包括大小写 若不是字母 不改变c的值 若是字母 则还要检查它是否 W 到 Z 的范围内 包括大小写字母 如不在此范围内 则使变量c的值改变为其后第4个字母 如果在 W 到 Z 的范围内 则应将它转换为A D 或a d 之一的字母 c getchar 解题思路 问题的关键有两个 1 决定哪些字符不需要改变 哪些字符需要改变 如果需要改变 应改为哪个字符处理的方法是 输入一个字符给字符变量c 先判定它是否字母 包括大小写 若不是字母 不改变c的值 若是字母 则还要检查它是否 W 到 Z 的范围内 包括大小写字母 如不在此范围内 则使变量c的值改变为其后第4个字母 如果在 W 到 Z 的范围内 则应将它转换为A D 或a d 之一的字母 if c a c A c Z 解题思路 问题的关键有两个 1 决定哪些字符不需要改变 哪些字符需要改变 如果需要改变 应改为哪个字符处理的方法是 输入一个字符给字符变量c 先判定它是否字母 包括大小写 若不是字母 不改变c的值 若是字母 则还要检查它是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 桂花创新创业项目商业计划书
- 坚果即食小包装创新创业项目商业计划书
- 家禽冷链物流平台创新创业项目商业计划书
- 2025【合同范本】合作协议
- 2025年外协合同范本
- 2025年物流车辆维修保养合同范本
- 2025【合同范本】北京购房合同
- 2025年刑事诉讼法小结范本
- 2025广州幼儿园劳动合同范本
- 2025民间借款合同模板范本(合同示例)
- JT-T-1094-2016营运客车安全技术条件
- 村情要素模板
- MOOC 理性思维实训-华南师范大学 中国大学慕课答案
- 煤矿掘进知识课件
- 《陆上风电场工程设计概算编制规定及费用标准》(NB-T 31011-2019)
- 创业投资免责声明范本
- (高清版)TDT 1001-2012 地籍调查规程
- 办案审讯员培训课件模板
- 内部审计管理系统建设需求
- 员工绩效汇报
- 环卫所内勤工作事迹
评论
0/150
提交评论