Hello! 友友们,大家好呀! 我是竹烟。
今天呢,我想分享一些有关C语言中分支和循环语句的知识。
1. 引言
C语言支持3种结构,即顺序结构、选择结构、循环结构。要想实现选择结构,我们就可以用分支(选择)语句,要想实现循环结构,我们就可以用循环语句。
2. 两种常见分支语句
2.1 if语句
2.1.1 if
if语句中,首先判断表达式是否成立,表达式成立则为真(非0),执行语句,表达式不成立则为假(0),不执行语句。
if(表达式)
语句;
2.1.2 if...else...
if(表达式)
语句1;
else
语句2;
(注: if语句只能控制一条语句,想要同时控制多条语句,就要用{}将代码括起来)
2.1.3 嵌套if
在if...else...语句中,else可以于另一个if语句连用,构成多重判断。
例如:输入两个整数,判断两个数的大小关系(结果可以是=、>、<),我们可以用if..else if...else这样的语句。
#include <stdio.h>
int main()
{
int a, b;
while (scanf("%d %d", &a, &b) != EOF)
{
if (a == b)
printf("%d=%d\n", a, b);
else if (a > b)
printf("%d>%d\n", a, b);
else
printf("%d<%d\n", a, b);
}
return 0;
}
有了嵌套if语句,我们就可以完成更多复杂的逻辑判断了。
2.2 switch语句
switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重的else if 改成更易用、可读性更好的形式。
switch (表达式)
{
case value1:语句1
case value2:语句2
default:语句3
}
上面代码中,根据表达式 expression 不同的值,执行相应的 case 分支。如果找不到对应的值, 就执行 default 分支。
注:
switch后的表达式必须是整型表达式。
case 后的值,必须是整形常量表达式。
如果没有符合条件的情况,那么执行default后的默认情况语句,default可以省略。
每⼀个case语句中的代码执行完成后,需要加上break,才能跳出这个switch语句。
例如:输入数字1~5打印“工作日”,输入6~7打印“休息日”,输入其他数字打印“输入错误,请输入1~7的数字”
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
default:
printf("输入错误,请输入1~7的数字\n");
break;
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
}
return 0;
}
3. 循环语句
3.1 while循环
C语言提供了3种循环语句,while就是其中一种,while语句的语法结构和if语句非常相似。区别在于while语句是可以实现循环效果的。whlie首先上来就是执行判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执行循环语句,语句执行完后再继续判断,是否进行下⼀次判断。
while(表达式)
语句;
例如:在屏幕上打印1~10的值
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0;
}
3.2 for循环
3.2.1 for循环语法形式
for 循环是三种循环中使用最多的。
for(表达式1;表达式2;表达式3)
语句;
表达式1:用于循环变量的初始化
表达式2:用于循环结束条件的判断
表达式3:用于循环变量的调整
3.2.2 for循环执行流程
首先执行表达式1初始化循环变量,接下来就是执行表达式2的判断部分,表达式2的结果如果为0,则循环结束;表达式2的结果如果不为0则执行循环语句,循环语句执行完后,再去执行表达式3 ,调整循环变量,然后再去表达式2的地方执行判断,表达式2 的结果是否为0,决定循环是否继续。 整个循环的过程中,表达式1初始化部分只被执行1次,剩下的就是表达式2、循环语句、表达式3在循环。
例如:在屏幕上打印1~10的值
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
3.3 do-while循环
在循环语句中do while语句的使用最少,它的语法如下:
do
语句;
while(表达式);
while 和 for 这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳 出循环;而do while循环则是先直接进入循环体,执行循环语句,然后再执行while后的判断表达式,表达式为真,就会进行下⼀次,表达式为假,则不再继续循环。所以在 do while 语句中循环体是至少执行⼀次的,这do while循环比较特殊的地方。
例如:在屏幕上打印1~10的值
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i = i + 1;
}while(i<=10);
return 0;
}