C语言-----分支和循环语句(1)


    我们知道,分支语句是编程中的一种重要控制结构,它允许程序根据条件的不同执行不同的代码块。在大多数编程语言中,分支语句主要包括 if语句、 switch语句以及与它们相关的控制流程语句,如 breakcontinuereturn等。
    下面我来介绍C语言中的分支语句:

一、if语句

    if语句是最基本的分支语句,它根据条件的真假执行不同的代码块。

if语句的语法如下:

1. if (表达式)
2.    语句

    表达式成立(为真),则执行语句,表达式不成立(为假),则语句不执行。

    在C语言中,0为假,非0表示真,也就是表达式的结果如果是0,则语句不执行,表达式的结果如果不是0,则语句执行。
\

下面给出一个例子:输入一个整数,判断其是否为奇数
在这里插入图片描述

二、if…else语句


    1.else

就上面那个例子而言,如果一个数不是奇数,那么它就一定是一个偶数,这时候想要输出它是偶数时就需要有另一个选择(分支),这个时候就要用到else了,这时候就组成了if…else语句:
在这里插入图片描述
    2.if else

if else 语句中,else 可以与另⼀个if 语句连⽤,构成多重判断,也叫作嵌套if
    例如:判断一个数是0、正数还是负数。

#include<stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num == 0)
		printf("输入的数字是0");
	else if (num > 0)
		printf("输入的数字是正数");
	else
		printf("输入的数字是负数");
	return 0;
}

上面“else if”的代码中的“if”就是嵌套在前⾯的else 子句中的,构成了嵌套的if语句。
\

    再比如:输⼊⼀个整数,如果是正数,再判断是奇数还是偶数,并输出;如果不是正数则输出:非正数。

#include<stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num > 0)
	{
		if (num % 2 == 0)
			printf("是偶数\n");
		else
			printf("是奇数\n");
	}
	else
		printf("不是正数\n");
	return 0;
}

上面的代码中第一个if语句里的代码也是嵌套在if 语句中的,构成了嵌套的if语句。
    以上就是嵌套if语句的语法,有了嵌套if语句,就可以完成更多复杂逻辑的判断。

    3.悬空else问题

如果有多个if和else,可以记住这样⼀条规则,else总是跟最接近的if匹配。我们首先从下面代码开始

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

这个程序运行的结果是什么呢?
    我相信很多初学者认为输出结果是“haha”,其实程序什么也不输出。这又是为什么呢?
这就是悬空else的问题,如果有多个的if匹配,可以记住这样⼀条规则:else 总是跟最接近的if相匹配。
    上面代码的排版,让else与第一个 if 语句对齐,会让我们以为 else 是和第一个if相匹配的,语句不成立的时候,自然想到的就是执行 else 子句,打印“haha”,但实际上 else 是和第二个 if 进行匹配的,这样后边的 if…else 语句是嵌套在第一个 if 语句中的,如果第⼀个if语句不成立,嵌套 if 和 else 就没机会执行了,最终啥都不打印。

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

如果代码改成这样就更加容易理解了。

三、switch语句


    switch 是“开关”的意思,它也是一种“选择”语句,但它的用法非常简单。switch 是多分支选择语句。说得通俗点,多分支就是多个 if。

    从功能上说,switch 语句和 if 语句完全可以相互取代。但从编程的角度,它们又各有各的特点,所以至今为止也不能说谁可以完全取代谁。
    当嵌套的 if 比较少时(三个以内),用 if 编写程序会比较简洁。但是当选择的分支比较多时,嵌套的 if 语句层数就会很多,导致程序冗长,可读性下降。因此C语言提供 switch 语句来处理多分支选择。所以 if 和 switch 可以说是分工明确的。在很多大型的项目中,多分支选择的情况经常会遇到,所以 switch 语句用得还是比较多的。

switch语句的一般表示形式如下:

在这里插入图片描述

    switch语句的使用说明

  • switch后面()里的表达式必须是整型表达式。也就是说可以是 int 型变量、char 型变量,也可以直接是整数或字符常量,哪怕是负数都可以。
  • case 后的值,必须是整形常量表达式。
  • switch 下的 case 和 default 必须用一对大括号{}括起来。
  • switch语句必须含有default,当程序执行时没有执行到所属的语句,就会执行default这条语句。
  • default在switch语句的位置不是固定的,可写在任意位置。

    switch语句中的break:

        用以下一个例子来说明break的作用:

输入任意一个整数值,计算除3之后的余数:

在这里插入图片描述

需要注意的是:

  • case及后面的数字之间要有空格
  • 每⼀个case 语句中的代码执行完成后,需要加上break才能跳出这个switch语句

        上面的代码中,如果我们去掉case语句中的break,会出现什么情况呢?

我们来运行一下程序在这里插入图片描述
这里我们可以看出,7除以3本来余数是1,但是我们发现程序运⾏的结果多了⼀⾏“余数是2”的打印。
这是为什么呢?

    原因是switch 语句也是分支效果的,只有在switch语句中使用break才能跳出switch语句,如果某⼀个case 语句的后边没有遇到break,代码会继续执行下去,有可能执行其他case语句中的代码,知道遇到break或者直到执行完整个switch语句。

    所以switch语句中的break就显得尤为重要了,能实现真正的分支效果。
当然,break 也不是每个case 语句都得有,这就得根据实际情况来看了。


好了!这次的分享就到这了,感谢你的阅读,咱们下一篇博客再见!

  • 34
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值