流程控制
什么是流程控制
程序代码执行的顺序。
流程控制的分类
顺序执行
选择执行
定义:某些代码可能执行,可能不执行,有选择的执行某些代码。
分类:if
If最简单的用法:
如果想控制多个语句的执行或者不执行,那么需要使用{}括起来。
3.if…else…的用法:
if…else if…else的用法:
C错误的if…else if…else语句:
在上图中,当执行到哈哈那句时,下面的else将会被算作另外一个语句来执行,而在我们的c语言中,没有以else开头的语句。所以会出错。
If 实例:
If常见的问题:
变量的替换:
求三个数字的大小:
C语言常见误区:纸老虎
素数:只能被1和自己整除的数,如1,5,9等。
回文数:正着写和倒着写一样的数。如1221,121,等
编程实现求一个十进制数字的二进制形式:
求一个数字的每位是奇数的数字取出来组合形成的新数字。
求一个数字到过来的数字。
1:如果不懂,那么就看答案。看懂答案在敲。没错误了,在尝试改。
如何看懂一个程序:
- 流程:
- 每个语句的功能:
- 试数:
对一些小算法的程序:
- 尝试自己编程结局。
- 解决不了,看答案。
- 关键是把答案看懂。
- 看懂之后尝试自己修改程序,且知道修改之后程序的不同输出结果的含义。
- 照着答案去敲
- 调试错误
- 不看答案,自己独立把程序编出
- 如果程序实在是彻底无法了解,就把他背会。
空语句的问题:
在上图中,最终的结果会是AAAA,BBBB,程序也不会报错,为什么呢,因为在程序执行的时候,会在;哪里认为是一个空语句。也就是说,如果if成立,那么执行空语句。
If常见错误解析(重点)
上面这个程序是错误的,为什么呢,在该程序中,总的有4个语句,而在以else开头的那个语句中是有错误的,因为在c语言中是没有以else开头的这种语法。
在上面这个程序中,最终的值是AAAA,虽说后面的3>1也满足条件,但是当3>2满足条件后,该if语句就会终止,后面的语句是不会在执行的。
既然7行要写表达式,就要写if。
循环的定义、分类。
定义:某些代码会被重复执行。
分类:for while do……while
在上图中,先执行1,在执行2,2如果成立,标志着循环成立,那么在执行4,最后在执行3,3执行完后代表一次循环完成,然后在执行2.以此类推。1永远只执行一次。
++I 等价于 i+1
求1-10的所有奇数的和:
求1-12之间的所有能被3整除的数字之和:
For所控制的语句:
在上图中,for默认只能控制一个语句,但是如果要控制多个语句时候,那么需要使用{}把语句括起来。
求1+1/2+1/3….1/100的和
在上图中,重点是强制数据类型转换也就是(float)(i)那句:
如果把print那句换为下面这句会怎么样呢:
也是错的,为什么呢,因为i是整型,1也是整型,所以不管你怎么转换也是整型啊,如果想要这样写的话,那么我们需要把1改成1.0也可以的。也就是:
试数详细步骤举例:
浮点数存取:
求1-100之间所有奇数的和:
求1-100之间的奇数的个数:
求1-100之间奇数的平均值:
求1-100之间的奇数之和,在求1-100之间的偶数之和:
多个for循环的嵌套使用:
整体是两个语句。
上图中,先执行1,在执行2,如果2成立,执行4,在执行5,如果5成立执行A,在执行6,在执行5,如果5不成立,意味着里面的循环结束,然后执行3,在执行2,如果2成立又执行4,在执行5,如果5成立在执行6,在执行5,如果5不成立,在执行3,在执行2,如果2不成立,意味着本次循环结束,在执行B,在上图中,需要注意的是,如果2成立的话,那么每次4都需要执行。
进制之间的转换:
如234为5进制,那么转换成10进制是多少:
2x5x5+3x5+4的值就是转换成的10进制。
234e是16进制,转换成2进制是多少:
2x16x16x16+3x16x16+4x16+12的值就是转换成10进制的值。
注意上面的规律。
那么把十进制转换成r进制呢,其实很简单,就是把10进制数除以r,直到商是0的时候。然后取余数,余数倒序排列:
琐碎的运算符:
自增:
自减:和自增一样。
三目运算符:
最终的输出结果是1.
逗号表达式:
最终结果是6.
上图中,逗号是个顺序点,即所有的副作用必须在下个语句前生效,其最后结果为1,j+2只是产生临时值,并没有把j+2的值赋个j。如果写成j+=2,那最后的值则变为5.
For的嵌套使用举例:
上例中输出的结果是9个哈哈,1个嘻嘻。
在上图中,整个程序分成3个语句,输出的结果是3个嘿嘿,3个哈哈,1个嘻嘻。
其结果是:
While(先付钱后吃饭)
1:执行的顺序:
2:与for的相互比较:
用for来求1-100之和:
用while实现1-100之和。只需要把for语句替换为:
For和while是可以相互转换的,可以用下面的表达式来表示:
While和for在逻辑上完全等价,但是for在逻辑上更强。更容易理解,更不容易出错。推荐多使用for。
3:while举例:
试数:
通过上面的试数,应该能很快的理解回文数的算法。
4:什么时候使用while,什么时候使用for:
没法说,用多了就自然而然知道了
Do…while(先吃饭后付钱)
一元二次方程:
Switch的用法:
电梯程序:
Case是程序的入口,当进入程序后,程序会从上往下执行,如果有break,那么会中断程序,如果没有,那么会一直执行。
Break的用法:
在多层switch中,break也是只能终止距离他最近的switch。
Break只能用于循环和switch,不能用于if。如果用于if,必须要当循环中嵌套if的时候。
Continue的用法:
上图中,如果执行continue,那么C,D将不会被执行,会执行3.
在上图中,如果执行了continue,那么后面的C,D将不再执行,而会去执行表达式。