文章目录
循环语句的种类
c语言中的循环语句有三种
1、for循环
2、while循环
3、do while循环
循环语句,当表达式正确的时候,循环继续,否则循环停止
循环语句是c语言中的循环结构
for语句的语法结构
for(表达式1;表达式2;表达式3)
{
循环语句;
}
//表达式1为初始化部分(初始化部分只会执行一次),用于初始化循环的变量
//表达式2为条件判断部分,用于判断循环什么时候终止
//表达式3为调整部分,用于循环条件的调整
代码实例:
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
//i初始化为1,i<=10判断条件为真进入循环,每次经过循环i++,直到i<=10为假
{
printf("%d ", i);
}
return 0;
}//打印出来的结果为1 2 3 4 5 6 7 8 9 10
注:for语句默认控制后面的一条语句,for循环中如果要控制多条语句需要添加{}
break在for循环中的作用
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if(i==5)//当i==5时
break;//跳出循环
printf("%d ", i);
}
return 0;
}//打印结果为1 2 3 4
作用:当循环碰到break时候,整个循环终止
continue在for循环中的作用
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)//当i==5时候
continue;//跳过本次循环
printf("%d ", i);
}
return 0;
}//打印结果为1 2 3 4 6 7 8 9 10
作用:打印结果没有5,说明continue跳过了本次的循环及后面的代码
for循环中常见的错误
循环内赋值,循环失控,陷入死循环
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
i = 5;//在循环内赋值
}
return 0;
}//循环失控,陷入死循环,除了第一个数字是1,后面一直打印6
//因为每次经过i=5;这个语句的时候,i都会被赋值为5,导致不会出现判断为假的情况,使得循环终止
建议:不可以在for循环体内修改循环变量,防止for循环失去控制
表达式中有些为空,导致结果和预期不一样
例子1
#include <stdio.h>
int main()
{
for (;;)
//for循环括号()中间的内容都可以省略,但是如果判断部分表达式省略就会导致死循环
{
printf("hehe\n");
}
return 0;
}//结果为死循环,一直打印hehe
建议:判断部分的表达式不可以省略
例子2
#include <stdio.h>
int main()
{
int j = 0;
int i = 0;
for (j = 0; j < 3; j++)
{
for (i = 0; i < 3; i++)//每次重新经过这个循环,i重新初始化为1
{
printf("hehe\n");
}
}
return 0;
}//打印出来的结果为9个hehe
如果我们把第二个循环中的i=0删除会产生什么效果
#include <stdio.h>
int main()
{
int j = 0;
int i = 0;
for (j = 0; j < 3; j++)
{
for (; i < 3; i++)//删除i=0
{
printf("hehe\n");
}
}
return 0;
}//打印出来结果为3个hehe
//因为当i++三次后,i没有被重新赋值,导致i一直==3,j循环就不起作用了
建议:初始化部分的表达式也不可以随便省略
for循环建议的写法
**建议:**for语句的循环控制变量的取值采用“前闭后开区间”写法
**注:**这种写法也不是必须的
代码实例:
#include <stdio.h>
int main()
{
int i = 0;
for (i = 0; i <10; i++)//i=0为左闭,i<10为右开
{
printf("%d ", i);
}
return 0;
}
为什么我们要这么写代码?
因为10可以代表某种特殊的意义,比如循环了10次
while语句的语法结构
while(表达式)
{
循环语句;
}
//如果表达式为真,循环语句被执行,否则不被执行
代码实例:
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)//判断条件为i<=10
{
printf("%d ", i);
i++;//每次循环后i+1
}
return 0;
}//打印出来的结果为1 2 3 4 5 6 7 8 9 10
break在while循环中的作用
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)//设置判断条件i==5
break;//跳出循环
printf("%d ", i);
i++;//每次循环后i+1
}
return 0;
}//打印出来的结果是1 2 3 4
作用:当循环碰到break时候,整个循环终止
continue在while循环中的作用
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)//设置判断条件i==5
continue;//跳过本次循环
printf("%d ", i);
i++;
}
return 0;
}//打印出来的结果为1 2 3 4 光标
作用:4后面出现了光标说明出现了死循环,说明continue跳过了本次的循环及后面的代码,但是不会i++,一直跳过本次循环,导致死循环
do while语句的语法结构
do
{
循环语句;
}while(表达式)
//先执行后判断,所以表达式至少执行了一次
代码实例:
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
} while (i < 10);//判断条件
return 0;
}//打印出来的结果为1 2 3 4 5 6 7 8 9 10
break在do语句中的作用
#include <stdio.h>
int main()
{
int i = 1;
do
{
if (i == 5)//设置判断条件i==5
break;//跳出循环
printf("%d ", i);
i++;//每次循环后i+1
} while (i < 10);
return 0;
}//打印出来结果为1 2 3 4
作用:当循环碰到break时候,整个循环终止
### continue在do语句的作用
#include <stdio.h>
int main()
{
int i = 1;
do
{
if (i == 5)//设置判断条件i==5
continue;//跳过本次循环
printf("%d ", i);
i++;//每次循环后i+1
} while (i <= 10);
return 0;
}//打印出来的结果为1 2 3 4 光标
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5FVQdo41-1639903371754)(C:\Users\fmshixiang\AppData\Roaming\Typora\typora-user-images\image-20211219164204424.png)]
作用:4后面出现了光标说明出现了死循环,说明continue跳过了本次的循环及后面的代码,但是不会i++,一直跳过本次循环,导致死循环