C语言的选择结构(1)╰(*°▽°*)╯

大家好,我是曳渔。我今天想要分享的是C语言中顺序结构,选择结构和循环结构中的选择结构。

当然可能有些问题的地方希望可以得到大佬们的修改。好啦~下面开始我们的正文啦!

我们都知道选择结构由 if 和 switch 这两个来实现分支滴。

  1. 我们先来介绍 if 给大家认识

a: if 的基本结构:if(表达式)

                                  语句

执行 if 语句时先判断 if(表达式)中表达式是否为真(相信大家都知道C语言中0为假,非零表示真),如果为真则执行反之则不执行。

下面我们举个例子:

#include <stdio.h>
int main()
{
	int i = 0;
	printf("请输入一个整数>");
	scanf("%d", &i);
	if (i % 2 == 0)
		printf("%d是偶数\n",i);
	return 0;
}

如果我们输入 10 结果为:

那麽我们输入 11 结果为:

偶买噶~我们可以看到它什么也没输出!那我们要是想在我们输入 11 后告诉我们它是奇数是不是就更好了呢?

 b:所以我们接下来介绍一下 if 的好伙伴吧:else 闪亮登场!

       让我们观看一下 if 的下一个结构 :if(表达式)

                                                                      语句1

                                                               else

                                                                      语句2

这么看也看不出什么来所以让我们举个例直观的看一下吧:

#include <stdio.h>

int main()
{
	int i = 0;
	printf("请输入一个整数>");
	scanf("%d", &i);
	if (i % 2 == 0)
		printf("%d是偶数\n", i);
	else
		printf("%d是奇数\n", i);
	return 0;
}

当我们输入 10 时:

哦~我们看到上面 if 单个是一样滴但是(来喽来喽)当我们输入 11 时:

哦~我们看到不一样了它输出一个:11是奇数

这就是else滴作用啦!

else就是当 if 的那个表达式为假(0)时 if 偷懒不干活时,它就会干活啦,就是执行 else 的语句啦!

正所谓男女搭配干活不累,嘿嘿~

让我们再举个例子(可能你已经猜出来了,这个例子回有一些问题):

#include <stdio.h>

int main()
{
	int i = 0;
	printf("请输入你的年龄>");
	scanf("%d", &i);
	if (i >= 18)
		printf("父亲说你可以喝酒了\n");
		printf("父母说可以处对象了\n");
	return 0;
}

如我们输入 20

看这时候和我们想的一样都会输出,但是当我们输入 10 呢,哎~让我们看一下

哎!这时候就不对了,我们认为应该什么也不输出啊!(父母我认为应该不能10岁就说:儿子你可以处对象了。那要是你父母这么说那当我没说,你这代码也可能是对的。(开个玩笑,字打多了有点累,可能你都看累了,调动一下情绪))。好啦~回归正轨我们继续。那这个是什么问题呢?

注:因为 if 语句只能控制⼀条语句,离它最近的一条语句因为它手可能不够长,就是 printf("父亲说你可以喝酒了\n"); if 语句为真,则打印父亲说你可以喝酒了,if 语句为假,则不打印,但是捏对于 printf("父母说可以处对象了\n"); 是独⽴存在的,不管 if 语句的条件的真
假,都会被执⾏。

那麽要怎么让 if 控制多条语句呢这里就要用到我们常客“{}”了,那它是怎么实现的呢让我们在举个例子:

#include <stdio.h>
int main()
{
	int i = 0;
	printf("请输入你的年龄>");
	scanf("%d", &i);
	if (i >= 18)
	{
		printf("父亲说你可以喝酒了\n");
		printf("父母说可以处对象了\n");
	}
	return 0;
}

但我们输入 20 或 10 的时候结果为:

哎~这回看当 10 是什莫也不输出了,这就是之个正确结果了。

当然啦 else 是 if 的好搭档嘛所以当 else 需要执行多条时也要有“{}”啦~

c:对于这个   if(表达式)   语句是可以嵌套滴,那是怎么嵌套的呢?别急马上展示!!

                              语句1

                       else

                              语句2 

      开始展示:if(表达式1)                       哎!这就是 if 嵌套的结构了!!

                               语句1

                        else if (表达式2)

                                语句2

                        else if (表达式3)

                                 语句3

                         else

                                 语句4                     

当然我们还是要举个例子滴:

#include <stdio.h>

int main()
{
	int i = 0;
	printf("请输入你的年龄>");
	scanf("%d", &i);
	if (i >= 18 && i < 30)//&&是并且的意思
		printf("青年\n");
	else if (i >= 30 && i < 50)
		printf("中年\n");
	else if (i >= 50 && i < 60)
		printf("中老年\n");
	else
		printf("老年\n");
	return 0;
}

让我们来看看结果如何:

结果就是如此。

哎~你看见了 else 它的好那么让我们看看它不好的地方!!

d: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 ,那你可就错啦

让我们看结果:

看到了吧,哎~什么也不输出。这是为什吗呢,让我们解析一下代码

a一开始为0,但第一个if 的表达式是a为1时才是真所以为假,所以后面的 if (b == 2)   printf("hehe\n");也不会执行,这时候是不是有人认为会执行else 了,NoNo,它会不执行else ,这
 是为什么呢,这就是else 的悬空问题啦,if (b == 2)                                 
                                                                            printf("hehe\n");
                                                                  else
                                                                            printf("haha\n"
);这俩才是一对滴,你给人家拆开那能行吗?

其实吧也不是不行:

#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如何,且听下回分说!!!

白白啦~

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值