一,分支与循环
1.if
1.1 if 语句
if语句的语法形式如下:
其中的表达式为真,则语句执行,表达式为假,则语句不执行
注:在C语言中,0为假,非0表示为真。
eg:输入一个整数,判断是否为奇数:
1.2.else
if...else...语句可以表示一个整数不是奇数便是偶数。形式如下:
eg:输入一个整数,判断是否为奇数,如果是奇数打印奇数,否则打印偶数。
eg:判断一个人是否成年
1.3 分支中包含多条语句:
默认在if和else语句中默认都只能控制一条语句。若是要控制多条语句要带上大括号将其放在括号内。
1.4嵌套if:
在 if else 语句中,else可以与另一个if语句连用,构成多重判断。
eg:要求输入一个整数,判断输入的整数是0,还是正数或者负数。
eg:输入一个整数,如果是正数,再判断是奇数还是偶数,并输出;如果不是正数则输出:非正数
练习:
输入一个人的年龄,
如果年龄<18岁,打印”少年“
如果在18~44岁,打印"青年”
如果在45~59岁,打印“中老年”
如果在60~89岁,打印“老年”
如果在90岁以上打印“老寿星”
1.5悬空else问题
如果有多个if和else,else总是跟最接近的if匹配。
这里没有显示结果的原因是else不与最上面的if匹配,正常情况下应该是这样
但是依旧没有结果输出。原因是第一个if不成立导致第二个if和else无法执行。
或者修改代码为:
注:if后不加分号。
二,关系操作符
C语言用于比较的表达式,称为关系表达式,里面要用关系运算符来进行。
> 大于运算符
< 小于运算符
>= 大于等于运算符
<= 小于等于运算符
== 相等运算符
!=不相等运算符
eg:
if(a>b)
{ }
if(a<b)
{ }
if(a>=b)
{ }......
关系表达式通常返回值0或1,表示真假。
C语言中,0表示假,所有非0值表示为真。
关系表达式常用于if或while结构。
注:多个关系运算符不宜连用。
正确的方法应该是:
练习:输入一个年龄,若年龄在18~36岁之间,输出青年。
三,条件操作符(三目操作符)
exp1 ? exp2 :exp3
表达式1
真---------表达式2计算,表达式3不算,表达式2的结果是整个表达式的结果
假---------表达式2不算,表达式3计算,表达式3的结果是整个表达式的结果
eg:
练习2:使用条件表达式实现找两个数中较大值
四,逻辑操作符:&& ,||,!
逻辑操作符提供逻辑判断功能,用于构建更复杂的表达式。
!:逻辑取反运算符(改变单个表达式的真假)。
&&:与运算符,就是并且的意思(两侧的表达式都为真,则真,否则为假)
||:或运算符,就是或者的意思(两者至少有一个表达式为真,则真,否则为假)
注:C语言中,非0表示真,0表示假
1.逻辑取反运算符!
a !a
非0 0
0 1
eg:
如果flag为真,!flag就是假,如果flag为假,!flag就为真。
2.与运算符
a b a&&b
非0 非0 1
非0 0 0
0 非0 0
0 0 0
&&就是与运算符(并且的意思),&&是一个双目操作符,使用方法是a&&b,&&两边的表达式都是真的时候,整个表达式才为真,只有一个是假,则整个表达式为假。
eg:月份3到5月是春天。
3.或运算符
a b a||b
非0 非0 1
非0 0 1
0 非0 1
0 0 0
||就是或运算符(或者的意思),||是双目操作符,其中两边的a或b一个为真则整个表达式为真,a和b同时为假的时候,才为假。
eg:一年中月份是12月或者1月或者2月是冬天
4.练习:闰年的判断
输入一个年份year判断year是否是闰年
判断规则:
1.能被4整除并且不能被100整除是闰年
2.能被400整除是闰年
5.“短路”
请看10.24学习总结。
五.switch语句:
用于判断条件有多个结果的情况,将多重的else if改成更易用,可读性更好的形式。
switch (expression)
{
case value1:statement
case value2:statement
default:statement
}
上述代码中,根据表达式expression不同的值,执行相应的case分支。如果找不到对应的值,就执行default分支。
注:
1>switch 后的expression必须是整型表达式
2>case 后的值,必须是整形常量表达式
1.if语句和switch语句的对比
练习:输入任意一个整数值,计算除3之后的余数
if 语句:
switch 语句:
case相当于入口而break相当于出口。
有些不同情况举例:
2.switch语句中的break
switch语句是有分支效果的,只有在switch语句中使用break才能在跳出switch语句,如果某一个case语句的后边没有break语句,代码会继续往下执行直到遇到break语句或者switch语句结束。
练习:输入一个1~7的数字,打印对应的星期几。
eg2:将周内改为工作日周末改为休息日
3.switch语句中的default
default处理在switch语句中case无法匹配的结果
4.switch语句中的case和default的顺序没有明确的关系但按照一般顺序来说先处理能排序的再处理无法排序的。
六,while循环
while循环与if语句相似
注:当要循环多个语句时,要加大括号。
练习:打印1~10的值
练习:输入一个整数,逆序打印这个整数的每一位
例如:
输入1234,输出:4 3 2 1
最低位的运算可以使用n%10来运算,得到的余数是最低位
去掉n的最低位,找出倒数第二位使用n=n/10操作就可以去掉最低位的
循环两个步骤,在n变成0之前得到所有的位。
七,for循环
while循环
for循环
for(初始化部分;判断部分;调整部分)
语句
练习:计算1~100之间3的倍数的数字之和