分支与循环之分支

我们可以使⽤ if 、 switch 实现分⽀结构。

1.if语句分支

      if 语句的语法形式如下:

if (条件){
      ...  
 } else if(条件){
    ...
 } else{
    ...
}

表达式成⽴(为真 或等于1),则语句执⾏,且不会进行下一个if判断

表达式不成⽴(为假或等于0),则语句不执⾏,会跳到下一个if进行判断,直到有一个if条件完成或else语句(else语句不是必要的)。

练习:输⼊⼀个⼈的年龄

如果年龄<18岁,打印"少年"

如果年龄在18岁⾄44岁打印"⻘年"

如果年龄在45岁⾄59岁打印"中⽼年"

如果年龄在60岁⾄89岁打印"⽼年"

如果90岁以上打印"⽼寿星"。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    int n;
    while(scanf("%d",&n) != -1){
	
    
	if(n<18) printf("少年\n");
	else if(n<=44) printf("青年\n");
	else if(n<=59) printf("中老年\n");
	else if(n<89) printf("老年\n");
	else printf("老寿星\n"); 
}
	  return 0;
}

可以看到输入 5 19 46 61 90 的运行结果分别是:

以上的if语句,我们可以看到if后面没有{},当if的执行语句只有一段时{}是可以省去的,但带上适当的⼤括号,代码的逻辑就会更加的清晰,所以⼤家以后在写代码的时候要注意括号的使 ⽤,让代码的可读性更⾼。

2.switch-case分支

除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。 switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重 的 else if 改成更易⽤、可读性更好的形式

让我们看看switch的语法:

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

上⾯代码中,根据表达式 expression 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值, 就执⾏ default 分⽀

需要注意的是:switch 后的 expression 必须是整型表达式 (n等未知数),而case 后的值,必须是整形常量表达式

举个例子:

如果if分支语句为:

#define _CRT_SECURE_NO_WARNINGS 1
#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-case分支则可以变为:

#define _CRT_SECURE_NO_WARNINGS 1
#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;
}

switch语句中的break:

以上代码中我们会发现每个case分支在执行完后,都会带有一个break,在 switch 语句中,使⽤ break 才能在跳出 switch 语 句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续玩下执⾏,有可能执⾏其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。

如果没有break会发生什么?

举个例子:

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

 case 1:
 printf("余数是1\n"); 

 case 2:
 printf("余数是2\n"); 
 break;
 }
 return 0;
}

我们输入7能得出我们发现 原本应该输"余数是1”,但因为case 1中没有break,则程序会接着往下运行,也就是case  2。

switch语句中的case和default的顺序问题

 在 switch 语句中 case ⼦句和 default ⼦句有要求顺序吗? default 只能放在最后吗?

其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实 际需求的就可以。 不过我们通常是把 default ⼦句放在最后处理的。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值