for循环语句详解
来源:互联网 发布:阿里云重定向 编辑:程序博客网 时间:2024/04/27 09:49
1 for循环语句的应用规则
C语言中的for循环语句不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句。
1.1 for循环语句的格式
for(表达式1;表达式2;表达式3)语句;
这里边的“语句”就是循环体语句,若其中只有一条语句,可以不用花括号,若多于一条,则必须用花括号将这些循环体语句括起来。
1.2 for循环语句的执行过程
(1)先操作表达式1;
(2)操作表达式2,若其值为真(值为非0),则执行for语句中的循环体语句一次,然后执行下面第三步,若为假(值为0),则结束循环,转到第5步;
(3)操作表达式3;
(4)转回上面第2步骤继续执行;
(5)结束循环,执行for语句下面的语句。
要注意表达式1只执行一次!
通常,表达式1用来为循环变量赋初值,表达式2用来设置执行循环的条件,表达式3用来改变循环变量的值。所以for语句的格式也可以这样描述:
for(循环变量赋初值;循环条件;循环变量增值)语句;
2 fo与while语句的编程对比
通过结合例子,如求sum=1+2+3+…+100的和,来分别看一下for和while语句的编程效果。
首先用for循环语句来编程实现
main()
{
int i,sum=0;/*定义变量i,sum为基本整型,且为sum赋初值0*/
for(i=1;i<=100;i++)sum=sum+i;/*用for语句实现循环,循环体只有一句,可不用花括号*/
printf(“sum=%d”,sum); /*退出循环后的语句,即输出sum的值*/
}
再用while语句进行编程实现
main()
{
int i=1,sum=0; /*定义变量i,sum为基本整型,且为它们分别赋初值1和0*/
while(i<=100) /*执行循环体的判断语句*/
{
sum=sum+i; /*将变量i与其前各项之和累加*/
i++; /*循环变量增加1*/
} /*循环体多于一个语句时要用花括号括起来*/
printf(“sum=%d”,sum); /*退出循环,输出sum的值*/
}
对比以上程序,显然我们发现,用for语句在编程语句上更简单、方便,编程效率更高。而while语句在编程过程中,要书写更多的语句。
3 for语句的深入应用
(1)for语句一般形式中的表达式1可以省略,此时应在for语句之前给循环变量赋初值。注意省略表达式1时,其后的分号不能省略。如for(;i<=100;i++){…};
(2)表达式2也可以省略,即没有判断循环的条件,此时编译系统将循环条件默认为真,循环将无终止地循环下去,这种情况可以在循环体中设置条件控制循环。
例如:for(i=1;;i++)sum=sum+i;为死循环语句,若使其实现1+2+3+…+100后结束循环,则可以在循环体中加上控制条件:
for(i=1;;i++){if(i>100)break;sum=sum+i;}
(3)表达式3也可以省略,即没有设置用来改变循环变量的语句,循环将无终止地循环执行下去,但此时程序设计者可以在循环体中加上用来改变循环变量的语句。如:
for(i=1;i<=100;)
{sum=sum+i;
i++;/*循环变量增加1,改变循环变量的值*/
}
另外表达式3不一定都要写成如i++这样的形式,要根据循环变量的实际变化规律而定,如可以写成这样的形式:i=i+2或i=i*3…。
(4)可以省略表达式1和表达式3,只有表达式2即只给循环条件。此时可以在程序的适当位置对循环变量赋初值和改变循环变量的值。如:
int i=1,sum=0; /*定义变量i,sum为基本整型,且为它们分别赋初值1和0*/
for(;i<=100;)
sum=sum+i++; /*改变循环变量的值*/
(5)三个表达式都可以省略。
如:for(;;)语句;
即不设初值,没有判断条件(认为表达式2为真值),循环变量不增值,将无终止的执行循环体。在实际应用中程序设计者可以将这三个内容分写在程序的适当位置。
如:
main()
{
int i=1,sum=0; /*定义变量赋初值1和0*/
for(;;)
{if(i>100);{sum=sum+i++;}}/*为循环设置控制条件,改变循环变量的值*/
printf(“sum=%d”,sum);
}
(6)表达式1也可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式.且可以有多个,此时用逗号将其分隔开,如:
for(i=1,sum=0;i<=100;i++);/*可以为多个变量赋初值,用逗号分隔*/
{
sum=sum+i;
}
(7)当循环的次数不确定时,表达式2即控制循环的条件语句,其判断对象就不能是循环变量了。如:
已知s=1+2+3+…+n,求满足s>=1000的最小n值。
这个程序的循环执行的条件为“s<1000”,退出循环时n的值不知道是多少,所以循环条件的判断对象应该是s,其程序可以如下编写:
main()
{ int n,s; /*定义变量赋不赋初值*/
for(n=1,s=0;s<1000;n++) /*用for语句实现循环*/
s=s+n; /*将变量n与其前各项之和累加*/
printf(“n=%d”,n-1); /*,输出n的值*/
}
用while语句可以这样编写:
main()
{int n=1,s=0;
while(s<1000)
s=s+n++;
printf(“n=%d”,n-1);
}
上面这个程序循环的次数在编写程序时不能确定,遇到这种情况人们首先想到的是用while语句来实现循环,以为for语句无法实现,其实这是一种误解。在BASIC语言中for循环只能用在循环次数确定的循环当中,而C语言中for语句格式却有其特殊性,而应用更具灵活性。
- for循环语句详解
- C++ for循环语句详解
- 循环语句for语句
- 循环语句--for语句
- Java循环结构-for语句、while语句详解
- Java循环结构-for语句、while语句详解
- PHP循环语句详解 while, for, foreach, do while
- PHP循环语句详解 while, for, foreach, do while
- 循环语句 for
- For 循环语句(基础)
- for循环控制语句
- shell for循环语句
- for循环语句
- for语句双重循环
- for循环语句
- for while 循环语句
- 序列for循环语句
- 基础------for循环语句
- PL/SQL工具优化
- C++浅层与深层复制构造函数
- 10003 - UVa Online Judge
- linux下配置ip地址四种方法(图文方法
- 反思前行——工作后第一个模块复盘总结
- for循环语句详解
- ORACE之RANK()和dense_rank()函数
- Python分析处理本机各项数据并以chartdirector图形化展示
- ios basics 0.0:新建一个空模板应用文件,学习empty application 中的源代码作用
- 六 Gazebo学习总结之附加网格
- 电话号码归属查询
- 浅谈C++多态性
- android Intent <初步进入intent>
- 黑马程序员-第二十一天(Properties类)