C语言是一门结构化的程序设计语言。
它支持三种结构:
顺序结构
选择结构:if switch
循环结构:for while do...while
我们可以使⽤ if 、 switch 实现分⽀结构,使⽤ for 、 while 、 do while 实现循环结构。
一. if语句
if 语句语法形式为: if ( 表达式 ) 后接语句 。表达式成⽴(为真),则语句执⾏;表达式不成⽴(为假),则语句不执⾏。
在C语⾔中,0为假,⾮0为真,也就是表达式的结果如果是0,则语句不执⾏;表达式的结果如果是不是0,则语句执⾏。
else if 表分支中可包含多条语句
如:输入一个人的年龄。如果年龄<18岁,打印"少年";如果年龄在18岁至44岁打印"青年";如果年龄在45岁至59岁打印"中老年";如果年龄在60岁至89岁打印"老年";如果90岁以上打印"老寿星"
注意:悬空 else 的问题,如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近 的 if 匹配。
二.关系操作符
C语言中,关系操作符主要有以下六种:
> ⼤于运算符
< ⼩于运算符
>= ⼤于等于运算符
<= ⼩于等于运算符
== 相等运算符
!= 不相等运算符
注意:相等运算符 == 与赋值运算符 = 是两个不⼀样的运算符,不要混淆。
三.逻辑操作符:&& , || , !
&& :与运算符,表并且(两侧的表达式都为真,则为真,否则为假)---->一假则假,全真则真
|| :或运算符,表或者(两侧⾄少有⼀个表达式为真,则为真,否则为假)---->一真则真,全假则假
! :逻辑取反运算符(改变单个表达式的真假)
注:C语⾔中,⾮0表⽰真,0表⽰假
那在这里就会出现一种情况叫“短路”(仅仅根据左操作数的结果就能知道整个表达式的结果,不再对右操作数进⾏计算的运算)
最终输出:a=1,b=2,c=3,d=4 。上面程序在a++处就短路了,应为a为0则假,由此判断整个为假
四.switch语句
除了 if 语句外,C语⾔还用 switch 语句来实现分⽀结构。 switch 语句是⼀种特殊形式的 if else 结构。它把多重 的 else if 改成更易⽤、可读性更好的case形式。switch语句中根据表达式不同的值,执⾏相应的 case 分⽀。相反找不到对应的值, 就执⾏ default 分⽀。
注: switch 后的 expression 必须是整型表达式; case 后的值,必须是整形常量表达式。字符亦可
如: 输入1 - 5,输出的是“工作日”;输入6 - 7,输出“休息日”
五.while循环语句
C语⾔提供了3种循环语句:for, while, do...while
while 就是其中⼀种,while 语句的语法结构和 if 语句⾮常相似,但while可以实现循环效果。
如:用while语句,在屏幕上输出1~10的数字
六.for循环语句
for 循环是三种循环中使⽤最多的!
其语法形式为:for(表达式1; 表达式2; 表达式3) 后接语句
表达式1: ⽤于循环变量的初始化
表达式2 :⽤于循环结束条件的判断
表达式3: ⽤于循环变量的调整
其就是把初始化,判断 ,调整,三个部分放在一起
如:计算1~100之间,3的倍数的和
七.do-while 循环语句
while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳 出循环。(先判断,再执行)
do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式(先执行,后判断),表达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。所以在 do while 语句中循环体是⾄少都要执⾏⼀次的。
如:用do...while语句,在屏幕上输出1~10的数字
八.break和continue语句
1.break的作用(永久的终止循环)
可看到,在上述循环中当n==5时,就停止永久终止循环,不再执行下面的代码
2.continue 的作用:是用于跳过本次循环的cotinue后面的代码,直接去判断的部分,看是否执行下次判断。
上述循环中,当i等于5,就执⾏continue,直接跳过continue后的代码,因为这⾥跳过了n= n+1,所以n⼀直为5,程序陷⼊和死循环
九.循环嵌套
循环嵌套:可以认为把 if语句 或 for 或 while 或 do while 循环结构结合起来使用,这样可以更好的解决问题。
如:找出100~200之间的素数,打印在屏幕上,并判断有多少个(注:素数又称质数,只能被1和本身整数。)
判断a是否是素数 ; 如果是素数,就打印,不是素数就跳过。我们拿2~a-1之间的数字去挨个试除j,如果其中有一个数字整除了j,a就不是素数 ;如果所有的数字都不能整除j,a就是素数
十.goto语句(指跳到哪一个地方去):
可以看到上述代码一直循环“hehe” goto zhangsan表示跳到zhangsan哪去,一直重复执行“hehe”