目录
七.while、for、do-while使用break和continue有区别吗?
一、while和if语句很相似? 怎么区分?
1.基本语法
while语句基本语法:
while(表达式)
{
语句;//语句可有多条,当表达式为真1时才执行{}内的语句
}
if语句基本语法:
if(表达式)
{
语句;//语句可有多条,当表达式为真才执行{}内的语句
}
2.相似处:
语法结构相似
3.区别:
while语句可以起到循环的作用:只要while后的表达式为真就执行{ }内的语句,直到表达式为假,跳出当前while循环
if语句不会循环
二、while的执行流程?
执行流程分析:
先判断表达式的真假:若为真,执行{ }内的语句,执行完后再判断,直到表达式为假,跳出循环。 若为假,直接跳出当前当前while循环。
例如:
int i = 0
while(i < 3 )//先判断,为真则执行
{
printf("%d\n",i);
i++;
}
//输出结果应为 0 1 2
1.此时 i = 0, 先判断 i < 3 ,成立 ——>执行语句:打印 i (此时i = 0) ——>i++
2.此时 i = 1, 先判断 i < 3 ,成立 ——>执行语句:打印 i (此时i = 1)——>i++
3.此时 i = 2, 先判断 i < 3 ,成立 ——>执行语句:打印 i (此时i = 2)——>i++
4.此时 i = 3, 先判断 i < 3 ,不成立 ——>跳出当前while循环
三.for循环后括号内三个表达式的作用及其执行顺序?
for的语法:
for(表达式1; 表达式2; 表达式3)
{
语句;//可多条
}
作用:
1.表达式1:循环变量初始化
2.表达式2:判断条件:返回 真或假
3.表达式3:循环变量迭代:避免死循环
执行顺序:
第1种:表达式1——>表达式2——>执行语句——>表达式3
例如:
for(int i = 0; i < 2; i++)
{
printf("%d\n", i);
}
1.此时 i = 0 ——>判断 i < 2,成立——>打印 i (此时 i = 0)——>i++
1.此时 i = 1 ——>判断 i < 2,成立——>打印 i (此时 i = 1)——>i++
1.此时 i = 2 ——>判断 i < 2,不成立——>跳出当前while循环
第2种:表达式1——>表达式2——>直接退出当前for循环
例如:
for(int i = 0; i < 0; i++)
{
printf("%d\n",i);
}
1.此时 i = 0 ——>判断 i < 0,不成立——>退出当前while循环
四.do-while和while的区别?
1.基本语法
do-while:
do
{
循环体(语句);
}while(表达式);
while:
while(表达式)
{
循环体(语句);
}
2.区别
1.do-while先执行,再判断 ;while先判断,再执行
2.do-while至少会执行一次循环体
五.循环体内想执行多个语句的时候怎么办?
加大括号,将想执行的多个语句放在{ }里
六. break和continue的区别?
1.break 执行时,永久终止循环(终止break外的第一层循环)
2.continue执行时,跳过本次循环(跳过本次continue后的代码)
七.while、for、do-while使用break和continue有区别吗?
1.结论:
(1)while和for使用break产生的效果相同,使用continue产生的效果不同
原因:continue执行时不跳过for的表达式3
(2)while和do-while使用continue和break产生的效果相同
2.while使用break(for同理)
举例:
int i = 0;
while(i < 3)
{
if(i == 1)
{
break;//当i == 1时,循环终止
}
printf("%d\n",i)
i++;
}
执行流程:1. i = 0, i < 3成立——>i == 1不成立——>打印 i ,(i = 0)——>i++
2. i = 1, i < 3成立——>i == 1成立——>终止break所在的循环
3.while和for使用continue
(1)while使用continue:
例如:
int i = 0;
while(i < 3)
{
if(i == 1)
{
continue;//当i == 1时,跳过continue后的代码
}
printf("%d\n",i)
i++;
}
执行流程:1. i = 0, i < 3成立——>i == 1不成立——>打印 i ,(i = 0)——>i++
2. i = 1, i < 3成立——>i == 1成立——>本次跳过continue后的代码
——>既不执行打印 i ,也不执行 i++
3.此后死循环 i = 1, i < 3成立——>i == 1成立——>本次跳过……
(2)for使用continue:
例如:
for(int i = 0; i < 3; i++)
{
if(i == 1)
{
continue;//当 i == 1 时跳过continue后的代码
}
printf("%d",i);
}
执行流程:1. i = 0, i < 3成立——>i == 1不成立——>打印 i ,(i = 0)——>i++
2. i = 1, i < 3成立——>i == 1成立——>本次跳过continue后的代码
——>不打印 i ,但要执行 i++
3. i = 2 ,i < 3成立——>i == 1不成立——>打印 i ,(i = 0)——>i++
……
4.此后不会死循环,当表达式2为假则退出当前循环