网站大量收购独家精品文档,联系QQ:2885784924

[数学]第3章 循环结构.ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[数学]第3章 循环结构

continue控制 ”继续”循环示例 sum=sum+i i++ 图3-18 程序3-12的流程图 for循环的条件 if与continue组合 结束 输出 i=n i=1 i%3==0||i%7==0 开始 定义变量 真 真 假 假 continue 3.7 多重循环 如果一个循环的循环体里面又使用了循环语句,就称为二重循环 ,二重循环的内循环中再有循环,就是三重循环,……。 【例3-13】有个同学想加深对二重循环运行机制的理解,打算让外层循环输出数字,内层循环输出字母,形成图3-20的样子。 【编程思路】使用双重循环, 外层循环变量 为i,内层循环变量为j,它们可以都是字符 型。外层循环体这样设计:先有一条输出 语句printf(“%d. ”,i);(按整型输出),表示 行号,然后是内层循环,循环变量j控制执 行6次语句printf(“%c ”,i-1+’A’); (按字符 型输出),然后是外层循环的输出换行语句。 1. AAAAAA 2. BBBBBB 3. CCCCCC ………… 图3-20 /* 程序3-13 */ #include stdio.h void main( ) { char i,j; for(i=1;i10;i++) { printf(%d. ,i); /* 输出行号 */ for(j=1;j=6;j++) printf(%c ,i-1+A);/* 输出一个字符,6次 */ printf(\n); } } 黄色的语句属于内层的 2. 双重循环的应用 【例3-15】用一百元钱买一百只鸡,公鸡、母鸡和小鸡都要买。公鸡每只5元,母鸡每只3元,小鸡一元3只,求每种鸡卖多少只? 【编程思路】设买公鸡x只、买母鸡y只、买小鸡z只,则据题意可以列出不定方程组: 令x为外层循环变量,y为内层循环变量,因为买一种鸡不能把所有的钱都花光,所以x的取值为1~19,y的取值为1~32。z由z=100-x-y计算得到。所以x、y、z将所有可能的组合全部穷举出来。 由于方程(2)里有一个分数系数1/3,所以x、y、z必须是整数,且z是3的倍数。所以当出现小数解的情况应当丢弃,或者采取计算措施避免出现小数解。 /* 程序3.15 */ #include stdio.h int main( ) { int x,y,z; printf(百元买百鸡问题解:\n); for(x = 1;x20 ;x++) /* 公鸡x取1-19 */ for(y = 1;y33;y++) /* 母鸡y取1-32 */ { z=100-x-y; /* 求小鸡z的只数 */ if( 5*x+3*y+z/3==100 z%3==0) /* x、y、z满足方程(2)且z须是3的倍数 */ printf(公鸡:%d\t母鸡:%d\t小鸡:%d\n,x,y,z); } } 多重循环 【补充例题】有一车牌,其数字部分的特点是前两位数字相同,后两位也相同。四位数字恰为一个两位数的平方。求这个车牌号码。 【编程思路】用循环变量i、j表示前后号码, 前两位便是(i*10+i)*100, 后两位则为(j*10+j),对于每个i值,j都可能是0—9的数字。这样用双循环可以形成4位数。这样的每个数又都可能是10—99的平方,所以形成的每个4位号码,都要用一个循环来检验。 部分编码 int i,j,k,numb1, numb2; for(i=1;i=9;i++) { numb1=i*1100; for(j=0;j=9;j++) { numb2=numb1+j*11; for(k=10;k100;k++) if(k*k==numb2) printf(“号码是%d,%d的平方\n,numb2,k); } } 补充:嵌套循环中,break中止那个循环? int i,j,k,numb1, numb2; for(i=1;i=9;i++) { numb1=i*1100; for(j=0;j=9;j++) { numb2=numb1+j*11; for(k=10;k100;k++) if(k*k==numb2) { printf(“号码是

文档评论(0)

jiupshaieuk12 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档