一、逻辑运算符补充:
截断特性:逻辑与左为假,右边不计算;逻辑或左为真,右边不计算
e.g.下面这个程序先执行了++a这一步,得到真值后就不会执行++b


三目运算符:
逻辑表达式?表达式1:表达式2;
单目、三目运算符结合方向从右至左,双目运算符从左至右
x > y ? x : y > z ? y : z(这个式子就需要从右至左结合)
二、分支结构
1.if分支
(1)简单分支
if (表达式)
{
语句块1;
}
else
{
语句块2;
}
注:if后面必须加表达式,else后面不能加表达式
if可以脱离else单独使用,但是else不能脱离if单独使用
if和else不加大扩号默认控制一句代码,最好加上大括号
数据交换:
tmp = Num1;
Num1 = Num2;
Num2 = tmp
e.g.从终端接收两个数,如果第一个数大于第二个数则打印第一个数,如果第一个数不大于第二个数,两者交换打印第一个数
需要先初始化三个变量,然后scanf接收两个变量,用if语句编写当第一个数大于第二个数输出第一个数,其余情况进行数据交换后再输出第一个数


(2)阶梯分支
if (表达式1)
{
语句块1;
}
else if (表达式2)
{
语句块2;
}
else if (表达式3)
{
语句块3;
}
else
{
语句块4;
}
按照语句的顺序依次判断是否满足条件,满足就执行语句,不满足就接着下一个语句进行判断。
e.g. 给成绩分等级,按顺序依次判断执行语句
用阶梯分支给成绩分为五个阶段,分别输出每一段对应的语句



(3)嵌套分支(避免使用多层嵌套导致看不清程序如何嵌套)
if (表达式1)
{
语句块1;
if (表达式2)
{
语句块2;
}
else
{
语句块3;
}
}
else
{
语句块4;
}
e.g.从终端接收一个字母,打印该字母在字典中的下一个字母,例如'a'打印'b', 'A'打印'B',如果是'z'或者'Z'打印'a'或者'A',如果不是字母则打印输入有误
此题可以先用一个if判断是否是字母,在其中嵌套一个if语句判断是否为z或Z来进行相关语句编写


2.switch分支
switch (整形表达式)
{
case 常量1:语句块1;break;
case 常量2:语句块2;break;
case 常量3:语句块3;break;
default:
语句块4;
}
e.g.根据分数进行评级输出
此题可以先将分数的十位求得,然后根据十位数编写相关的输出结果


(2)嵌套形式:break只能跳出一个switch,里层结束后,不加break,外层switch会继续向下执行
二、循环结构
1.while循环(先判断再执行)


死循环:
while (1)
{
}
2.do while(先执行再判断)
do {
语句块;
} while (表达式);
3.for
for (A; B; C)
{
D;
}
先执行A,接着判断B,符合语句后执行D,最后执行C,以此循环往复,直至不符合B语句,循环结束
e.g.鸡兔同笼共50只,有140只脚,请打印出鸡兔的个数
此题使用穷举法,鸡的个数从0开始向上增加,直至满足最终表达式后停止。运用for语句,先设定鸡的初始数值为0且鸡的数量小于等于50,每次循环加1,直至满足if语句输出



被折叠的 条评论
为什么被折叠?



