分支和循环还学不懂?!看这篇就够了!!!(分支篇)

分支结构

正文开始,让我们来回忆一下,C语言是一个结构化的程序语言。有顺序结构、选择结构、循环结构。那C语言可以通过什么来实现这些结构呢。
我们可以通过if、switch来实现分支结构,通过for、while、do while来实现循环结构。
这一篇文章我将会对分支结构所涉及的语句展开详细讲解

1. if语句

1.2 if…else语句

1.3 嵌套if

1.4 悬空else问题

2. switch语句

2.1 break用法

2.2 default用法

1.if语句
if语句的语法形式如下:

1 if(表达式)
2     语句

简单来说if语句就是进行判断,如果条件判断为真,在C语言中也表示为非0,则执行语句;反之,如果条件判断为假,即为0,则不执行语句。
实操一下(判断奇数):

1 #include<stdio.h>
2 int main()
3 {
4	int num = 0;
5	scanf("%d", &num);
6	if (num % 2 == 1)
7	{
8		printf("%d 是奇数\n", num);
9	}
10	return 0;
11 }

哈哈哈没说错吧是不是超简单,别光看着自己试试!!!
1.2 if…else
既然讲到了if语句肯定离不开else,我们已经通过if判断出来不是奇数,那我们要怎么才能更加清晰的表示是奇数还是偶数呢?
if…else语句的语法形式如下:

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

光说不练假把式来吧:

1 #include<stdio.h>
2 int main()
3 { 
4	int num = 0;
5	scanf("%d", &num);
6	if (num % 2 == 1)
7	{
8		printf("%d 是奇数\n", num);
9	}
10	else
11	{
12		printf("%d 是偶数\n", num);
13	}
14	return 0;
15 }

看出什么小差别了嘛?真是小天才,没错else后面没有表达式进行判断,敲重点!!!不要忽视这个小细节,else后边不需要接表达式!
1.3 嵌套if语句
当我想要构成多重判断的时候这个就可以派上用场了。还是同样的例子我们要先判断一个数一个数是否为正数,再判断是奇数还是偶数,并输出;如果不是正数则输出:非正数。

1 #include<stdio.h>
2 int main()
3 {
4	int num = 0;
5	scanf("%d",&num);
6	if (num > 0)
7	{
8		if (num % 2 == 0)
9			{
10          printf("偶数");
11          }
12		else
13          {
14			printf("奇数");
15          }
16	}
17	else
18  {
19		printf("非正数");
20  }
21	return 0;
22 }

一点点的把程序细化,原本看起来好像很难的程序是不是简单起来了呢。
1.4 悬空else问题
这一次让我们先看一段代码

1 #include<stdio.h>
2 int main()
3 {
4	int a = 0;
5	int b = 0;
6	if (a == 1)
7		if (b == 2)
8			printf("hehe\n");
9		else
10			printf("hhh\n");
11	return 0;
12 }

这段代码最后会打印出来什么呢?答案揭晓: 什么都不会打印
敲重点!!!请各位未来的技术大牛们记住一个规则,else总是跟最接近的if配对。
如果我们把代码修改一下呢:

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

这样是不是一下就看懂了。在编写代码的过程中要带上适当的大括号,代码的逻辑会更加清晰,各位在写代码时要注意括号的使用,让代码的可读性更高。
2. switch语句
在我们的实际生活中,我们需要判断的东西很繁杂,比如我们像判断1-7中某一个数对应的是星期几,我们如果用if语句去实现效率太低了。switch语句就会帮助我们提高效率。
switch语句的语法形式如下:

1 switch(表达式)
2 {
3 case 常量1:语句1
4 case 常量2:语句2
7 }

接下来我为各位展示一段代码去实现我上面所说的星期几的对应:

1 #include<stdio.h>
2 int main()
3 {
4	int day = 0;
5	scanf("%d",&day);
6	switch (day)  //整型表达式
7	{
8	case 1:
9		printf("星期一\n");
10		break;
11	case 2:
12		printf("星期二\n");
13		break; 
14	case 3:
15		printf("星期三\n");
16		break;
17	case 4:
18		printf("星期四\n");
19		break;
20	case 5:
21		printf("星期五\n");
22		break;
23	case 6:
24		printf("星期六\n");
25		break;
26	case 7:
27		printf("星期日\n");
28		break;
29	}
30	return 0;
31 }

是不是要比if语句方便很多!需要注意的是 case后面的数字要有空格且必须是整形常量表达式。
2.1 break的用法
如果上边的代码我们的需求发生变化
1 输入1-5,输出的是工作日;
2 输入6-7,输出的是休息日。
那么参考代码如下:

1 #include<stdio.h>
2 int main()
3 {
4	int day = 0;
5	scanf("%d",&day);
6	switch (day)
7	{
8	case 1:
9	case 2:
10	case 3:
11	case 4:
12	case 5:
13		printf("工作日\n");
14		break;
15	case 6:
16	case 7:
17		printf("休息日\n");
18		break;
19	}
20	return 0;
21 }

这样就可以简单的实现我们的要求了,我们可以根据实际情况决定代码中是否要使用break,在哪里使用。敲重点!!!每一个case语句中的代码执行完成后,需加上break,才能跳出这个switch语句。
2.2 default的用法
在使用switch语句的时候,我们经常可能遇到一种情况,比如switch后的表达式中的值无法匹配代码中的case语句时,这时候可以在switch语句中加入default子句。

1 switch(expression)
2    case value1: statement
3    case value2: statement
4  default:statement
5 }

我们拿前面那个打印星期的练习来举例:

1 #include<stdio.h>
2 int main()
3 {
4	int day = 0;
5	scanf("%d",&day);
6	switch (day)
7	{
8	case 1:
9	case 2:
10	case 3:
11	case 4:
12	case 5:
13		printf("工作日\n");
14		break;
15	case 6:
16	case 7:
17		printf("休息日\n");
18		break;
19  default:
20      printf("输入错误");
21	}
22	return 0;
23 }

这样就可以更加精细化我们的代码啦。
小课堂!!!switch语句中的case子句和default子句没有顺序要求,只要你的顺序满足实际需求就可以,不过我们通常是把default子句放在最后处理的。
公主王子们,要多自己敲代码实践一下哟,下一篇我将会为大家继续分享循环篇。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值