分支语句(选择结构)

如果你好好学习,校招时拿一个好offer,走上人生巅峰。

如果你不学习,毕业等于失业,回家卖红薯。

这就是选择!


目录

1、if语句

if语句·其 1

 if 语句·其 2

 嵌套的 if 语句

复合语句(程序块)

 2、switch语句

在switch语句中的break语句

default子句

编程好习惯

总结:


1、if语句

if语句·其 1

语法结构:

if(表达式)

        语句;  

//代码演示:
#include <stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("未成年\n");
	}
	return 0;
}

if和英文中一样,是“如果”的意思 。 

 if语句会让程序执行如下处理。

判断表达式的值,如果结果不为0,则执行相应的语句。

在C语言中,0表示假,非0表示真。 

括号内对条件进行判断的表达式称为控制表达式。本程序中,如果输入小于18的数存放在变量age中,则控制表达式age<18为真,结果不为0,才会执行下列的语句。

printf("未成年\n");

而当输入的整数大于或等于18时,后续语句则不会执行,屏幕上不会显示任何内容。

 if 语句·其 2

语法结构:

if(表达式)

        语句1;

else

        语句2;

//代码演示
#include <stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("未成年\n");
	}
	else
	{
		printf("成年\n");
	}
	return 0;
}

当然,else 是“否则”的意思。

当表达式的值不为0的时候执行语句1,当表达式的值为0的时候执行语句2。

当输入的值>=18时,也要输出相应的信息,这样我们就能清晰地通过运行结果来判断了。

至此对这两种 if 语句进行一下总结。

如果只有当某条件成立时才进行处理,则使用不加 else的 if 语句;而如果是根据某条件的成立与否进行不同的处理,则使用带有 else 的 if 语句。

 嵌套的 if 语句

#include <stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("少年\n");
	}
	else if (age >= 18 && age < 30)
	{
		printf("青年\n");
	}
	else if (age >= 30 && age < 50)
	{
		printf("中年\n");
	}
	else if (age >= 50 && age < 80)
	{
		printf("老年\n");
	}
	else
	{
		printf("老寿星\n");
	}
	return 0;
}

虽然本程序中使用到了...else if...,但这并不是标准的语法结构。if 语句,顾名思义,是一种语句,因此 else 控制的语句也可以是 if 语句。

 if 语句中又嵌入了 if 语句,形成了嵌套结构。

复合语句(程序块)

在一对   {    }   内并排书写的语句称为复合语句或者程序块。其中不仅可以包含语句,也可以包含声明(注意要把声明放在最开始的位置)。

 2、switch语句

if 语句会根据对某个条件的判断结果,将程序的流程分为两支。而switch语句,则会将程序分为多个分支。

通过某一单一表达式的值,将程序分为多个分支的时候,可以使用switch语句,这样能让程序更简洁。

语法结构:

switch(表达式)

{

        语句;

}

括号内的控制表达式必须是整数类型。

在switch语句中的break语句

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

比如:

#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:
        printf("星期%d不存在\n",day);
        break;
	}
	return 0;
}

像“case 1:”这样用来表示程序跳转的标识称为标签。

case 和 1 之间必须有空格,不可不加空格写成 case1。1和 : 之间有没有空格都可以。

标签的值必须为常量,不可为变量。另外,不允许多个标签为同一个值。程序跳到该标签后,会按顺序执行其后的语句。

当程序执行到break语句时,switch语句执行结束。

break 有“打破”“脱离”之意。执行break语句之后,程序就会跳出将它围起来的switch语句。

若有一个标签其后没有break语句时,程序就会“落到”下一条语句上。

default子句

当控制表达式的判断结果与任何一个case都不一致的时候,程序就会跳转到"default:"继续执行。

所以,每个switch语句中只能出现一条default子句。

但是它可以出现在语句列表的任何位置。

编程好习惯

·在最后一个 case 语句的后面加上一条break语句。

  (可以避免以后在添加语句时忘记要先添加break语句。)

·在每个switch语句中都放一条default子句,甚至可以在后边再加一个break语句。 

总结:

·通过单一表达式来控制程序流程分支的时候,使用switch语句的效果通常要比使用if语句的更好。 

·if语句和switch语句统称为选择语句。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值