C语言基础————选择结构(if语句与switch语句)

本文详细介绍了C语言中的选择结构,包括if语句的基本语法、嵌套、else...和elseif的使用,以及switch语句的语法、break的作用和default的运用。作者强调了在编程中合理运用选择结构的重要性。
摘要由CSDN通过智能技术生成

前言

        编程的目的是解决生活中的实际问题,而生活中的的任何问题,在计算机中都可以抽象成顺序结构,选择结构和循环结构或者它们的组合,C语言是结构化的程序设计语言,本篇文章就介绍了C语言中的选择结构。

选择结构

       在生活中,我们会遇到各种各样的选择,而在计算机中,很多时候也是一样的,计算机同样也会面临选择,在C语言中,我们可以使用ifswitch语句来实现分支结构(选择结构)。

if语句

1.if语句的语法形式

     if(表达式)

         语句

在C语言中0表示假,非0表示真。

如果表达式的结果为真,则执行if下的语句,否则则不执行;

例子:判断一个数能否被3整除

#include <stdio.h>

int main()
{
    int num = 0;
    scanf("%d", &num);//输入一个数
    if (num % 3 == 0)//判断能否被3整除
        printf("%d 能被3整除\n", num);
    return 0;
}

2.if...else...

       在生活中,会遇到这样一种情况,即一件事只有两可能,或者说只有两种结果,比如抛硬币,不是正面就是反面。那么在C语言中如何表示一件事的两种结果呢?这里就可以使用if...else...语句。

if(表达式)

   语句1

else

   语句2

如果表达式为真,则执行语句1,否则执行语句2;

例如:判断一个数是否大于3

#include <stdio.h>

int main()
{
    int num = 0;
    scanf("%d", &num);//输入一个数
    if (num > 3)//判断是否大于3
        printf("%d 比3大\n", num);
    else
        printf("%d 比3小或等于3\n", num);
    return 0;
}


3.分支中包含多条语句

C语言中,ifelse默认只控制一条语句,如果要让它们控制多条语句,则需要加上{}

例子:判断是否成年

#include <stdio.h>

int main()
{
    int age = 0;
    scanf("%d", &age);//输入一个数表示年龄
    if (age > 18)//判断是否大于18
    {
        printf("年龄为%d\n", age);
        printf("成年了,可以饮酒");

    }
    else
    {
        printf("年龄为%d\n", age);
        printf("未成年,不能饮酒");
    }
    return 0;
}

4.多重判断与嵌套if

     在解决问题的时候,会遇到有些事有多个结果,在C语言中,else能与if连用,构成else if,达到多重判断的效果。

例子:判断一个数是正数,负数,还是0

#include <stdio.h>

int main()
{
	int num = 0;
	scanf("%d", &num);//输入数字
	if (num == 0)
		printf("输⼊的数字是0\n");
	else if (num > 0) //else if多重判断
		printf("输⼊的数字是正数\n");
	else
		printf("输⼊的数字是负数\n");

	return 0;
}

在这个问题中,if可以看作是嵌套在else之下,达到的效果和以下代码相同

#include <stdio.h>

int main()
{
	int num = 0;
	scanf("%d", &num);//输入数字
	if (num == 0)
		printf("输⼊的数字是0\n");
	else 
	{
		if (num > 0)
			printf("输⼊的数字是正数\n");
		else
			printf("输⼊的数字是负数\n");
	}

	return 0;
}

除了上述例子,if语句在使用时也可以嵌套多个if,有了嵌套if语句,就可以完成更多复杂逻辑的判断。

注意事项

如果出现多个if和一个else,若没有{},else默认与最近的if匹配。

switch语句

1.switch语句的语法形式

switch (表达式)

{

   case 整形常量1:语句1 

   case 整形常量2:语句2

   default: 语句3

}

从语法形式上就可以看出,switch语句在条件有多个结果的时候更加易用,可读性更强。

需要注意的是,switch语句中的表达式必须是整形表达式,case后的值是整形常量,且与case用空格隔开。

2.switch语句中的break

首先来看以下代码:

判断一个数除以3的余数

#include <stdio.h>

int main()
{
	int n = 0;
	scanf("%d", &n);
	switch (n % 3)
	{
	case 0:
		printf("整除\n");
		break;
	case 1:
		printf("余数是1\n");
		break;
	case 2:
		printf("余数是2\n");
		break;
	}
	return 0;
}

在这个代码中,每个case后的语句中都带有break,它的作用是什么呢?

我们将以上代码中的break去掉,看下执行效果;

#include <stdio.h>

int main()
{
	int n = 0;
	scanf("%d", &n);
	switch (n % 3)
	{
	case 0:
		printf("整除\n");
	case 1:
		printf("余数是1\n");
	case 2:
		printf("余数是2\n");
	}
	return 0;
}

首先输入3

会发现得到的结果很奇怪,为什么会得出这样的结果?

事实上,在C语言的switch语句中,case可以看作一个入口,在上述例子中,由于3除以3等于0,也就是说会从case 0进入swtich语句,但由于没有break,在执行完case 0之后的语句后,并不会结束switch语句,而是继续执行,这就是为什么输入3之后把所有的语句都执行了一遍。

所以,当我们想实现选择结构的时候,大部分情况需要在每一个语句的后面加上break;

当然,并不是所有程序都需要在switch后面加上break,这要视待解决的问题而定。

3.switch语句中的default

       假如现在有一个抽奖活动,抽到数字1,2,3分别可以获得一等奖,二等奖和三等奖,其余的数字都无法获奖。要描述这种情景,就需要把除1,2,3以外的数字都归为一类,这里就可以使用switch语句中的default子句。

#include <stdio.h>

int main()
{
	int n = 0;
	scanf("%d", &n);//输入
	switch (n)
	{
	case 1:
		printf("一等奖\n");
		break;
	case 2:
		printf("二等奖\n");
		break;
	case 3:
		printf("三等奖\n");
		break;
	default:
		printf("谢谢参与\n");
		break;
	}
	return 0;
}

在上述代码中,default用于描述n不匹配所有case的情况,需要注意的是,虽然大部分情况下都把default语句放置在最后,但其实default语句可以和case语句是没有顺序关系的。

总结

         在遇到一件事有多个结果时,需要用到选择结构,在平时编程中,if语句使用的频率很高,但switch语句由于其表达式必须时整形表达式,且使用并不特别方便,因此只在分支很多,且能够私用整形表达式时使用。

plus:写博客真的不是一件简单的事,希望自己能够坚持下去。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值