10、for语句
for语句是第三种循环语句。其格式为:for(语句1;判定条件;语句n)
{
语句2;
语句3;
...
语句n-1;
}
for语句和while语句可以完全相互替代,将上述for语句改为while语句,就是:
语句1;
while(判定条件)
{
语句2;
语句3;
...
语句n-1;
语句n;
}
for语句的好处在于可以将用于控制循环的变量的赋值、判定、自增放在一起,便于阅读。
如,上面的例子:
show_message(string(s));i = 1;
s = 0;
while(i <= 100)
{
s += i;
i += 1;
}
将其改为for语句,就是:
使用for语句将用于控制循环的变量i全部放在一起,当循环的内容较多时,便于阅读。s = 0;
for(i = 1;i <= 100;i += 1)
s += i;
show_message(string(s));
for循环中的变量i也可以被主体所使用。
11、break语句
break语句的作用是终止整个循环。例如,上述while的例子,你可以改成:
效果是一样的。i = 1;
s = 0;
while(true)
{
s += i;
i += 1;
if(i > 100)
break;
}
show_message(string(s));
把for语句改成使用break终止循环,如上述例子可以改成:
s = 0;
for(i = 1;true;i += 1)
{
s += i;
if(i > 100)
break;
}
show_message(string(s));
break一般写在if语句中,否则第一次循环就会执行break中断循环。一个循环中可以写多个break,如:
s = 0;
for(i = 1;;i += 1)
{
s += i;
if(i > 100)
break;
if(s > 1000)
break;
}
show_message(string(s));
注意,break语句只中断一层循环。如:
第一次循环时:i = 1,j = 1,h = 0+i+j = 2,h = 0;
for(i = 1;i <= 100;i += 1)
{
for(j = 1;j <= 100;j += 1)
{
h += i + j;
if(j > i)
break;
}
}
内层for语句继续循环:i = 1,j = 2,h = 2+i+j = 5,
此时j > i,执行break,注意此时程序只会从第二层循环跳到第一层循环,而不是终止整个循环。
跳到第一层循环后,i += 1,故i = 2,仍然满足i <= 100,所以再次进入到第二层循环。
12、continue语句
continue语句的作用是使循环体跳过一次代码执行。举个例子来理解:
这是计算1+2+3+...+100的和的代码,如果你要从中去除30,你可以这样写:s = 0;
for(i = 1;i <= 100;i += 1)
s += i;
这样当i为30时,执行continue,会跳过本次"s += i",但是并不会终止整个循环,而是i再自增变成31,再进行下一次循环。s = 0;
for(i = 1;i <= 100;i += 1)
{
if(i == 30)
continue;
s += i;
}
注意,由于代码是从上往下执行,所以continue只能跳过位于自己下方的代码。如:
在这里,continue对"t += 1"无法产生影响,t的最终值是1+2+3+...+100 = 5050,而s的最终值是1+2+3+...+29+31+32+...+100 = 5020。s = 0;
t = 0;
for(i = 1;i <= 100;i += 1)
{
t += i;
if(i == 30)
continue;
s += i;
}