if-else语句:
//单分支语句
...
if (表达式) //注意: if后面 没有分号
{
语句;
}
...
语义:
如果 表达式 判断 为真,
则,执行if中的 语句,
语句执行结束,
表示if语句结束,
程序继续往下执行if后面的语句
如果 表达式 判断 为假
则,表示if语句结束,程序继续往下执行if后面的语句
注意:
1.语法 掌握 --- 形式写对
2.含义 理解
3.放到程序中,程序的流程 - 理解
if-else //双分支语句
语法:
if (表达式)
{
语句1;
}else
{
语句2;
}
语义:
如果 表达式 判断 为真,
则,执行 语句1
否则,执行语句2
---------------------
语句1 或者 是语句2 执行完之后,
表示if语句结束,程序继续往下
针对代码的优化要做到:高内聚 低耦合
练习1:
从键盘输入两个数,找出最大值
练习2:
输入三个数,找出三个数中的最大值
//形式3
if-else-if //多分支语句
语法:
if (表达式1)
{
语句1;
}else if (表达式2)
{
语句2;
}else if (表达式3)
{
语句3;
}...
else //注意: 只剩最后一种情况时,此时else可以不加判断
{
语句n;
}
注意:
if 后面不能加分号
语义:
如果 表达式1 判读为真,则,执行 语句1
否则,继续 判断 表达式2,如果表达式2为真 ,则,执行 语句2
否则,继续 判断 表达式3,如果表达式3为真 ,则,执行 语句3
...
练习:
学生成绩:
90-100 --- A
80-89 --- B
70-79 --- C
60-69 --- D
<=59 --- E
90 <= score && score <=100 //
score;
if ( [90-100])
打印A;
else if ([80-89])
打印B;
else
注意:
1.允许单独的if语句出现 ,但是不想允许 单独的else语句出现
2.每一个else 必然 对应一个if
3.if 与else 配对关系
else 总是和离它最近的前面的尚未使用的if配对
if ()
{
if ()
{
}else
{
}
}else
{
if ()
{
}else
{
}
}
条件运算符:
?: //运算符
格式:
表达式1?表达式2:表达式3
运算过程: //实际上是if-else语句的简写
问 一下 表达式1? 真加?
真 执行 表达式2
假 执行 表达式3
练习:
判断一个年份是否为闰年?
闰年:
(1).能被4整除,但是 不能被100整除 //2022 2008 2024
(2).能被400整除 //世纪年份 -- 2000 1900 2100
year%4==0&&year%100!=0||year%400==0
练习:
从键盘输入一个月份和年份,打印月份对应的天数
月份: 1 3 5 7 8 10 12 -- 31天 (大月)
4 6 9 11 -- 30天 (小月)
2 -- 闰年 or 平年
缩进对齐:
单行对齐 命令模式下 按两下等号
多行对齐 shift+v 选中,按一下等号
全局对齐 gg=shift+g
-------------------------------------------------
switch //多分支语句
语法:
switch(表达式)
{
case 常量表达式 1:
语句 1;
break;
case 常量表达式 2:
语句 2;
break;
case 常量表达式 n:
语句 n;
break;
default :
语句 n+l;
break;
}
含义:
求解 表达式?
根据 表达式的结果,去匹配 case后面的 常量表达式的结果,
匹配(值相等)成功之后,
则执行对应的case下面的 语句,
直到遇到了break
或者是
switch 语句的 } (右花括号)
注意:
1.switch 表达式 与case 只会匹配一次
2.switch 中的 表达式 必须是一个整型表达式 或者是与整型兼容的类型的表达式
不能是浮点型
3.case 后面,必须是一个常量表达式
不能出现变量
4.case xxxx:
default: //标签
标签 用来 程序中某些代码 做个标记
5.default 位置 是灵活的
6.建议,case和default统一都写上break
7.switch提供了 多种情况,匹配同一种操作
switch()
{
case 1:
case 2:
case 3:
printf("xxx\n");
break;
}
多分支:
练习: 1.分数等级
score/10
90-100: A
80-89: B
70-79: C
60-69: D
<59: E
总练习题
1.
2.
3.