| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> c语言初阶(1-判断与循环) -> 正文阅读 |
|
[C++知识库]c语言初阶(1-判断与循环) |
? ? ? ? 前面的初识c语言属于扫盲篇,让大家对c有一个基本的了解和认知,同时也为我们后面的分讲打下坚实的基础,无论学习什么,都要先有一个笼统的概念,就像看书先看目录,只有知道了要学什么,才能在学习的过程中对知识进行有序的分配和汲取。 ? ? ? ? 现在,我们开始讲第一个内容——判断与循环 ? ? ? (在初始c语言中打下的良好基础使得我们对于该节的认知和讲解大为轻松,我将不必分配精力到一些基础的语法,因此就更着重于细节和实例。大家加油哦!!!) ? ? ? ? ( 我们把判断与循环的详细知识放在这一篇讲完,后面几篇是我们的实战练习,所以这篇会格外的长,希望大家能沉下心来,慢慢读完,真正的知识永远留给有决心和有毅力的人。) ? ? ? ? 目录 ? ? ? ?1.?c语言的语句格式 ? ??注意: ? ? ? ? ?2.1顺序语句 ? ? ? ? ?2.2分支语句 ? ? ? ? ? ? ? ?2.21 if: ? ? ? ? ? ? ? ? ? ? ?补充:解决scanf不兼容vs高版本: ? ? ? ? ? ? ? ??? ? ?注意: ? ? ? ? ? ? ?2.22悬空else(就近原则) ? ? ? ? ? ? ? ? ? ??注意: ? ? ? ? ? ? ? ? ? ??实例小检测: ? ? ? ? ? ? ? ? ? ??注意: ? ? ? ? ? ?? 2.22 :switch ? ? ? ? ? ? ? ? ? ? ?注意: ? ? ? ? ? ? ? ? ? ? ?注意: ? ? ? ? ? ? ? ? ? ??switch小检测(switch嵌套): ? ? ? ? ? ? ? ? ? ??补充: ? ? ? ? ? ?2.3循环语句 ? ? ? ? ? ? ? ? ??练习-判断1~100的奇偶 ? ? ? ? ? ? ? ? ? ? ?2.31while循环: ? ? ? ? ? ? ? ? ? ? ?2.32for循环: ? ? ? ? ??2.4跳转语句 ? ? ? ? ? ??2.41Break: ? ? ? ? ? ??2.42Continue: ? ? ? ? ? ? ? ? ??2.421while中的continue ? ? ? ? ? ? ? ? ??2.422for中的continue: ? ? ? ? ? ? ? ? ??2.423?do while中的continue ? ? ? ? ? ? ? ? ?补充:显示器只能显示字符--格式化输出(了解即可) 1.?c语言的语句格式? ? ? ? 对于c来说:每一个‘ ;’(分号)都代表着一个语句,分号是语句的结束标志,在写代码时,我们强烈建议一条语句一行,而不要多条语句写在一起(可读性极差) ? ? ? ? 很容易就发现第一张的可读性远远大于第二张。? 注意:
2.语句种类2.1顺序语句? ? ?在c中,默认有一种语句,即默认情况下自上而下依次执行每一条语句(在不违反其他规则下),这种语句就叫作顺序语句。 2.2分支语句? ? ? ? ? 实质是:进行逻辑判断后选择分支 2.21 if:? ? ?语法大家都了解了,直接上例子。?
? ? ? 那我们如果要用if写一个多分支呢?如图
? ? 如上图:?通常用else if语句实现if的多分支 ? ? ?注意:
? ? 当然,多分支不一定非要使用else if,我们也可以使用多个if 来完成。
? ? ? ? 但在该图中,当第一个if成立时,程序仍然会进入第二个if语句,重新进行判断,若第一个if不成立,则程序会进入第二个if中重新判断,但不会有前提条件,也就是说,这里的每个if都是一个单独的模块,无论第一个if是否成立,程序都会依次执行每一个if判断并且互相独立,如果输入10,那么每一个if判断都会成立,因此每一个if里的代码块都会被执行。如下图执行结果。?
2.22悬空else(就近原则)? ? ?那是不是每一个else都会与和他对齐的if相匹配呢?看下面啦!
? ? ? 首先进入第一个if,显然3==a不成立,所以进入else语句,应该输出“hello else!”,但实际上没有输出结果!! ? ? ? 这是因为if语句拥有着就近原则,else会与和它最近的if相匹配(前提是该if未匹配到else时,若已有else匹配该if,则找下一个距离最近的if),因此,else实际上是与第二个if相匹配的,而当第一个if不满足时,压根就不会执行第二个if语句,所以自然没有输出结果。 ? ? ? ?实际应该为下图(if与它相匹配的else算一个模块,会一起跳过,即if不执行,else自然也不会执行):
? 注意:
实例小检测:
? ? 大家是否看出正确结果了呢?hhhh。 ? ? ? 第一个if里面a=3,而非a==3,因此第一个if里面首先进行的是赋值操作,即先将3赋给a,再检测a的逻辑结果,非0自然是真,所以该if永远满足执行条件,进入该if后,进入第二个if语句,满足b==2,执行相对应的printf,因为下面的else与第二个if想对应,而第二个if已经满足了正确判断,就不会再进行else的判断。 注意:
? 2.22 :switch? ?switch同样是进行判断然后选择分支,其功能完全可以由if语句替代。但switch仍然存在是因为switch对于多分支循环的编写更加简洁易读。 ? ? ?不同于if语句的是,switch本身并不具有判断分支的能力,判断能力由case承担,分支能力由break承担。 ? ?在switch里有三个常用的关键字(continue break default),我们会在下面讲到。 首先看一个例子: ” ? ? ? 上图中,switch读取day的值交给case进行判断,如图,day的值是7,因此case对7进行判断,由此进入case 7:的分支中,输出“星期日”。 注意:
? ? ? ? 当day值为1时,自然由case 1开始执行,但由于执行完case 1后并未遇到break,因此就会一直向下执行,直到遇见第一个break或者执行完毕。 ? ? ? ? ?break:循环中作用是跳出循环,在switch中担任分支的功能,case只会确定入口位置,如果没有break负责调配分支,就会一直执行下去。 因此应该写成下图:
? ? ? ? ?那么如果day值是8怎么办呢,这时候就需要default了 ? ? ? ? ?default作用就如用if语句里面的else,即当其他所有判断全部不满足时,便执行default分支,如此便可避免输入值范围大于判断范围的尴尬情况。 如下:
? ? 当输入8时,便进入default分支,即输出 “输入错误” 注意:
switch小检测(switch嵌套):?
补充:
? ? ? ?我们常常把break加载caes和default后面,但有时候也需要放开一些分支,来让程序更简洁,如上图,1~5都是工作日,6~7都是周天,因此我们把1~5作为一个分支,6~7作为一个分支。 2.3循环语句练习-判断1~100的奇偶
? ? 接下来我们把判断奇偶的功能进行封装,写成函数。
? ? ? ?e,好像有点模糊,大家可以按(Ctrl+鼠标轮滑滚动)来控制大小,这个确实是我截图的失误。多多见谅hhh。 ?接下来我们在再次对函数进行优化前先了解一下 x%2的原理。
所以另一种写法为:?
2.31while循环:? ? ? ?因为我们在之前已经讲了基本知识,所以我们直接看一个while的使用来熟悉一下while, ? ? ? ?这并不是一个复杂的代码,也不是什么坑,代码里写了注释,大家如果掌握了前面的知识的话是肯定可以看懂的,这里不做解释。
2.32for循环:
? ? 注意当i<9写成i<=9时,循环次数是(9-0)+1(闭区间注意+1) ? ? For循环支持嵌套
? ? ?每次不会重新回到条件初始化 ,直接回到条件判断
?2.4跳转语句下面我们来讲讲语句里的 break,continue 2.41Break:结束循环(结束(跳出)本循环,如两个while嵌套,break会结束它所在的第二个while循环,但是会继续第一个while的循环),但在switch语句中,承担分支的调配。 2.42Continue:2.421while中的continue
?解释如图中注释: 2.422for中的continue:
2.423?do while中的continue
? ?虽然未打印,但光标一直闪烁,说明程序有问题——这里是死循环 因此:? ? ? while/do while中的continue都是回到条件判断,而for里面的coutinue跳转到条件更新上,for更不容易死循环 补充:显示器只能显示字符--格式化输出(了解即可)
3. putchar()与getchar()
小练习:大小写转化
? ? 字符的运算实际上就是Ascll码值得运算,而在ascll中,小写字母比大写字母多32位 ? ? ?啊,终于写完这篇了,我写着都累,相信你们看过来肯定更不容易,想要得到更多,总是要付出更多,像我的博客基本上都是我每天晚上一点点熬出来的,我非常初学者的痛苦和无奈,但没有什么事情是一帆风顺的,更没有什么傍身技能是简简单单就可以得到的,世界上那么多人都在受苦,我们又凭什么超人一等,没有什么天才,坚持,就是一切。加油! ? (这篇我很多讲解因为比较繁琐就写在了注释里,不知道看着是不是比较难受,如果觉得这种风格确实不太适应的话,可以在评论里说一下,看到后我尽量改) |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 7:22:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |