分支和循环语句
文章目录
1、分支语句
1.1 if语句
语句结构:
if(表达式)
语句:
if(表达式)
语句1:
else
语句2:
//多分支
if(表达式)
语句1:
esle if(表达式)
语句2:
else
语句3:
0表示假,非0表示真。
表达式的结果为真,则执行语句。
示例:
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d",\n);
if(age<18)
printf("未成年\n");
else if(age<28);
printf("青年\n");
else if(age<38);
printf("壮年\n");
else if(age<58);
printf("中年\n");
else
printf("老年\n");
return 0;
}
如果条件成立,要执行多条语句时,将要执行语句,用{}
括起来。
#include <stdio.h>
int main()
{
if(表达式)
{
语句列表1;
}
else
{
语句列表2;
}
return 0;
}
❗️ else是和它最近的if匹配的。
1.2 switch语句
在switch语句中,我们没办法直接实现分支,需要搭配break来实现真正的分支。
例如:
#include <stdio.h>
int main()
{
int day = 0;
switch(day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期日\n");
break;
}
return 0;
}
#include <stdio.h>
int main()
{
int day = 0;
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");//day的值为1-5时,输出weekday
break;
case 6:
case 7:
printf("weekend\n");//day的值为6-7时,输出weekend
break;
}
return 0;
}
break语句的实际效果是把语句列表划分为不同的分支部分。
1.2.1 default子句
default:
与case:
属于同一级别
当switch
表达式的值不匹配所有case
标签的值时,就会执行default
子句后边的语句,所以每个switch
语句中只能出现一条dafault
子句。
2、循环语句
2.1 while循环
语句结构:
while(表达式)
{
循环语句;
}
在屏幕上打印1-10的数字。
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i++; // i=i+1;
}
return 0;
}
运行结果:
2.1.1 while语句中的break
break介绍:
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
break;
printf("%d ", i);
i++;
}
return 0;
}
运行结果:
从结果可以看出,没有打印5及5以后的数字。
总结:
break在while循环中的作用:
在循环中只要遇到break,就会停止后期的所有循环,直接终止循环。
所以:while中的break是用于终止循环的。
2.1.2 while循环中的continue
continue介绍:
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
continue;
printf("%d ", i);
i++;
}
return 0;
}
运行结果:
从结果可以看出,没有打印5及5以后的数字,但是循环没有结束。
总结:
Continue在while循环中的作用:
continue用于终止本次循环,也就是continue后边的代码不会再执行,
而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
2.2 for循环
语句结构:
for(表达式1;表达式2;表达式3)
{
循环语句;
}
表达式1为初始化部分,用于初始化循环变量的。
表达式2为条件判断部分,用于判断循环是否终止。
表达式3为调整部分,用于调整循环部分。
用for循环在屏幕上打印1-10的数字。
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
运行结果:
2.2.1 for循环中的break和continue
在for循环中也可以出现break和continue,它们的意义和在while循环中是一样的。
// 代码1
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
break;
printf("%d ", i);
}
return 0;
}
// 代码2
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
continue;
printf("%d ", i);
}
return 0;
}
2.2.2 for循环和while循环的对比
int i = 0;
// 实现相同的功能,使用while
i = 1; // 初始化部分
while (i <= 10) // 判断部分
{
printf("hehe\n");
i = i + 1; // 调整部分
}
// 实现相同的功能,使用while
for (i = 1; i <= 10; i++)
{
printf("hehe\n");
}
可以发现在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较远,这样查找修改就不够集中和方便。
所以: for循环的风格更胜一筹;for循环使用的频率也最高。
2.3 do…while循环
语句结构:
do
{
循环语句;
}while(表达式);
2.3.1 do语句的特点
循环至少执行一次,使用场景有限,所有不常使用。
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i = i + 1;
} while (i <= 10);
return 0;
}
2.3.2 do…while循环中的break和continue
#include <stdio.h>
int main()
{
int i = 1;
do
{
if (5 == i)
break;
printf("%d ", i);
i = i + 1;
} while (i <= 10);
return 0;
}
#include <stdio.h>
int main()
{
int i = 1;
do
{
if (5 == i)
continue;
printf("%d ", i);
i = i + 1;
} while (i <= 10);
return 0;
}
{
if (5 == i)
break;
printf("%d ", i);
i = i + 1;
} while (i <= 10);
return 0;
}
#include <stdio.h>
int main()
{
int i = 1;
do
{
if (5 == i)
continue;
printf("%d ", i);
i = i + 1;
} while (i <= 10);
return 0;
}