《一》.分支部分
分支语句总的来说可以分为if语句和switch语句。
分支直白点讲就是一种选择关系,比如我去北京,可以选择火车,可以选择飞机,一个个不同的选择就是一个个分支。
(1) if 语句
1.1单if语句介绍
if语句语法形式如下
if(表达式)
语句
表达式为真,则执行相对应下面的语句,表达式为假则不执行。
举个例子
输入一个成绩a,判断是否为及格(大于等于60分为及格)
#include
int main()
{
int a=0;
scanf("%d",&a);
if(a>=60)
printf("及格");//只有输入的分数a大于60(即满足if括号里面的表达式)才会执行词条语句
}
1.2 else的配合
当然了,如果不大于60,那就是不及格了,这时候就得配合else形成另一个选择分支了
例如 输入一个成绩a,如果成绩大于等于60,则该成绩及格,否则不及格
#include
int main()
{
int a=0;
scanf("%d",&a);
if(a>=60)
printf("及格");
else
printf("不及格");
}
1.3 if的嵌套
有了if和else的配合就可以形成多个分支的嵌套了
else if 和if 还有else表达的都是一样的意思,三个语句一样用就可以构成多重嵌套判断
举个简单的例子,假设分数大于445分是二本线,而在大于445分基础上518分是一本线,一本线以上又可以分为(小于600分)的普通一本和(大于600分)的985,211学校
#include <stdio.h>
int main()
{
int score = 0;
scanf("%d", &score);
if (score > 445)
{
if (score < 518)
printf("二本");
else if (score > 518)
{
if (score < 600)
printf("普通一本");
else
printf("上985,211");
}
}
else
printf("继续努力学习");
}
!!!!!值得注意的是else并不是和哪个if对齐就是和哪个是一队,如果写代码很混乱分不清的时候,else是和自己最近的if相匹配的,不能乱点鸳鸯谱啊
///
(2)switch分支语句
其实switch可以算是if.....else语句的特殊进化板,它比if语句的各个分支更加简结,表达的逻辑意思其实差不多。if的小伙伴是else,而switch的小伙伴是case 和default
举个if语句和switch语句对照的例子
输入月份,打印对应的天数(不考虑闰年,二月固定28天)
如果是if语句那么就是这样写的
#include<stdio.h>
int main()
{
int month = 0;
scanf("%d", &month);
if (month == 1)
printf("31天\n");
if (month == 2)
printf("28天\n");
if (month == 3)
printf("31天\n");
if (month == 4)
printf("30天\n");
if (month == 5)
printf("31天\n");
if (month == 6)
printf("30天\n");
if (month == 7)
printf("31天\n");
if (month == 8)
printf("31天\n");
if (month == 9)
printf("30天\n");
if (month == 10)
printf("31天\n");
if (month == 11)
printf("30天\n");
if (month == 12)
printf("31天\n");
}
而switch是这样写的
int main()
{
int month = 0;
scanf("%d", &month);
switch (month)
{
case 1:
printf("31天\n");
break;
case 2:
printf("28天\n");
break;
case 3:
printf("31天\n");
break;
case 4:
printf("30天\n");
case 5:
printf("31天\n");
break;
case 6:
printf("30天\n");
break;
case 7:
printf("31天\n");
break;
case 8:
printf("31天\n");
break;
case 9:
printf("30天\n");
break;
case 10:
printf("31天\n");
break;
case 11:
printf("31天\n");
break;
case 12:
printf("30天\n");
break;
}
}
也许会有人有疑问,为什么要加这么多个break呢
switch英文是开关的意思,整个switch语句可以看作是一条河开闸放水了。而break可以看作是这条河流经途中的闸门,有了break闸门就可以截断河流,不让它继续往下流了(即不执行下面剩下的语句了)。而没有break拦着当然是一路往下继续执行了,直到结束,江河入海。
比如下面的例子,我的本意是只打印1月的天数就行,可是它却全打印出来了。这就是没装闸机break的原因,导致从上流一路流到下游最后入海。
int main()
{
int month = 0;
scanf("%d", &month);
switch (month)
{
case 1:
printf("31天\n");
case 2:
printf("28天\n");
case 3:
printf("31天\n");
case 4:
printf("30天\n");
case 5:
printf("31天\n");
case 6:
printf("30天\n");
case 7:
printf("31天\n");
case 8:
printf("31天\n");
case 9:
printf("30天\n");
case 10:
printf("31天\n");
case 11:
printf("31天\n");
case 12:
printf("30天\n");
}
}
在使⽤ switch 语句的时候,我们也可能遇到⼀种情况,⽐如 switch 后的表达式中的值⽆法匹
配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加⼊
default语句
switch (expression)
{
case value1: statement
case value2: statement
default: statement
}
switch 后边的 expression 的结果不是 value1 ,也不是 value2 的时候,就会执⾏
default ⼦句