while循环
while(表达式)
循环语句;
在while中表达式为真再执行循环语句。
我们在屏幕上打印1——10的数字试试:
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i++;
}
这就是while循环的基本语句。接下来我们看看while的break和continue。
break介绍
我们看看下面代码输出什么?
int main()
{
int i = 1;
while (i < 10)
{
if (i == 5)
{
break;
}
printf("%d ", i);
i++;
}
输出:
说明什么,说明只要在循环中遇到break,就会停止后面所有的循环,直接终止循环,break在while中用于永久停止循环的。
continue介绍
int main()
{
int i = 1;
while (i < 10)
{
if (i == 5)
{
continue;//跳过下面所有的代码,调整部分也跳过了
}
printf("%d ", i);
i++;
}
}
这样的代码会输出什么?
我们会看到程序进入了死循环,因为我们的continue在while中是跳过本次循环的,直接去while的括号部分进行判断,在上面代码中也跳过了 i++ 部分,所以 i 会一直等于5然后死循环。我们可以这样调整:
int main()
{
int i = 1;
while (i < 10)
{
i++;
if (i == 5)
{
continue;//跳过下面所有的代码,调整部分也跳过了
}
printf("%d ", i);
}
}
输出结果:
因为我们先i++,所以从2开始输出了。
总结:continue是用于中止本次循环的,continue后面的代码就不会再执行了,直接去while的括号部分进行判断。
for循环
基本语法:
for(表达式1;表达式2;表达式3)
循环语句;
表达式1:初始化部分,初始化变量。
表达式2:判断部分,判断循环什么时候停止。
表达式3:调整部分,循环条件的调整。
在屏幕上打印1——10:
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
}
i = 1就是初始化部分,i <= 10 判断部分, i++ 调整部分。当然判断部分必须为真再执行
两者的比较
我们可以看到while和for其实都差不多,都有循环的三个必要条件即初始化,判断,调整。
但是while循环三个部分很可能偏离较远,所以for循环使用的频率最高。
当我们知道明确的循环次数时用for循环好一点,不知道的时候用while循环好一点。
break介绍
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
{
break;
}
printf("%d ", i);
}
}
其实和while中的break意思一样。
continue介绍
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
{
continue;
}
printf("%d ", i);
}
}
也是和while中的意思相同,只不过for循环中的好像更容易理解点,continue直接到判断部分,然后自己执行了调整部分。注意:不可以在循环体内修改循环变量,防止失控。
for的变种
for循环的初始化,判断,调整部分都可以省略,但是不建议,容易有问题。
int main()
{
int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
printf("hehe\n");
}
}//输出9个
}
输出多少:
如果这样写呢
int main()
{
int i = 0;
int j = 0;
for ( ; i < 3; i++)
{
for ( ; j < 3; j++)
{
printf("hehe\n");
}
}//输出3个
}
这就是初始化省略的问题,省略了 j 的初始化,在第一次外层循环的时候 j 就已经等于3了。
do while 循环
基本语法:
do
循环语句;
while(表达式);
他的特点就是循环上来就执行一次,循环至少执行一次。
他的 break,continue 和while循环的意思一样,所以就不一一介绍了,给大家一个代码看看就行:
int main()
{
//特点是循环至少要循环一次,上来就直接循环一次
int i = 1;
do
{
if (i == 5)
{
break;
//continue; 打印到4然后死循环
}
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
大家可以自己试试打印。