初识C语言:扩展世界观,选择语句之行

目录

一、什么是分支语句

二、分支语句的分类

2.1 if 语句

2.1.1 if语句的语法结构

单分支:

双分支:

多分支:

2.1.2 执行方式

2.1.3 else的匹配与{}

2.2 switch语句

2.2.1 switch语句的语法结构

2.2.2 执行方式

2.2.3 switch语句中的 break

2.2.4 default子句


一、什么是分支语句

如果条件满足才能做某件事情,如果条件不满足就做另外一件事情,或者什么也不做。分支语句又被称为“判断语句”,正因为有了判断,才让程序有了很多的分支选择。

二、分支语句的分类

2.1 if 语句

2.1.1 if语句的语法结构

单分支:

if(表达式)

{
        语句;
}

双分支:

if(表达式)

{
        语句1;

}
else

{
        语句2;
}

多分支:

if(表达式1)

{
        语句1;
}
else if(表达式2)//此处else if语句可以有多个

{
        语句2;
}
else

{
        语句3;
}

注 :当只有一条执行语句时可以省略语句体的大括号,但一般建议写上,使代码可读性更高。

2.1.2 执行方式

当表达式为真时则执行其语句体,为假则跳过其语句体,继续执行下一条语句。

0表示假,非0表示真

2.1.3 else的匹配与{}

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

提问:输出结果是什么?

正确答案是:什么也不输出。是不是有的同学会认为是输出hello,那么这里就要探讨一下else究竟和哪个if匹配?

当我们在编译器中输入这段代码时:

 从图片中可以看出编译器自动让else和离它近的if对齐了,确实如此,else是和它离的最近的if匹配的。这种问题在我们自己写代码的时候出现的少,但在做题时一定要多注意,谨防掉入else悬空的陷阱中。

如果我们想输出hello呢?

只需要加大括号即可

2.2 switch语句

2.2.1 switch语句的语法结构

switch(整型表达式)
{
   case 整形常量表达式:
    语句;
   case 整形常量表达式:
    语句;
   case 整形常量表达式:
    语句;
   ......
}

2.2.2 执行方式

当整形表达式值为整型常量表达式值时,则执行其语句。执行完该语句后,接着执行下面的语句。

示例:

#include<stdio.h>
int main()
{
	int day = 2;
	switch (day)
	{
	case 1:printf("星期一\n");
	case 2:printf("星期二\n");
	case 3:printf("星期三\n");
	case 4:printf("星期四\n");
	case 5:printf("星期五\n");
	case 6:printf("星期六\n");
	case 7:printf("星期天\n");
	}
	return 0;
}

它的编译结果为

如果我只想输出星期二怎么办?

这就要用到break语句了。 

2.2.3 switch语句中的 break

在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。 

break的作用是跳出当前循环或者代码块

示例:

#include<stdio.h>
int main()
{
	int day = 2;
	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;
	}
	return 0;
}

 那当day=8或者其他值的时候该怎么办呢?

2.2.4 default子句

 default:
    语句;

示例:

#include<stdio.h>
int main()
{
	int day = 9;
	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:
		printf("输入错误\n");
	}
	return 0;
}

 当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
每个switch语句中只能出现一条default子句。
可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子。

 :在每个 switch 语句中都放一条default子句是个好习惯 。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值