------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
while,do……while和for循环的区别
一. while语句的一般形式为:while(表达式) {循环体}
其中表达式是循环条件,语句为循环体, while为当型循环。
while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。其执行过程可用下图表示。
while循环使用注意:
1、如果while只有一句话,这个时候可以省略大括号
while (i++ < 100) sum+=i;等价于
while(i<=100) { sum += i; //sum = sum+i; i++;}
2、while空语句问题,会造成死循环
while (1<3);
举例应用下while语句:
计算 1+2+3+.....+100 的和
//定义一个变量,存储当期执行的次数
int i=1,sum=0;
int n=0;
//假设从键盘上输入一个数,计算1+2+3+....+n 的和
printf("请输入一个数字:\n");
//从键盘上接受一个数
scanf("%d",&n);
while (i<=n) {
//用sum的值+i的值
sum = sum+i; //i = 1 sum = 1
//0+1, (0+1)+2
//让循环条件为假的控制
// i=i+1;
i++;
}
printf("1+2+3+....+%d=%d\n",n,sum);
return 0;
}
二.do-while
下面我们说下do-while
语句的一般形式为 do{循环体}while(条件);
它是直到型循环,先循环后判断,直到不满足条件,跳出循环
do-while语句之后要有分号结束,在编程中用的很少。
关于while和do while对比
1)当循环控制条件第一次判断不为假的时候
while 和 dowhile循环体执行的次数相同
2)当循环控制条件第一次判断为假的时候
while循环的循环体 执行 0 次
do while 执行1次
三.for循环
我们重点说下for:
for循环形式: for(表达式1;表达式2;表达式3)
语言中的for循环语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而 只给出循环结束条件的情况,它完全可以代替while语句.
for(表达式 1;表达式 2;表达式 3)语句
它的执行过程如下:
(1)先求表达式 1.
(2)求表达式2,若其值为真(值为非0),则执行for语句中指定的内嵌语句,然后执行下面第三步 做若为
假(值为0),则结束循环,转到第5步.
(3)求解表达式3
(4)转回上面第(2)步骤继续执行;
(5)结束循环,执行for语句下面的一个语句;
for(循环变量赋初值;循环条件;循环变量增值)语句
如
它的执行相当于
int i=1;while(1)
{sum=sum+1;
i++;
}
显然,用for语句更简单、方便。
说明:
(1)for语句的一般形式中的"表达式1"可以省略,此时应在for语句之前给循环变量赋初值.注意省略表达式1 时,其后的分号不能省略.如for(;i<=100;i++){....};
(2)如果表达式2省略 即不判断循环条件,循环无终止地循环下去,也就是认为表达式2始终为真.
例如:for(i=1;;i++){.....};
相当于
while(1)
{sum=sum+1;
i++;
}
(3)表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束.如:
{sum=sum+1;
i++;
}
这个例子的循环增量没有放在表达式三的位置 而是作为循环体的一部分 其效果是一样的.
(4)可以省略表达式1和表达式3,只有表达式2 即只给循环条件.
如
{
sum=sum+i;
i++;
}
这个相当于
whlie(i<=100)
{
sum=sum+i;
i++;
}
(5)三个表达式都可以省略,如:for(;;)语句
相当于
while(1)语句即不设初值 不判断条件(认为表达式2为真值)循环变量不增值,无终止的执行循环体.
(6)表达式1也可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式.如:
{
sum=sum+i;
}