前言:c语言中的循环语句就是用来描述生活中重复做的事情
while循环
优点:当不确定循环次数时
while(循环条件)
{
//要执行的代码
}
1.在进入while循环体之前会先判断循环条件能不能满足,如果满足就执行代码,不满足就不会执行
2.在每次执行完循环之后都应该接近循环条件,不然会出现死循环
打印9次 "每天都要学习"
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
int a = 10;
while (a > 1)
{
printf(" 每天都要学习\n");
a--;
}
return 0;
}
1.这里的循环条件是 a 大于 1,因为a是10所以a 大于 1成立,所以会执行while里面的代码,直到不满足循环条件为止
2.a从10开始 ,当执行到a--的时候,a就变成了9,第二次a就变成了8,当 a 大于 1 的条件不成立时循环结束
运行结果:
do-while循环
优点:第一次执行时不管循环条件是否成立都会执行一次代码
do
{
//要执行的代码
}while(循环条件);
1.do-while循环的特殊之处就在于,不管你是不是满足循环条件,都会先执行一次循环体里面的代码,代码执行完毕后在判断循环条件成不成立,如果成立就继续循环,不成立则结束循环
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
int a = 1;
do
{
printf(" 每天都要学习\n");
a++;
} while (a < 1);
return 0;
}
1.程序执行到do-while时不管循环条件成不成立直接执行循环体里的语句,当执行完一次后在判断循环条件,所以这里只会打印一次 "每天都要学习"
运行结果:
for循环
优点:初始化变量,循环条件,控制循环变量都在一起方便管理,更简洁
for(初始化变量;循环条件;控制循环变量)
{
//要执行的代码
}
1.看到这里就会很头疼了,初始化变量是什么?控制循环变量又是什么?用我自己的话来解释下
初始化变量其实就是给一个变量赋值
例如:int i = 0;这就是初始化变量
控制循环变量与循环条件有关系,我们知道决定一个循环执行了几次要看循环条件成立了几次
假设循环条件是 i < 9, i 如果不做任何调整这个循环就会一直执行下去,这里我们要是把 i 控制住那不就可以得到我们想要的结果了,控制循环变量就是控制这个 i 的值,让 i 每次都越来越接近这个循环条件从而达到控制循环次数的效果
这里的初始化变量,循环条件,控制循环变量都是可以省略掉不写的,但是分号一定要写
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
for (int i = 0; i < 10; i++)
{
printf("每天都要学习\n");
}
return 0;
}
运行结果:
如果我们不写for循环括号里面的会怎么样??
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
for ( ; ; )
{
printf("每天都要学习\n");
}
return 0;
}
运行结果:
为什么会死循环?
因为当循环条件被省略后,程序不知道我们要打印几次,所以他会一直打印一直打印,直到天荒地老。
所以当我们使用for循环时循环条件如果要省略,那可得好好想一想
break关键字
在之前的switch-case语句中就出现过break,在switch-case中当程序执行到break的时候就会结束当前的switch-case。当然有的人可能认为循环中的break和switch-case中的break不一样,不过我要告诉你的是,这两个其实是一模一样的。都是跳出当前的语句。
接下来我们用一小串代码做个演示
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
for (int i = 1; i < 9; i++)
{
//if ( i == 3)
//{
// break;
//}
printf("我饿了\n");
}
return 0;
}
我们来分析一下
这里先不考虑if语句,i 从 1开始直到 i = 9 的时候 ,i < 9 不成立,所以这里会打印 8 次"我饿了"
运行结果如下:
当我们加上if语句又会出现什么结果呢?
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
for (int i = 1; i < 9; i++)
{
if ( i == 3)
{
continue;
}
printf("我饿了\n");
}
return 0;
}
运行结果如下:
至于为啥只打印两次,且听我娓娓道来
当 i 的值等于3的时候,if 里面的条件表达式正好满足,所以会执行break
而break的作用又是跳出当前语句,所以就打印了两次 "我饿了"
可能又有人会说如果break后面还有语句怎么办
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
for (int i = 1; i < 9; i++)
{
if ( i == 3)
{
break;
printf("我还没吃饭啊\n");
}
printf("我饿了\n");
}
return 0;
}
运行结果如下:
这里我们可以看到break后面的语句没有被执行,所以如果break的后面有代码怎么办我只能说风光大办,当然这是个玩笑话
当我们写代码是一个避免break有代码,因为程序执行到break会跳出当前的语句
注意break只能在循环或者switch-case中使用
continue关键字
continue的意思就是继续,到底是怎么个继续法,还听我继续分解
还是刚才的代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
for (int i = 1; i < 9; i++)
{
if ( i == 3)
{
continue;
}
printf("我饿了\n");
}
return 0;
}
运行结果如下:
可以看到只打印了7次 "我饿了"
当 i == 3 ,if 表达式成立执行 continue,continue会把它后面的代码都给省略掉,然后在执行 i++,这时候 i 就变成了4,然后继续循环直到 i < 9 不成立
continue没有break那么暴力,它只会结束本次循环,而break是直接结束循环
如有错误联系我Q
3190507419