分支语句(选择结构)小结

目录

if语句

switch语句


if语句

1.单分支语句

语法结构:                 

   if(表达式)

                            语句;

例如:

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

if语句一次只能控制一条语句,若想要控制多条语句,需要加{}操作符。{}表示一个代码块。

例如:(若不加{},则只会执行printf("genius\n");)

int main()
{
	int a = 1;
	if (a == 1)
	{
		printf("genius\n");
		printf("为真\n");
	}
	return 0;
}

2.双分支语句

语法结构:

                     if(表达式)

                           语句1;

          else

                            语句2;

例如:(在C语言中,0表示假,非0(1、2、3......n)表示真)


int main()
{
	int a = 0;
	scanf("%d", &a);
	if (a == 0)
	{
		return 0;
	}
	else
	{
		return 1;
	}
}

例如:

int main()
//代码1
{
	int a = 0;
	scanf("%d", &a);
	if (0==a)
	{
		return 0;
	}
		return 1;
}

//代码2
{
	int a = 0;
	scanf("%d", &a);
	if (0 == a)
	{
		return 0;
	}
	else
	{
		return 1;
	}
}

代码1与代码2相比,虽然两者表达意思相同,显然代码2更美观,更利于理解。判断是最好将数值放前面,如if(0==a),这样在编写代码时,更利于编译器的检错提示,避免将判断写为赋值。(现在的编译器非常灵敏)。

例如将这里的==改为=,它会提示表达式的左端必须为可修改的左值(即变量),如果将数值放在右端,编译器会理解为赋值,则不会出现警告。这样的写法有助于我们养成良好的代码风格,良好的代码风格会是我们的一个加分项!!

3.多分支语句

语法结构:

                          if(表达式1)

                         语句1;

                                  else if(表达式2)

                          语句2;

             else 

                            语句3;

int main()
{
	int a = 0;//初始化
	scanf("%d", &a);
	if (a > 0)
	{
		printf("%d大于0",a);
	}
	else if (a < 0)
	{
		printf("%d小于0", a);
	}
	else
	{
		printf("%d等于0", a);
	}
	return 0;
}

4.if语句的嵌套

if语句内部语序单分支、双分支、多分支的嵌套

int main()
{
	int a = 0;
	scanf("%d", &a);
	if (0!=a)
	{
		if (a % 2 == 0)
			printf("偶数\n");
		else
			printf("奇数\n");

	}
	else
		printf("结束\n");
	return 0;
}

5.悬空else     

else的匹配:else是和它离的最近的if匹配

int main()
{
	int a = 0;
	int b = 2;
	if (1 == a)
		if (2 == b)
			printf("0\n");
	else
			printf("1\n");
	return 0;
}

 因此这段代码既不会输出1也不会输出0。如果将这段代码复制到vs编译器中(vs2019非常灵敏),编译器会自动调整代码,如下图所示:

可以看到else是与if(2==b)匹配的。(这里的a!=1,因此不会进入if循环,既不输出1,也不输出0),这个例子也说明我们需要拥有良好的代码风格。

switch语句

switch语句也是一种分支语句,常常用于多分支的情况。

switch语句语法结构:

                          switch(表达式)

                         {

                             case 常量表达式1:语句1;break;

                             case 常量表达式2:语句2;break;

                             case 常量表达式3:语句3;break;

                             .

                             .

                             .

                             case 常量表达式n:语句n;break;

                            (default:语句n+1;)

                          }

1.switch语法结构注意点

switch(表达式)—这里的的表达式只能是整型或整型表达式(可以是变量,但必须是整型)。例如下列代码都是正确表示方式


	int a = 2;//整型
	//short a=2;
	//long a=2;
	//long long a=2;
	
	switch(2)//整型常量
     //switch(a)  //整型常量
	//switch (a+a)//整型常量表达式
    int a = 0;//整型
	scanf("%d", &a);
	switch (a)//整型变量
    int a = 0;//整型
	scanf("%d", &a);
	switch (a+a)//整型变量表达式

 还有一种比较特别的情况,例如:

 原因:字符型存储的是ASCII码值,所以返回的也是一个整型,本质上还是整型变量,因此也可以执行。但是浮点数(单精度float、双精度double...)不是整型,因此不能执行。

2.break语句

break是结束标志, break语句的作用是用来跳过后面的case语句,结束switch语句,真正起到分支作用。

(这里也说明了case是switch语句的入口,当a==5时,是从case 5进入的)

break语句在switch语句中是可选的,即case后面可以不加break,根据实际要求加或不加。例如:

int main()
{
	int a = 0;
	scanf("%d", &a);
	switch (a)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("weekday\n");
		break;
	case 6:
	case 7:
		printf("weekend\n");
		break;
	}
	return 0;
}

即:输入1、2、3、4、5,则输出weekday;输入6、7,则输出weekend.

3.default语句

有时候,分支语句中情况比较多,而有些情况不需要考虑时,就需要用到default语句。例如:没有default语句时,输入表达式以外的值,则程序不会输出。

 

 4.switch可以嵌套使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值