C语言的分支详细介绍

分支

C语言中的分支结构由if语句或者switch语句构成。
#if语句
1.基本语法格式:

if ( 表达式 )
 语句

表达式成立(为真),则语句执行,表达式不成立(为假),则语句不执行。C语言中,0为假,非0表示真。例如:

#include <stdio.h>
int main()
{
 int num = 0;
 scanf("%d", &num);
 if(num % 2 == 1)//当模为1时,判断结果便为真,不为1时便为假。
 printf("%d 是奇数\n", num);
 return 0;
}

那么当这个输出的数是偶数时,又要如何判断并输出呢?
这时就需要 if…else… 语句了,语法形式如下:

if ( 表达式 )
 语句1
else
 语句2

那么对于一个整数是奇数还是偶数的判断就可以变成这样如下:

#include <stdio.h>
int main()
{
 int num = 0;
 scanf("%d", &num);
 if(num % 2 == 1)
 printf("%d 是奇数\n", num);
 else
 printf("%d 是偶数\n", num);
 return 0;
}

以上示例中,if与switch后面都只有一条语句,那么我们在面对多条语句的时候应该怎么办呢?
由于默认在 if 和 else 语句中都只控制⼀条语句,这时便需要借助其他符号。那就是使用 {} 将代码括起来,else 后也可以跟上⼤括号。如下:

#include <stdio.h>
int main()
{
 int age = 0;
 scanf("%d", &age);
 if(age >= 18) //if 后使⽤{} 控制多条语句-
 //这个块也叫:程序块,或者复合语句
 {
 printf("成年了\n");
 printf("可以交⼥朋友了\n");
 }
 return 0;
}

else的用法相同。
当所需条件很多时,可以对if进行嵌套,即else 可以与另⼀个 if 语句连⽤,构成多重判断。例如:

#include <stdio.h>
int main()
{
 int age = 0;
 scanf("%d", &age);
 if(age<18)
 printf("少年\n");
 else if(age<=44)
 printf("⻘年\n");
 else if(age<=59)
 printf("中⽼年\n");
 else
 printf("⽼年\n");
 return 0;
 

2.关于if与else中的注意点:悬空的else
如果有多个 if 和 else, else 总是跟最接近的 if 匹配。例如:

#include <stdio.h>
int main()
{
 int a = 0;
 int b = 2;
 if(a == 1)
   if(b == 2)
      printf("hehe\n");
 else
 printf("haha\n");
 return 0;
}

示例中的else所对应的是从上到下第二个if,并不是第一个与它正好对齐的if,else与if的对应遵循就近原则。
如果要将else与第一个if对应就应该加上{}。如下:

#include <stdio.h>
int main()
{
 int a = 0;
 int b = 2;
 if(a == 1)
 {
   if(b == 2)
   printf("hehe\n");
 }
 else
 {
   printf("haha\n");
 }
 return 0;
}```

3.if后面通常放入关系表达式以此来判断真假
关系表达式需要用到关系操作符:< > >= <= !=(不等于) ==
关系操作符的注意点:1.相等运算符==与赋值运算符 = 是两个不⼀样的运算符,不要混淆,否则会导致错误。 例如:

if (x = 3)

原意是 x == 3 ,但是不⼩⼼写成 x = 3 。这个式⼦表⽰对变量 x 赋值 3 ,它的返回值为 3 ,所以 if 判断总是为真。为了防⽌出现这种错误,可以将变量写在右边。如下:

if (3 == x)

注意点2.多个关系运算符不宜连用例如:i < j < k,按照我们的习惯这是正确的,但对于计算机而言,他将按照这个形式计算(i < j) < k,而i < j将返回 0 或 1 ,所以最终是 0 或 1 与变量 k 进行比较。
正确的写法应该是这样:i < j && j < k
关系表达式之间的关系连接用逻辑操作符:&& , || , !
&&:表示并且
||:表示或
!:逻辑取反运算符(改变单个表达式的真假)
例如:如果 flag 为真, !flag 就是假,如果 flag 为假, !flag 就是真
#switch语句
1.基本语句格式:

 switch (expression)
 {
 case value1: statement
 case value2: statement
 default: statement
 }

switch语句会根据不同的返回值,来执行不同的语句。值得注意的是,switch 后的 expression 必须是整型表达式,case 后的值,也必须是整形常量表达式。
2.与if进行对比
例如:输⼊任意⼀个整数值,计算除3之后的余数
if语句形式:

#include <stdio.h>
int main()
{
 int n = 0;
 scanf("%d", &n);
 if(n%3 == 0)
 printf("整除,余数为0\n");
 else if(n%3 == 1)
 printf("余数是1\n");
 else
 printf("余数是2\n");
 return 0;
}

换成switch语句后:

#include <stdio.h>
int main()
{
 int n = 0;
 scanf("%d", &n);
 switch(n%3)
 {
 case 0:
 printf("整除,余数为0\n"); 
 break;
 case 1:
 printf("余数是1\n"); 
 break;
 case 2:
 printf("余数是2\n"); 
 break;
 }
 return 0;
}

3.在书写语句格式时需要注意的是:
(i).case 和后边的数字之间必须有空格。
(ii). 每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。倘若没有break,语句便会逐条打印下来。以上面例子为例,假设输入7,该代码便会从case1开始向下开始进行,便会打印出"余数是1余数是2"(这边省略了换行)这个结果。
(iii)对于多个case的值,所需的结果是相同时便可以写成以下的形式:

#include <stdio.h>
int main()
{
 int day = 0;
 scanf("%d", &day);
 
 switch(day)
 {
 case 1case 2:
 case 3:
 case 4:
 case 5:
 printf("⼯作⽇\n");
 break;
 case 6:
 case 7:
 printf("休息⽇\n");
 break;
 }
 return 0;
}

4.关于switch语句中的default
default表示除了以上case所列举的值外,其他的值都会导致default语句的执行。例如前面打印星期的代码,如果 day 的输入不是1~7的值,如果我们要提示:输入错误,则可以这样完成代码:

#include <stdio.h>
int main()
{
 int day = 0;
 scanf("%d", &day);
 
 switch(day)
 {
 case 1case 2:
 case 3:
 case 4:
 case 5:
 printf("⼯作⽇\n");
 break;
 case 6:
 case 7:
 printf("休息⽇\n");
 break;
 default:
 printf("输入错误");
 break;
 }
 return 0;
}

其中值得注意的是,default与case之间的循序并没有严格的要求,即使default放在case语句的前面也不会影响输出的结果。

以上便是C语言分支的所以的内容,如有不妥之处恳请各位大佬指正,本人萌新一枚。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值