C语言将程序抽象成为三种结构:顺序结构,选择结构与循环结构。
顺序结构被运用于代码的编译与运行。代码被一行一行地有顺序地执行,其实就是应用了顺序结构。
而选择结构与循环结构,则需要程序员使用特定的语句来实现。
选择结构:
有两种基础语句可以实现选择结构:if语句和switch语句
if语句的分支只有两种:是与不是,因而单个if语句是单分支选择结构。
体现在程序中,if语句只判断参数是否为0(如果引入了boolean值,则会判断布尔值是真还是假)
#include <stdio.h>;
int main() {
int a = 0;
if (a) {
printf("是的\n");
}
else {
printf("不是\n");
}
a = 1;
if (a) {
printf("是的\n");
}
else {
printf("不是\n");
}
a = 114514;
if (a) {
printf("是的\n");
}
else {
printf("不是\n");
}
return 0;
}
以上代码的运行结果为:
当使用if语句进行嵌套时,便可以实现多分支
例如:输入一个人的年龄,判断这个人所在的年龄段。
#include <stdio.h>;
int main() {
int a = 0;
scanf("%d", &a);
if (0 < a && a < 18)
printf("少年");
else if (18 <= a && a < 45)
printf("青年");
else if (45 <= a && a < 60)
printf("中老年");
else if (60 <= a && a < 90)
printf("老年");
else if (a > 90)
printf("老寿星");
return 0;
}
需要注意的是:
1.“a大于1小于10”这种式子在C语言中并不写成1<a<10,而是应写成1<a && a<10,这才表示一个“并且”的逻辑。
//当计算机计算1<a<10时,会先判断1<a的真假,并相应地输出1或0,再用1或者0与10比较大小。
2.else只与距离它最近的if语句构成逻辑关系
switch语句本身就是多选择结构,每一个case就是一个分支选择,其余的情况用default涵盖
switch语句中的case决定了代码的入口:
int main() {
int a = 1;
switch (a)
{
case 1: printf("1\n");
case 2: printf("2\n");
case 3: printf("3\n");
case 4: printf("4\n");
}
}
以上代码的输出如图所示
需要注意的是,switch的case仅仅决定了代码的入口,并不决定代码的出口(即代码结束的地方),代码的出口由break语句决定。
例如:输入1-7的数字,用switch判读是工作日还是周末休息
int main() {
int a = 6;
switch (a)
{
case 1: ;
case 2: ;
case 3: ;
case 4: ;
case 5: printf("工作日");
break;
case 6: ;
case 7: printf("周末休息");
break;
}
此时引申出另一个问题,如果a的值不在1-7之间怎么办?
这就需要用到default语句
int main() {
int a = 6;
switch (a)
{
case 1: ;
case 2: ;
case 3: ;
case 4: ;
case 5: printf("工作日");
break;
case 6: ;
case 7: printf("周末休息");
break;
default: printf("数字不在1到7之间");
break;
}