分支语句【if】 pk 【switch】

一、if语句

有三种形式:

① if(表达式)

      语句

int a=5;

if (a > 0)
 puts("大于0");


②  if(表达式)

        语句

     else

        语句

  

​
	int a=5;
	if (a > 0)
		puts("大于0");
	else
		puts("小于等于0");

​

③ 

if(表达式)

         语句

else if (表达式)

           语句

................(可以有多个else if )

else

          语句

int main() {

	int a;
	scanf("%d", &a);
	if (a > 0)
		puts("大于0");
	else if (a < 0)
		puts("小于0");
	else
		puts("等于0");

	return 0;
}

当if后面的表达式为或者不为0时,执行后面的语句,否则就往下走👇

int main() {

	int i = 5;
	if (i == 5)
		puts("真");
	if (i = 6)
		puts("不为0");
	if (i == 5)
		puts("i为5");

	return 0;

}

这里第①个if语句和第②个都会执行,因为第一个是判断是否相等,相等为真,执行,不相等为假;第二个是赋值,只要不是赋值为0,结果就不为0,都执行;第三个因为②if中已经给i赋值为6,所以i≠5,这个表达式为假,不执行。

 

语句是最简单的情况,这里的语句都可以换成用{ }的符合语句,这样可以执行多个语句,还能增强代码可读性,以及减少错误👇

	int a;
	scanf("%d", &a);
	if (a > 0) 
	{
		puts("大于0");
	}
	else if (a < 0)
	{
		puts("小于0");
	}
	else
	{
		puts("等于0");
	}

在if else中,else会匹配离它最近的if   👇

	int i = 5;
	if (i < 0)
		if (i > 0)
			puts("hhh");
		else
			puts("www");

在这种情况下,执行结果为空,因为else与第②个if匹配,第二个if属于第一个if的语句,不执行。

想要else执行只需加上个{ }就能解决,所以日常我们应该使用{}减少可能出现的错或者减少阅读不便。👇

	int i = 5;
	if (i < 0)
	{
		if (i > 0)
			puts("hhh");
	}
		else
			puts("www");




二、switch语句

基本结构为:

switch(整形表达式)

{

case 整形常量表达式:

        语句;

.............

}

​
#include <stdio.h>
//输出对应星期
int main() {

	int a;
	scanf("%d", &a);
	switch (a)
	{
	case 1:
		puts("星期1");
	case 2:
		puts("星期2");
	case 3:
		puts("星期3");
	case 4:
		puts("星期4");
	case 5:
		puts("星期5");
	case 6:
		puts("星期6");	
	case 7:
		puts("星期7");

	}


	return 0;

}

​

对于上述代码,当我们输入为6  输出的是 星期6、星期7;因为我们case只是提供一个入口,符合情况进入就会执行下面的所有,要想停止,需要引入break  👇

	switch (a)
	{
	case 1:
		puts("星期1");        break;
	case 2:
		puts("星期2");        break;
	case 3:
		puts("星期3");		  break;
	case 4:
		puts("星期4");		  break;
	case 5:
		puts("星期5");		  break;
	case 6:
		puts("星期6");	      break;
	case 7: 
		puts("星期7");	      break;

	}

 

switch语句还可以进行如下操作,多个case执行同一个语句;👇

例如:1~5  输出weekday                6~7 输出weekend

	int a;
	scanf("%d", &a);
	switch (a)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		puts("weekday");		  break;
	case 6:
	case 7: 
		puts("weekend");	      break;

	}

假如有个大马虎输入了8,没有与8匹配的选项,就会等到空,如果我们想让它执行一些出了case选项的东西,就用default 👇

	switch (a)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		puts("weekday");		  break;
	case 6:
	case 7: 
		puts("weekend");	      break;
	default:
		puts("请输入1-7");         break;

	}

这样只要输入的不是case包括的选项,就会执行default后面的语句

 

switch(整形表达式),如果换成double型表达式,就会报错;当你输入的判断型的表达式时a>6,这时就是真为1,假为0

case  整形常量 ,如果换成n,也会报错,因为n是变量;换成字符可以,因为字符存放的时候是以整数存放的;

break只能跳出自己所在的switch语句(所在的{ });👇

int main() {
	int i = 1;
	
	switch (i) {
	case 1:i++;
	case 2:
		switch (i)
		{
		case 1:i++;
		case 2:i++;
			break;
        case 3:i++;
		}

	case 3:i++;
	case 4:
		i = 10 + i;
		break;

	}
	printf("%d", i);

	return 0;

}

求 i 最后的值          

 

 

 

 

 

答案:14

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值