C语言是一种结构化的程序设计语言。
他有三种结构,分别为顺序结构,选择结构,循环结构。
顺序结构最简单,就是一个程序从头走到尾。
本篇文章重点描述的是分支语句
1分支语句
1.1if,else的分支语句。
在C语言中被 “;”隔开的就是一条语句。
比如
int a=0;
printf("a\n");
;
一个分号也是一条语句,是空语句。
作为一个分支语句,他可以有多种选择,比如已下这段代码。
#include<stdio.h>
int main()
{
int age = 10;
if (age <= 18)
printf("未成年\n");
else
printf("成年\n");
return 0;
}
这段代码就是有两种分支,也可以只有if一种分支,都是可以的,根据你的条件,选择不同的分支进入。
从运行结果可以看出,进入了第一条分支。
if和else只能控制一条语句。打个比方。
#include<stdio.h>
int main()
{
int age = 10;
if (age <= 18)
printf("未成年\n");
else
printf("成年\n");
printf("可以结婚");
return 0;
}
根据以上代码,运行结果应该只有未成年,但实际运行结果
这明显是不对的。
如果想要if和else控制多条语句,则需要使用{}
#include<stdio.h>
int main()
{
int age = 10;
if (age <= 18)
printf("未成年\n");
else
{
printf("成年\n");
printf("可以结婚");
}
return 0;
}
如果想要进行三条及以上的分支选择则需要使用else if
#include<stdio.h>
int main()
{
int age = 10;
if (age <= 18)
printf("未成年\n");
else if(age>18 && age<=50)
printf("青年\n");
else if(age>50)
printf("老年\n");
return 0;
}
值得注意的是,在条件中,不能直接使用18<age<=50,而需要使用“&&”操作符来表示与。
如果程序中出现了多条if语句,那么else则会默认与离他最近的一个if进行匹配。
#include<stdio.h>
int main()
{
int a = 0;
int b = 1;
if (a == 1)
if (b == 1)
printf("on\n");
else
printf("off\n");
return 0;
}
从以上代码来看输出结果应该是off。但
什么都没打印,因为实际的写法应该是
#include<stdio.h>
int main()
{
int a = 0;
int b = 1;
if (a == 1)
if (b == 1)
printf("on\n");
else
printf("off\n");
return 0;
}
else会跟离他最近的if进行匹配,而不是跟他对齐的if。
所以说保持良好的代码风格很重要。与人方便,于己方便。
另一种条件语句是switch.
1.2switch语句
switch的用法,switch可以嵌套使用,即在switch语句中再使用switch。
switch (整形表达式)
{
语句项;
}
1.2.1case语句项
语句项就是由case加整形常量表达式:
需要注意的是case后面的必须是整形常量,不可以使用变量,但是字符串也可以使用。
1.2.2break结束
在switch语句中,他是从头到尾运行的,case可以理解为是入口,从符合条件的case进入,一直运行到switch结束。所以要配合break来使用,break为出口,即跳出switch。
#include<stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("monday");
case 2:
printf("tuesday");
case 3:
printf("wedesday");
}
return 0;
}
当我们输入2时
通过结果可以看出,当进入case2后,一直运行,直到switch结束,所以需要break,当符合的条件运行完之后,跳出switch。
#include<stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("monday\n");
break;
case 2:
printf("tuesday\n");
break;
case 3:
printf("wedesday\n");
break;
}
return 0;
}
当然具体情况具体分析,当多个case运行结果一致,也可以不用加break。
1.2.3default
当switch中的所有case条件都不符合时,则使用default,使default的子句被执行。每一条switch语句中,只能出现一条default子句。但是他的位置不被限定,可以出现在列表的任何位置。