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

分支结构

正文开始,让我们来回忆一下,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
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的分配与释放等问题。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的结构,每个节点包含数据和指向下一个节点的指针。 3. 栈:一种后进先出(LIFO)的数据结构,可以通过压入(push)和弹出(pop)操作进行数据的存储和取出。 4. 队列:一种先进先出(FIFO)的数据结构,可以通过入队(enqueue)和出队(dequeue)操作进行数据的存储和取出。 5. 树:一种存储具有父子关系的数据结构,可以通过中序遍历、前序遍历和后序遍历等方式进行数据的访问和修改。 6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有其优缺点,下面列举一些常见的数据结构的优缺点: 数组: 优点:访问和修改元素的速度非常快,适用于需要频繁读取和修改数据的场合。 缺点:数组的长度是固定的,不适合存储大小不固定的动态数据,另外数组在内存中是连续分配的,当数组较大时可能会导致内存碎片化。 链表: 优点:可以方便地插入和删除元素,适用于需要频繁插入和删除数据的场合。 缺点:访问和修改元素的速度相对较慢,因为需要遍历链表找到指定的节点。 栈: 优点:后进先出(LIFO)的特性使得栈在处理递归和括号匹配等问题时非常方便。 缺点:栈的空间有限,当数据量较大时可能会导致栈溢出。 队列: 优点:先进先出(FIFO)的特性使得

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值