目录
分支结构(选择结构)
C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,C语言是能够实现这三种结构的,其实我们如果仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种结构的组合。 我们可以使用 if 、 switch 实现分支结构。
1、分支 if
1.1 if语句
//VS2022,x64
#include<stdio.h>
int main()
{
int n = 1;
if (n) //非零为真,执行语句
{
printf("我是帅哥美女");
}
return 0;
}
在C语言中,0为假,非0表示真,也就是表达式的结果如果是0,则语句不执行,表达式的结果如果不是0,则语句执行。
1.2 else
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
if (n == 2) //判断用户输入的数字是否为 2
{
printf("你是猪");
}
else //如果你输入的不是2,则会执行else
{
printf("麻烦您输入2");
}
return 0;
}
使用 if...else 时,如果要同时控制多条语句,请使用大括号 {} 将代码括起来(当然控制一条语句也可以括,养成习惯)
1.3 嵌套if
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n); //不管你输入什么数字,你都是帅哥美女
if (n == 1)
printf("你是帅哥美女");
else if (n > 1)
{
printf("你是大帅哥大美女");
}
else //这里可以看出 n<1 的时候
printf("你是小帅哥小美女");
return 0;
}
有了嵌套 if 语句,就可以完成更多复杂逻辑的判断。
注意事项
1、如果有多个 if 和 else ,可以记住这样一条规则, else 总是跟最接近的 if 匹配。
2、只要带上适当的大括号,代码的逻辑就会更加的清晰,所以大家以后在写代码的时候要注意括号的使用,让代码的可读性更高。
2、分支 switch
2.1 switch语句
以例子来学习 switch 语句,例:输入1~7的数字,打印对应的星期几
#include<stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day) //判断day等于几,比如等于 1,就执行case 1
{
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;
}
break
switch 语句也是分支效果的,只有在 switch 语句中使用 break 才能在跳出 switch 语句,如果某一个 case 语句的后边没有 break 语句,代码会继续往下执行,有可能执行其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。
大家可以尝试在电脑上运行代码,把 break 删去会发生什么
2.2 default
在使用 switch 语句的时候,我们经常可能遇到一种情况,比如 switch 后的表达式中的值无法匹配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加入 default 子句。
我们在上面代码中加入 default ,如果你输入的不是1~7,系统将反馈 “输入错误”;
#include<stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
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;
default: //加入的 default 在这里!
printf("输入错误\n");
break;
}
return 0;
}
case 和 default 是没有顺序要求的,只是我们通常将 default 放在最后处理。
完