C语言基础——条件语句+scanf的使用

前言

大家好呀,这一章节我来给小伙伴们讲讲条件语句吧,C语言是一门结构化的程序设计语言,它支持3种结构,首先就是我们的顺序结构啦,顺序结构顾名思义就是按照顺序来一步一步运行,我们之前的代码就是这样按照从前往后的顺序一步一步的往后运行就是顺序结构;其次就是选择结构,选择结构就要用到我们今天要讲的条件语句;最后就是循环结构,循环结构是C语言中的一个很重要的部分,我打算下一章节再和小伙伴们来聊一聊这个结构,在看条件语句之前,我们可以先来看看scanf的用法,这对我们以后讲解很有帮助,而且也是很重要的代码。小伙伴们来和我一起看看吧。

scanf用法

1. scanf介绍

scanf其实是和printf配套使用的一个语法,它的本质也是一个函数,保存在stdio.h的头文件里面。大家可能早就有疑问了,既然我们可以让计算机输出东西出来,就是用printf函数,但是有没有办法让我们可以在计算机中输入东西进去呢,当然是有的,那就是scanf函数,让我们来看看它怎么用吧。

2. scanf的用法

它的用法和printf是十分相似的,我们都知道如果想要printf输出一个变量的方法如图所示,

就是不同类型的变量的特有方式 + 我们创建变量时所创建的名字,而scanf其实是很相似的,

如图所示

对比一下我们会发现就是在原本的a前面增加了一个&符号,这个符号叫做取地址,这个符号在我们之后学指针时有大用处,但是现在我们记住就行啦,记住在用scanf的时候我们不能在%d后面加\n等这些符号,但是可以输入多行,方法也和printf差不多,

如图所示,

可以看出来没有什么本质上的区别,接下来我们来调试一下看看。

如图所示,

什么鬼,怎么报错了,博主不会教错了吧,怎么可能,我怎么可能会骗可爱的小伙伴们呢,在这里确实是错了啦,但是这里确实是报错了,那我们来看看是为什么吧,我们可以看到,下面的报错的地方显示说scanf函数是不安全的,让我们要么使用scanf_s,要么使用_CRT_SECURE_NO_WARNINGS,这个vs2022的保护措施还蛮好的,博主之前使用vs2013是还没有这个问题,那么我们怎么解决这个问题呢?就按计算机告诉你的来改就好啦,要么把scanf改成scanf_s,

如图所示,

要么就在程序前面加一个#define _CRT_SECURE_NO_WARNINGS 1,

如图所示,

这样就能解决问题啦,但是我推荐小伙伴们用第二种方法哦,因为如果用第一种办法的话,等小伙伴们变得很厉害的时候,写出来的程序可以有很多人用的话,那样你的代码就会被用很多不同的编译器使用,但是scanf_s是vs专属的,可移植性不好,所以推荐第二种,但是有小伙伴们可能会觉得每次打开都要复制粘贴好麻烦,这里博主教你们一个办法,

如图所示,

我们可以按照这个路径(你原来安装vs2022时选择的地址就可以找到)找到下面这个文件,然后打开进行更改,但是有可能会选择你的权限不够不能保存,那我们可以把这个文件复制一份在桌面,然后在桌面进行更改保存后再把它拖到上面的文件里面,然后替换掉原文件就好了。

#define _CRT_SECURE_NO_WARNINGS 1,这样以后我们再创建源文件时就自动就有了。

接下来我们再调试看看。

我们可以看到,这次程序成功运行了,光标停在这里等我们输入,这时我们就可以输入啦。

如图所示,

这就是scanf的用法啦。

if语句

1. if语句的介绍

if语句是条件语句中很重要的一种语句,条件语句有很多种,但是使用的最多的就是if语句了,因为它使用的范围很广,所以小伙伴们一定要认真学习哦。

2. if语句的使用方法

if语句的使用方法还是蛮简单的就是if + 条件,就是这么简单,在if后面加上要判断的条件就可以了,如果满足条件,程序就会运行if语句里面的内容,如果不满足那么就会直接跳过而不会继续运行if里面的程序。但在讲布尔变量时我讲了,其实对布尔变量来说,如果是假的话那么返回值就是0,而如果是真的话,那么返回值就是除了0以外的任意值,if语句(或者说C语言都这样)也是这样的,如果条件为假的话,那么返回值就是0,如果是真的话,那么返回值就是除零外的其他任意值,也就是说,如果条件中是0,那么if语句就直接判断为假,但是如果不是0,那么就直接判断为真。那么我们来看看代码的表示吧。

如图所示,

在这里我们可以看到if的后面的条件中是一个a,可能会有人会奇怪,a算是什么条件,确实是这样,一个整数算什么条件,但是计算机看的懂就行,计算机只会去判断条件里面是不是0,如果是,那就是假,如果不是,那就是真。

如图所示,

计算机什么都没有输出,就是因为我们输入a = 0;条件为假。如果我们输入非0呢

如图所示,

很显然,这里就运行了我们的代码啦。

3. else语句

else就相当于中文汉字的除了,就是除了if的条件剩下的条件,就比如if的条件是a > 0,那满足else的条件就是a !> 0,else必须和if一同出现,不能只有else而没有if,我们接下来看看这个代码。

如图所示,

这个代码我们可以实现,如果我们输入一个年龄,要是小于18岁,那么就会输出你还未成年,不能玩游戏,如果不是小于18岁,你就成年,就可以玩游戏。

如图所示,

这个时候如果我们想要加一个内容就是在超过18岁的仍加一个你可以谈恋爱了怎么加呢?

是这样直接加吗?我们来调试一下看看,

我们可以看到大于18岁的确实是这样,那小于18岁的呢?

怎么也有啊(1岁怎么能谈恋爱呢),为什么是这样呢?答案肯定是因为if和else语句管不了这么宽,它们只能管住它们的下一条语句,而管不了下下一条,如果要这样做,那我们得把它放到一个代码块里面,也就是加一个{}。

如图所示,

这样就可以达到我们想要的效果,

看,这个时候未成年就不能谈恋爱了。但是我们都知道,在很多时候都不单单是只有两种条件可以选择,还可以有很多种,就比如我想在原来的代码上增加一个18岁到40岁要好好工作怎么办呢?答案就是在else里面加if啦,我们都知道else就是排除if条件后剩余的条件,所以在else里面加if就可以排除掉有原来if里面的条件的可能性,

如图所示,

这样是不是就可以表示18岁到45岁的中年人了呢?让我们来调试一下吧。

我们可以看到,当年龄在18岁以上时确实是有好好工作,但是当年龄在60岁时却还是有好好工作,明明在18到45岁才可以输出好好工作,但是为什么这里60岁也输出了呢,那是因为我们的条件语句中识别不了 18<age<45 这个条件,对于计算机来说,这个条件相当于age大于18就可以了,它不会识别后面的内容,那应该怎么办呢,这个时候就要用到我之前没讲的操作符啦,我们可以用一个操作符来完美解决这个问题,我们一起来看看吧。

3.1 &&操作符

这个操作符就可以解决以上的问题,这个操作符的含义是并且的意思,就是什么什么并且什么什么,放在上面来说就是我们要让age大于18岁这个条件和age小于45岁这个条件同时满足时,就可以用&&操作符,这个操作符就是要同时满足它前面的条件和后面的条件才可以让if的条件为真,让我们来看一下具体使用方法吧。

如图所示,

从这个代码来看,我们要同时满足前面的age大于18的条件,还要满足age小于45岁这个条件这个if的条件才为真,也就是18 < age < 45。

如图所示,

这样就可以解决这个问题啦。

3.2 || 操作符

这个操作符看上去有点有趣,但其实和&&差不多,&&表示并且,但是||的含义时或者,也就是说||操作符只要前面的条件或者后面的条件满足其中一个就可以了,也就是说只要前面的条件或者后面的条件其中一个为真,if语句就是真,当然两个都是真的话也是真,但是两个都是假的话那if条件就是假了啦。

如图所示,

在这里可以看出,如果age小于18或者大于45时输出拥有一个好身体(996的人身体好那也是真厉害,佩服佩服)。

当然这些操作符不单单可以用一次啦,要是条件复杂的话还可以用很多次的。具体情况具体分析啦。

我们接下来再来看看代码。

我们知道,如果if下面就只有1行代码要输出的话,可以把大括号删除掉,直接在if下面加上要输出的东西就行了,那我们的代码可以改成这样

这个时候我们再把if和else放在一起,然后再用一个else把其他的放在一起,

那么恭喜你,用自己的方式创建了一个语法,else if

4. else if语句

我想大家应该对这个语句有点眉目吧,它原本是在else里面的,然后增加了一个if,所以说它是if语句的延申,如果有很多条件指向不同的结果,那门我们就可以用else if去增加,有人会想,那我为什么不直接加if语句呢?我们从刚刚推理中可以知道,else if本质上是从else中引申出来的,所以它和直接引用if不同的是它在运行时就已经自动默认前面的条件不符合了,但是if没有,比如

如图所示,

我们可以看到if的话如果是3岁它就同时满足了age < 3 和 age < 18的条件,所以就都输出了出来,但是else if呢?

如图所示,

它满足了前一个就不会再去判断下一个条件是否成立了,计算机在运行时自动跳过else if语句了,这就是if 和else if的区别,同时else if本质上和else一样,只不过是多了些条件,所以else if也不能单独使用,要和if同时使用,可以没有else。

总结

这是条件语句的一部分,也是最重要的一部分,下一章节我会把条件语句的剩下部分讲完,然后我们就可以来开始进入循环语句啦,还剩下一个三目操作符和switch语句,这两个比较简单,感谢小伙伴们看到这里,如果有什么问题请你们指出来哈,加油加油,我们一起进步哦,以后的自己肯定会感谢现在努力的自己,加油。

  • 44
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值