C语言基础教程(3)流程控制

流程控制


什么是流程控制

程序代码执行的顺序。

 

流程控制的分类

顺序执行

选择执行

  定义:某些代码可能执行,可能不执行,有选择的执行某些代码。

分类: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:如果不懂,那么就看答案。看懂答案在敲。没错误了,在尝试改。

如何看懂一个程序

  1. 流程:
  2. 每个语句的功能:
  3. 试数:

对一些小算法的程序

  1. 尝试自己编程结局。
  2. 解决不了,看答案。
  3. 关键是把答案看懂。
  4. 看懂之后尝试自己修改程序,且知道修改之后程序的不同输出结果的含义。
  5. 照着答案去敲
  6. 调试错误
  7. 不看答案,自己独立把程序编出
  8. 如果程序实在是彻底无法了解,就把他背会。

空语句的问题:

在上图中,最终的结果会是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语句替换为:

Forwhile是可以相互转换的,可以用下面的表达式来表示:

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将不再执行,而会去执行表达式。

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值