C语言分支语句(if,switch)

C语言学习


一、C语言中的语句是什么?

C语言中的语句可分为以下五类:

  1. 表达式语句。
  2. 函数调用语句。
  3. 控制语句。
  4. 复合语句。
  5. 空语句。

本章节主要介绍控制语句中的分支语句,那什么是控制语句呢?

        控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由语句定义符组成。

        C语言有九种控制语句。可分为以下三类:

                1.条件判断语句也叫分支语句:if 、switch ;

                2.循环执行语句:do while 、while 、for ;

                3.转向语句:break 、goto 、continue 、return ;

二、分支语句

1. if语句

if 语句语法结构

语法结构:
//选择
if (表达式)
	语句;
//双分支
if (表达式)
	语句1;
else
	语句2;
//多分支    
if (表达式1)
	语句1;
else if (表达式2)
	语句2;
else
	语句3;

如果表达式为真,则语句执行。

C语言中0为假!非0为真!

若条件成立,要执行多条语句,如何编写程序?

#include <stdio.h>
int main()
{
	if (表达式)
	{
		语句1;
		语句2;
		语句3;
		......
	}
	else
	{
		语句1;
		语句2;
		语句3;
		......
	}
	return 0;
}

这里的一对{ }就是一个代码块。

关于else

以下两组代码的打印结果相同吗?

代码示例1:

#include <stdio.h>

int main()
{
	int Num1 = 0;
	int Num2 = 2;
	if (Num1 == 1)
		if (Num2 == 2)
			printf("nice");
	else
			printf("bad");
	return 0;
}

代码示例2:

#include <stdio.h>

int main()
{
	int Num1 = 0;
	int Num2 = 2;
	if (Num1 == 1)
	{
		if (Num2 == 2)
		{
			printf("nice");
		}
	}
	else
	{
		printf("bad");
	}
	return 0;
}

代码1运行结果:

 

代码2运行结果:

bad

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

所以好的代码书写习惯很重要,看看下列代码的对比;

代码1:

#include <stdio.h>

int main()
{
	int x = 3;
	int y = 5;
	if (x>y) 
	{
		return x;
	}
	return y;
}

代码2:

#include <stdio.h>

int main()
{
	int x = 3;
	int y = 5;
	if (x>y) 
	{
		return x;
	}
	else
	{
		return y;
	}
}

代码2优于代码1,书写逻辑更清晰,具有更好的可读性。

代码3

#include <stdio.h>

int main()
{
	int Num = 3;
	if (Num == 6)//若少打一个 = 为(Num = 6)条件判断为非0,任然会执行代码块内的语句。
	{
		printf("luck");
	}
	return 0;
}

代码4

#include <stdio.h>

int main()
{
	int Num = 3;
	if (6 == Num)//若少打一个 = 为(6 = Num)变量不能为常量赋值,运行时编译器会报错。
	{
		printf("luck");
	}
	return 0;
}

代码4优于代码3,不容易出错。

if语句小练习

        输出1-100之间的奇数

#include <stdio.h>

int main()
{
	int Num = 0;
	while (Num <= 100)
	{
		if (Num %2 == 1)
			{
				printf("%d ", Num);
			}
		Num++;
	}
	
	return 0;
}

运行结果

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99

2. switch 语句

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

switch 语句语法结构

switch (整型表达式)
{
	语句项;
}

        语句项是啥?

        是一些case语句。

先来个代码示例:

#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("输入错误");
		break;
	}
	return 0;
}

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

break 语句的实际效果是把语句列表划分为不同的分支。

编程好习惯:

        在最后一个 case 语句的后面加上一条 break 语句。这样做可以避免在之前最后一个 case 语句后再加新的 case 语句时忘记在前 case 语句上添加 break 语句。

当 switch 表达式的值不匹配所有 case 标签的值时怎么办?

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

编程好习惯:

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

switch 语句小练习

下列代码的打印结果是什么?

#include <stdio.h>

int main()
{
	int n = 1;
	int m = 2;
	switch (n)
	{
	case 1:
		m++;
	case 2:
		n++;
	case 3:
		switch (n)//switch允许嵌套使用
		{
		case 1:
			n++;
		case 2:
			m++;
			n++;
			break;
		}
	case 4:
		m++;
		break;
	default:
		break;
	}
	printf("m = %d, n = %d\n", m, n);
	return 0;
}

运行结果:

m = 5, n = 3

原因:

n=1;进入switch 语句,先进入case 1:,m值变为3;

后没有 break 语句,接着进入case 2:,n值变为2;

                                接着进入 case 3:,进入嵌套 switch 语句,因为n值为2,

                                                             所以进入case 2:,m值变为4,n值变为3,遇break跳出;

                                接着进入 case 4:,m值变为5,遇 break 跳出。

printf 函数打印:m = 5,n = 3


总结

        以上就是今天要讲的内容,本文简单介绍了 if 和 switch 分支语句的使用,而C语言中还有许多语句可以完成复杂的逻辑运行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值