流程控制语句

4. 流程控制语句

运算符补充:
tip 1:非0为真
例:m=-1&&-1 为1

tip 2:按位取反 --0变1,1变0
--默认是有符号数据 --cpu采用补码机制
--例:254按位取反是-255,但如果规定无符号,答案就是1。

tip 3: x%=(k-k%=5); 这个表达式是先算k-k,导致表达式无意义。
注:运算符只要和=一起,如%=,-=,+=,优先级就是最低的,最后算。
tip 4:在将小数强转为整数类型时,通常不会四舍五入,而是直接将小数部分舍弃,只保留整数部分。


程序的执行顺序

自上而下,自左向右 执行

tip:程序的构成:数据结构+算法

流程控制语句作用

--控制程序的执行顺序   --控制条件   --执行内容

流程控制语句分类

  1. 选择结构 --2条 --if/switch
  2. 循环结构 --3条 --for/while/do while
  3. 控制结构 --4条 --break/continue/return

选择结构

  1. if语句 语法:

(1)if(条件)
    {
        语句;
    }
    如果条件为真,则先执行大括号里边的语句,再顺序执行后边的程序,否则直接执行后边的程序
(2)if(条件)
    {
        语句1;
    }
      else
      {
          语句2;
      }
    如果条件为真,则执行语句1,再执行后边的程序;否则执行语句2,再执行后边的语句
(3)if(条件1)
    {
    语句1;
    }
    else if(条件2)
    {
    语句2;
    }
    .
    .
    else  if(条件n)
    {
        语句n;
    }
    else
    {
        语句n+1;
    }
    先判断条件1,如果满足执行语句1,
    如果不满足判断条件2,满足执行语句2,
    不满足判断语句3.....
    当所有条件都不满足时,执行else语句。

注:
(1)三种if选择结构,可以相互嵌套使用
(2)当if选择结构的{}内只有一句代码时,可以省略不写 --不建议
(3)if选择结构大多适合于区间范围的判断

  1. switch语句
    语法:
switch(变量)    注:该变量目前仅支持int类型
{
    case 值:
    语句1;
    break;--break,中途跳出switch,不再进行匹配。
    case 常量2:
    语句2;
    break;
    ...
    default: --所有case匹配不上后,会进入default --兜底匹配
    语句n;
    break;

}
    变量等于常量1,执行语句1,等于常量2,执行语句2...都不相等执行default语句

注意事项:
switch选择结构大多适用于等值选择 -- 菜单选择
break 省略不写,switch 结构不会造成影响。但是运行结果有影响,不能中途退出,会把 switch 中的内容全输出。 会把语句全部按顺序执行,直到遇到break;
default 省略不写,switch 结构不会造成影响,但是没有兜底匹配,一级相应输出内容
default位置无关,switch优先匹配case值,case匹配没有,才会进入 default运行。

循环结构

  1. while循环
    语法
while(条件)
{
    循环体;
}
    先判断条件,如果条件为真,执行循环体,再判断条件,再执行循环体,直到条件为假,跳出循环。

alt text


特点:先判断,后执行。循环操作可能一次都不会被执行。
使用场景:多用于循环次数未知的情况。
2. do while循环
语法:

do
{
    循环体;
}
while(条件);
    先执行循环体,再判断条件,如果条件为真,执行循环体,再判断条件,再执行循环体,直到条件为假,跳出循环。

alt text


特点:先执行,后判断;循环操作至少执行一次。
使用场景:多用于循环次数未知的情况。
tip:这里用getchar()的原因:
--getchar()是获取一个字符,且不开辟空间。
这里用getchar()的原因是,当用户输出值后,必须按回车才会执行,则输入在终端的数不仅仅是数值,还有\n,scanf()接收n值,如果不用getchar(),在下一次循环时,scanf()就会接收到\n,导致程序出错。所以让getchar()接收\n,这样下一次循环时,scanf()接收的就是用户输入的值。
3. for循环
语法:

for(初始化;条件;迭代)
{
    循环体;
}
    先执行初始化,再判断条件,如果条件为真,执行循环体,再执行迭代,再判断条件,再执行循环体,再执行迭代,直到条件为假,跳出循环。

alt text


注:

(1)1不写在for循环内,可以,不会造成影响。
(2)2省略不写,不可以 --死循环
(3)3省略不写,不可以,计数器不变化 --死循环
(4)“;”不写,结构出现问题,编译出错。
特点:先判断,后执行。循环操作一次都不会被执行。
使用场景:大多用于循环次数已知的情况。
4. 循环结构的注意事项
(1)循环结构只有一句或没有时,{}可以省略不写。
(2)所有的循环均可以相互嵌套 --不建议嵌套次数超过3层。
外层循环执行一次,内层循环执行一轮(也就是执行完)。

控制语句

  1. break语句
    作用:结束当前整个循环。 --循环不能正常结束,会终止循环。
    使用范围:只能在循环结构和switch中使用
  2. continue语句
    作用:跳过本次循环,继续下一次循环。 --循环可以正常执行。
    使用范围:只能用于循环结构
  3. return语句
    作用:结束整个函数,返回值。
    使用范围:整个函数中都可以使用
  4. goto语句
    作用:跳转到标记位。--loop --慎用
    使用范围:整个函数中都可以使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值