C语言基础-分支结构

本文深入解析if语句与switch语句在编程中的应用与区别,通过实例展示如何根据分支数量和代码量选择合适的控制结构,旨在提高编程效率与代码可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、if语句

使用格式:

if(表达式/常量/变量)
{
	语句块1;
}
//先计算小括号中的值
//                  如果为真(1)--->会执行大括号中的语句
//                  如果为假(0)--->不会执行大括号中的语句
例子:

/*猜数字游戏:输入一个数字,判断是不是等于5,如果等于5打印“恭喜你”,不是5打印“很可惜”*/
#include <stdio.h>
int main()
//先定义变量
{
	int num = 0;
//提示用户输入一个数
	printf("请输入一个数字:\n");
//接收用户输入的数
	scanf("%d",&num);
//判断这个数是否等于5
	if(num == 5)
		{
			printf("恭喜你!\n");
		}
//如果等于5  提示  恭喜你
	if(num != 5)
		{
			printf("很可惜!\n");
		}
//如果不等于5  提示  很可惜
return 0;
}
//
//
if语句的高级用法:

if(表达式1)
{
	语句块1;//表达式1为真
}else if(表达式2)
{
	语句块2;//表达式1为假,表达式2为真
}else if(表达式3)
{
	语句块3;//表达式1为假,表达式2为假,表达式3我真
}else
{
	语句块4;//表达式1为假,表达式2为假,表达式3为假
}
高级用法的例子:

/*输入一个属于0-100的成绩,按0-59(E),60-69(D),
70-79(C),80-89(B),90-100(A)分成几个等级*/
#include <stdio.h>
int main()
{
//定义变量,用来保存用户输入的分数
	int score = 0;
//提示用户输入分数
	printf("请输入一个分数:\n");
//接收用户输入的分数
	scanf("%d",&score);
//判断分数是否合法(小于0或者大于100都不合法)
	if(score <= 0||score >= 100)
	{
		printf("您输入的分数不合法,请重新输入\n");
	}
//分数合法以后,判断等级
	else if(score <= 59)
	{
		printf("E\n");
	}
//E级
	else if(score <= 69)
	{
		printf("D\n");
	}
//D级
	else if(score <= 79)
	{
		printf("C\n");
	}
//C级
	else if(score <= 89)
	{
		printf("B\n");
	}
//B级
	else
	{
		printf("A\n");
	}
//A级
return 0;
}

二、if...else语句

使用格式:

if(表达式)
{
	语句块1;
}
else
{
	语句块2;
}
//如果表达式为真,则执行语句块1,否则执行语句块2
例子:

/*猜数字游戏:输入一个数字,判断是不是等于5,如果等于5打印“恭喜你”,不是5打印“很可惜”*/
#include <stdio.h>
int main()
//先定义变量
{
	int num = 0;
//提示用户输入一个数
	printf("请输入一个数字:\n");
//接收用户输入的数
	scanf("%d",&num);
//判断这个数是否等于5
	if(num == 5)
		{
			printf("恭喜你!\n");
		}
//如果等于5  提示  恭喜你
	else
		{
			printf("很可惜!\n");
		}
//如果不等于5  提示  很可惜
return 0;
}
if...else嵌套格式:

if(表达式1)
{
	语句块1;
}
else
{
	if(表达式2)
	{
		语句块2;
	}	
	else
	{
		语句块3;
	}
}
//如果表达式1为真,执行语句1
//如果表达式1为假,执行表达式2。如果表达式2为真,执行语句块2
//                              如果表达式2为假,执行语句块3
if...else嵌套例子:

/*猜数字游戏:输入一个数字,判断是不是等于5,
如果等于5打印“恭喜你”,如果大于5提示“大于5了!”,如果小于5提示“小于5了!”*/
#include <stdio.h>
int main()
//先定义变量
{
	int num = 0;
//提示用户输入一个数
	printf("请输入一个数字:\n");
//接收用户输入的数
	scanf("%d",&num);
//判断这个数是否等于5
	if(num == 5)
		{
			printf("恭喜你!\n");
		}
//如果等于5  提示  恭喜你
	else
		{
			if(num>5)
			{
				printf("大于5了!\n");
			}
			else
			{
				printf("小于5了!\n");
			}
		}
//如果不等于5  提示  很可惜
return 0;
}
三、switch语句

使用格式:

switch(表达式)
{
	case 常量表达式1: 语句1;
	case 常量表达式2: 语句2;
	...
	case 常量表达式n: 语句n;
	default: 语句n+1;
}
/*计算表达式的值,并逐个与其后的常量表达式的值比较,当表达式的值与某个
常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行执行
后面所有case后的语句。如表达式的值与所有case后的常量表达式的值不相同
,则执行default后的语句*/
注意事项:上述格式会出现case穿透(某个case语句执行完成后,并没有结束,而直接向下执行其他的case语句),为防止这种现象,可在每个case语句的最后加上break;

switch条件表达式的类型:

a)整型变量

b)整型常量

c)返回值是整型的表达式

d)还可以放可以转换为int类型的表达式

case语句注意事项:

a)可以是常量或常量表达式

b)case语句之后,默认的第一句话不能定义变量(如果加上大括号可以定义)

例子:

/*从键盘输入一个月份,输入对应季节
   12-2 冬季
   3-5  春季
   6-8  夏季
   9-11 秋季*/
#include <stdio.h>
int main()
{
	int month = 1;//定义变量
	printf("请输入月份:\n");//提示输入数据
	scanf("%d",&month);//接收数据
	if(month<=0||month>=12)
	{
		printf("您输入的不合法\n");
	}
	switch(month)
	{
		case 12:
		case 1:
		case 2:
			printf("冬季\n");break; 
		case 3:
		case 4:
		case 5:
			printf("春季\n");break;
		case 6:
		case 7:
		case 8:
			printf("夏季\n");break;
		case 9:
		case 10:
		case 11:
			printf("秋季\n");break;
	}
return 0;
}

四、if语句和switch语句的选择

1)分支较多且无法穷尽或进行大量列举时选择if

2)如果分支数量不是很多,但是使用if代码量较大,可以考虑switch

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值