C语言中的分支语句

分支语句
(1)if
(2)switch
在C语言当中,由一个分号;隔开的就是一条语句.比如:

printf("Hello World!\n");

分支语句就像是选择,不同的选择通往不同的方向,也就产生了不同的分支.先来看if语句的语法结构.
(1)

	if(表达式)
		语句;

(2)

	if(表达式)
			语句1;
	else 
			语句2;

(3)

		if(表达式1)
				语句1;
		else if(表达式2)
				语句2;
		else
				语句3;

如果表达式的结果为真,则语句1执行,否则表达式2执行.
在C语言中,0表示假,非0表示真.(如果表达式的值为0,表示假.如果表达式的值为非0,表示真)
这里要注意,如果if语句后面没有大括号,此时if对应的代码就是紧挨着if语句的下一句.因此,如果我们要执行多条语句,应该使用如下代码块.

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

这里一堆{ }就是一个代码块.
接下来看switch语句
switch语句也是一种分支语句.常常用于分支情况比较多时,比如:
输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期七
利用前面提到过的if…else if…else if…,我们很容易实现如上的要求,但形式会过于复杂,读程序时也会比较混乱,所以我们就要考虑其他的语法形式,也就是switch语句.

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

其中的语句项就是:

case 整型常量表达式: 语句;

例如

case 1 : printf("星期一\n");

同时还要注意的一点是,在switch语句的使用中,我们无法直接实现分支,必须要搭配break使用,使得程序该结束时就跳出循环,比如下面的例子:

#include <stdio.h>
int main(){
	int day = 0;
	switch(day){
		case 1 : 
			printf("星期一");
			break;
		case 2 :
			printf("星期二");
			break;
		case 3: 
			printf("星期三");
			break;
		case 4 :
			printf("星期四");
			break;
		case 5 : 
			printf("星期五");
			break;
		case 6: 
			printf("星期六");
			break;
		case 7: 
			printf("星期七");
			break;
		default:
		printf("您的输入有误!\n");
		break;
	}
	return 0;
}

switch语句使用时要注意:
1.break不能遗漏;
2.switch填的变量必须是一个整数;(这使其应用场景较少)
3.case语句这里是只能填写一个整型常量.
关于switch语句的使用这里在做一点补充,假如我们该程序的要求变了,要求我们输入1-5输出weekday,而6-7输出weekend.此时我们的代码应该这样写:

#include <stdio.h>
int main(){
	int day = 0;
	switch(day){
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
			printf("weekday\n");
			break;
		case 6:
		case 7:
			printf("weekend\n");
			break;
		default:
			printf("您的输入有误!\n");
			break;
	}
	return 0;
}

如果用到我们之前学过的逻辑或(||),这个程序也可以用if…else来实现

if (day == 1 || day == 2 ||day == 3 ||day == 4 ||day == 5){
	printf("weekday\n");
}

如果表达的值域与所有的case标签的值都不匹配,所有的语句都会被跳过,程序不会终止也不会报错,这种情况在C语言中并不认为是错误.所以当我们不想忽略不匹配所有标签的表达式的值,我们就要在语句列表中增加一条default子句,当switch表达式的值并不匹配所有case标签的值时,这个default:子句后面的语句就会执行.
因此,在每个switch语句中都放一条default子句是个好习惯,甚至可以在后边加一个break.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值