c语言(4)—流程控制

一、逻辑运算符补充:

截断特性:逻辑与左为假,右边不计算;逻辑或左为真,右边不计算

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语句输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值