1、相关知识点相关知识点 5.4 用用for语句实现循环语句实现循环 5.4 用用for语句实现循环语句实现循环 1.for1.for语句的一般形式:语句的一般形式:for(表达式表达式1;表达式;表达式2;表达式;表达式3)循环体;循环体;分号切分号切记!记!关键字关键字表达式表达式1 1;while(while(表达式表达式2)2)循环体;循环体;表达式表达式3 3;2.for循环执行过程如下:循环执行过程如下:(1)计算表达式计算表达式1;(2)计算表达式计算表达式2,若其值为非,若其值为非0(循环条件成立),则转到第(循环条件成立),则转到第(3)步步执行循环体;若其值为执行循环体;若其值
2、为0(循环条件不成立),则转到第(循环条件不成立),则转到第(5)步步结束循环;结束循环;(3)执行循环体;执行循环体;(4)计算表达式计算表达式3,然后又转到第,然后又转到第(2)步步判断循环条件是否成判断循环条件是否成立;立;(5)结束循环,执行结束循环,执行for循环之后的语句。循环之后的语句。3.流程图:流程图:真真/Y假假/N表达式表达式2循环体循环体计算表达式计算表达式1计算表达式计算表达式3图图5-6 4.for语句最容易理解、最常用的形式:语句最容易理解、最常用的形式:for(循环变量赋初值;循环条件;循环变量修正循环变量赋初值;循环条件;循环变量修正)循环体;循环体;例如:用
3、for语句改进1+2+3+100的解决过程:int i,s;for(i=1,s=0;i=100;i+)s=s+i;说明:说明:for语句中表达式语句中表达式1,表达式,表达式2,表达式,表达式3可以省略其中的一个、可以省略其中的一个、两个,甚至三个表达式都同时省略,但是起分隔作用的两个,甚至三个表达式都同时省略,但是起分隔作用的“;”不能省略。具体体现为以下几点:不能省略。具体体现为以下几点:(1)如果省略表达式如果省略表达式1,即不在,即不在for语句中给循环变量赋初值,语句中给循环变量赋初值,则应该在则应该在for语句前给循环变量赋初值。语句前给循环变量赋初值。如:如:i=1;fact=1
4、;for(;i=100;i+)fact=fact*i;(2)如果省略表达式如果省略表达式2,即不在表达式,即不在表达式2的位置判断循环终止的位置判断循环终止条件,循环无终止地进行,也就是认为表达式条件,循环无终止地进行,也就是认为表达式2始终为始终为“真真”。(3)如果省略表达式如果省略表达式3,即不在此位置进行循环变量的修改,即不在此位置进行循环变量的修改,则应该其它位置(如:循环体)安排使循环趋向于结束的则应该其它位置(如:循环体)安排使循环趋向于结束的工作。工作。如:如:for(i=1,fact=1;i=100;)fact=fact*i;i+;(4)表达式表达式1可以是设置循环变量初值的
5、表达式(常用),也可以是设置循环变量初值的表达式(常用),也可以是与循环变量无关的其它表达式;表达式可以是与循环变量无关的其它表达式;表达式1,表达式,表达式3可以是简单表达式,也可以是逗号表达式。可以是简单表达式,也可以是逗号表达式。如:如:for(i=0,j=100;i=j;i+,j-)(5)表达式表达式2一般为关系表达式或逻辑表达式,也可以是数值一般为关系表达式或逻辑表达式,也可以是数值表达式或字符表达式,事实上只要是表达式就可以。表达式或字符表达式,事实上只要是表达式就可以。注:注:从上面的说明可以看出,从上面的说明可以看出,C语言的语言的for语句功能强大,语句功能强大,使用灵活,可
6、以把循环体和一些与循环控制无关的操作也使用灵活,可以把循环体和一些与循环控制无关的操作也都可以作为表达式出现,程序短小简洁。但是,如果过分都可以作为表达式出现,程序短小简洁。但是,如果过分使用这个特点会使使用这个特点会使for语句显得杂乱,降低程序可读性。建语句显得杂乱,降低程序可读性。建议不要把与循环控制无关的内容放在议不要把与循环控制无关的内容放在for语句的三个表达式语句的三个表达式中,这是程序设计的良好风格。中,这是程序设计的良好风格。解决问题解决问题1.1.工厂车间里,有一堆零件(工厂车间里,有一堆零件(100200之间),如果分之间),如果分成成4个零件一组的若干组,则多个零件一组
7、的若干组,则多2个零件;若分成个零件;若分成7个零件个零件一组,则多一组,则多3个零件;若分成个零件;若分成9个零件一组,则多个零件一组,则多5个零件;个零件;检品员要统计一下零件的总个数,大家该如何用检品员要统计一下零件的总个数,大家该如何用C语言编语言编程来帮助实现呢?程来帮助实现呢?算法思想:算法思想:(1)零件个数在零件个数在100200个之间,可定义一个整个之间,可定义一个整型变量型变量i来表示零件个数,所以来表示零件个数,所以i从从100递增递增1到到200,采用采用for循环处理;循环处理;(2)每个零件个数要求满足:分每个零件个数要求满足:分4个一组余个一组余2个,个,7个个一
8、组余一组余3个,个,9个一组余个一组余5个,即分别表示为:个,即分别表示为:i%4=2,i%7=3,i%9=5,而且这三个条件必须,而且这三个条件必须同时成立;同时成立;(3)用用if判断和逻辑与(判断和逻辑与(&)构造条件表达式。)构造条件表达式。源代码:源代码:#includemain()int i;/*定义变量表示零件个数定义变量表示零件个数*/for(i=100;i200;i+)/*个数从个数从100200*/if(i%4=2&i%7=3&i%9=5)/*三条件判断三条件判断*/printf(“%d”,i);运行结果:运行结果:课后作业课后作业在第在第4 4章中,已经给出了实现一道四则
9、运算的算法和参考源章中,已经给出了实现一道四则运算的算法和参考源代码,如果设计的数学软件,需要一次进行代码,如果设计的数学软件,需要一次进行2020道四则运算练道四则运算练习,该如何实现?习,该如何实现?在这里,对该问题只做相应的一点提示:在第在这里,对该问题只做相应的一点提示:在第4 4章的操作实章的操作实现现(一道题一道题)基础上,再加一层基础上,再加一层forfor循环来实现循环来实现2020道题,即道题,即for(for(i i=1;i=20;i+)=1;i=20;i+)请同学们课后自己解决!请同学们课后自己解决!养殖场里,有鸡有兔,鸡兔共有养殖场里,有鸡有兔,鸡兔共有3030只,脚共
10、有只,脚共有9090个,饲养员想统计一下鸡兔各有多少只,你个,饲养员想统计一下鸡兔各有多少只,你能编程解决吗?能编程解决吗?问题的深化问题的深化算法思想:算法思想:(1)(1)定义两个整型变量定义两个整型变量x x、y y分别表示鸡、兔的只分别表示鸡、兔的只数;数;(2)(2)鸡从鸡从1 1只开始考虑,最多只开始考虑,最多2929只,即只,即x x从从1 1递增到递增到2929,用,用forfor循环实现;而鸡兔的总和是循环实现;而鸡兔的总和是3030只,只,x x变化的同时变化的同时y y为为3030 x x;(3)(3)它们的脚为它们的脚为9090个时才满足条件,而且每只鸡个时才满足条件,
11、而且每只鸡2 2只脚,每只兔只脚,每只兔4 4只脚,即条件为只脚,即条件为x x*2+y2+y*4=904=90,用,用ifif语句判断。语句判断。参考源代码:参考源代码:#include#includemain()main()int x,y;int x,y;/*定义两变量分定义两变量分别表示鸡、兔的只数别表示鸡、兔的只数*/for(x=1;x=29;x+)for(x=1;x=29;x+)/*鸡的只数从鸡的只数从1 12929,依次,依次增增1 1*/y=30-x;y=30-x;/*兔的只数兔的只数*/if(x if(x*2+y2+y*4=90)4=90)/*条件判断条件判断*/printf(%d,%d,x,y);printf(%d,%d,x,y);运行结果:运行结果:
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。