C语言分支结构

Hello,everyone! 害, forever好久没写博客了,最近有时间又来写写,纯属小白,写博客只为更好的记忆和理解,哈哈哈!也希望我自己的理解能给大家带来一点帮助!如有不足之处,请大家多多指教!
上一篇是直接放了一段代码,然后一步一步分析代码,走进C语言初识,这一篇我们就直接到分支结构,当然C初识,还有很多知识点,我会在后面的每一篇里遇到问题再详细介绍!

C语言分支结构

1. if分支语句
语法结构:
1.以下是单纯的 if 语句,如果表达式为真,执行语句;否则为假时,不执行语句;在C语言中0为假,非0为真。

if 结构:
if(表达式)
{
     语句;
}

if 结构程示例:

#include<stdio.h>
int main()
{
	int a=8,b=24;
	if(a<b)
	{
		printf("%d",b);
	}
	return 0;
}

2.以下是 if-else 语句和其流程图,该语句用于实现双层分支结构,根据表达式的值选择语句1或语句2中的一条进行执行。首先要求表达式的值为真时执行语句1;否则为假时执行语句2。

if-else 结构:
   if(表达式)
   {
      语句1;
   }
   else
   {
      语句2;
   }

zheshi在这里插入图片描述
if-else结构程序示例:

//输出两个数中最大的那个
#include<stdio.h>//头文件调用
int main()//主函数(main)
{
	int a=0,b=0;//定义整型(int)变量
	scanf("%d %d",&a,&b);//任意输入a,b两个值
	if(a>b)//如果a>b为真就执行输出a
	{
		printf("%d\n",a);//printf为输出函数
	}
	else//否则就执行输出b
	{
		printf("%d\n",b);
	}
	return 0;//返回int整型
}

3.以下是else-if语句以及流程图,该语句是实现多层分支语句,如果表达式1为真,就执行语句1,否则就开始往下判断表达式2;如果表达式2为真,就执行语句2,否则就继续往下执行表达式3;依次往下判断……

else-if结构:
if(表达式1)
{
	语句1;
}
else if(表达式2)
{
	语句2;
}
……
else if(表达式n-1)
{
	语句n-1;
}
else
{
	语句n;
}

在这里插入图片描述
else-if结构程序示例:

// 成绩转换,将百分制转换成五分制
#include<stdio.h>
int main()
{
	int score=0;
	scanf("%d",&score);
	if(score>=90 && score<=100)//&&该运算符是“并且”,“||”这是或运算符
	{
		printf("A\n");
	}
	else if(score>=80 && score<90)//else if后面可以写条件判断
	{
		printf("B\n");
	}
	else if(score>=70 && score<80)
	{
		printf("C\n");
	}
	else if(score>=60 && score<70)
	{
		printf("D\n");
	}
	else
	{
		printf("E\n");
	}
	return 0;
}

4.以下是if-else嵌套语句及流程图,该语句用于嵌套判断,但一般建议嵌套不要超过三层,嵌套过多,代码的可读性就会下降,后期维护也会提高难度。所以一般尽量避免嵌套过多。if嵌套时,要注意 if 和 else 的配对问题,C语言规定,else 总是与它前面最近的 if 配对。大家在最初书写的时候就要养成良好的编程习惯,对齐、空格和{ }成对书写都要注意。

if-else嵌套结构:
if(表达式1)
{
	if(表达式2)
	{
		语句1;
	}
	else
	{
		语句2;
	}
}
else
{
	if(表达式3)
	{
		语句3;
	}
	else
	{
		语句4;
	}
}

在这里插入图片描述
if-else嵌套结构程序示例:

//成绩等级判断
#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	if (n >= 60)
	{
		if (n >= 90 && n <= 100)//if-else 语句中嵌套else-if语句
		{
			printf("优秀\n");
		}
		else if (n >= 80)
		{
			printf("良好\n");
		}
		else if(n >= 70)
		{
			printf("一般\n");
		}
		else
		{
			printf("及格\n");
		}
	}
	else
	{
		if (n < 0)//if-else语句中嵌套if-else语句
		{
			printf("NOT FOUND\n");
		}
		else
		{
			printf("不及格\n");
		}
	}
	return 0;
}

以上就是C语言中的if分支语句及其结构,if 一般使用的比较多,无论是哪种 if 语句其实格式都是一样 if (表达式),如果表达式正确就执行,否则就不执行或执行分支。

2.switch分支语句:
switch也是一种分支语句,一般用于多且明确的情况,对于这种情况多的其实用 if 也可以完成,只不过需要很多 if 语句来完成,就显得程序很杂,很不好看,因此就有了 switch 分支语句。
以下是 switch (含有break)语句及流程图:break 代表终止的意思,遇到break则意味着终止当前的 switch 。

//switch(含break)结构
switch(常量表达式)
{
  case 表达式1:语句1;break;
  case 表达式2:语句2;break;
  case 表达式3:语句3;break;
  ……
  case 表达式n:语句n;break;
  default:语句n+1;break;
}

在这里插入图片描述
switch结构程序示例:

//星期查找
#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	switch (n)
	{
	case 1:printf("Monday\n"); break;//
	case 2:printf("Tuesday\n"); break;
	case 3:printf("Wednesday\n"); break;
	case 4:printf("Thursday\n"); break;
	case 5:printf("Friday\n"); break;
	case 6:printf("Saturday\n"); break;
	case 7:printf("Sunday\n"); break;
	default:printf("NOT FOUND\n");//这里break可有可无
	}
	return 0;
}

以下是 switch (不含break)语句及流程图:

//switch(不含break)结构
switch(常量表达式)
{
  case 表达式1:语句1;
  case 表达式2:语句2;
  case 表达式3:语句3;
  ……
  case 表达式n:语句n;
  default:语句n+1;
}

在这里插入图片描述
switch(不含break)结构程序示例:

#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	switch (n)
	{
	case 1:printf("Monday\n"); 
	case 2:printf("Tuesday\n"); 
	case 3:printf("Wednesday\n"); 
	case 4:printf("Thursday\n"); 
	case 5:printf("Friday\n"); 
	case 6:printf("Saturday\n"); 
	case 7:printf("Sunday\n"); 
	default:printf("NOT FOUND\n"); 
	}
	return 0;
}

如果n=3,输出示例为:
在这里插入图片描述
以上是 switch 分支语句。如果没有 break 就会出现 case 穿透,case 就会一直执行,直到遇见 break 结束或整个 switch 结束。
总结:(1) if 语句适用于复杂逻辑进行判断情形,而switch适用于对离散值进行判断的情形;
(2)if 和 switch 可以互相替换,switch 用于多分支时更加简洁。
今天的内容不太多,主要详细介绍分析了 if 相关语句结构和 switch 语句结构,希望对大家有所帮助,如果文章中有什么不足或错误之处,望大家批评指正。
最后送大家一句话:上山的人永远不要嘲笑下山的人,因为他们比你们更早辉煌过;山顶的人永远不要嘲笑山下的人,因为你永远不知道他们哪天就会登上山顶。

  • 32
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

<vince>

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值