【C语言】分支和循环

目录

前置:关系操作符和逻辑操作符

关系操作符

逻辑操作符

其他补充知识

分支语句:

一、if类

基本式:if...

变式1:if...else...

[变式2:if...else if...else...](#变式2:if...else if...else...)

变式3:嵌套

二、switch

循环语句:

一、while

二、for

三、do...while

四、提前离开循环


前置:关系操作符和逻辑操作符

关系操作符

C语言中用于判断两个事件之间的关系的操作符主要有六个

  • < 小于
  • > 大于
  • <= 小于等于
  • >= 大于等于
  • == 等于
  • != 不等于

需要注意的是 "==" 才是用来判断是否相等的符号, "=" 表示的是赋值的运算

上述六个操作符当判断的结果成立,即结果为真时会返回1,否则返回0

逻辑操作符

C语言中用于逻辑判断主要有三个

  • && 与
  • || 或
  • ! 非

与(&&):当符号两边同时为真时总结果才为真

(a > 0) && ( b > 0)

当a大于0,并且b也大于0时总结果才为真

或(||):当符号两边有任意一个为真时总结果就可以为真

(a > 0) || ( b > 0)

当a大于0,或者b大于0时总结果就是真

非(!):改变单个条件的真假,如果是真就变成假,如果是假就变成真

a = 0;

b = !a;

因为a等于0,所以!a等于1,所以b等于1

其他补充知识

C语言逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为"短路"。

分支语句:

一、if类

if在英语语境里就有"如果"的意思,可以用它来判断选择程序的执行路径,其具体使用为

基本式:if...

复制代码
if( 判断的条件结果为真 )
{
    执行的操作...
}

当判断的条件结果为真,即结果非0时就会进入大括号内执行代码,否则就会跳过大括号内的代码往下执行

变式1:if...else...

复制代码
if( 判断的条件不等于0 )
{
    执行的操作...
}
else
{
    执行的操作...
}

if和else可以看做将全集分成两份互斥的事件,当if内的条件不成立时必然会执行else内的代码

变式2:if...else if...else...

复制代码
if( 判断的条件不等于0 )
{
    执行的操作...
}
else if( 判断的条件不等于0 )
{
    执行的操作...
}
else
{
    执行的操作...
}

else if 相当于把全集再添加一个事件,这个事件同样与另外两个事件互斥,可以添加多个else if来继续在全集内添加与其他事件互斥事件

变式3:嵌套

复制代码
if( 判断的条件结果为真 )
{
    if( 判断的条件结果为真 )
    {
        执行的操作...
    }
    else
    {
        执行的操作...
    }
}
else
{
    if( 判断的条件结果为真 )
    {
        执行的操作...    
    }
    else
    {
        执行的操作...
    }
}

if类可以存在嵌套,当没有大括号时,else总是和最近的前一个if作为一体

二、switch

switch在英语语境里就有"选择"的意思,也可以用它来判断选择程序的执行路径

它和if...else if...else功能一样,不过把多重的 else if 改成更易用、可读性更好的形式。

复制代码
switch( 用于作为路径选择的参数 )
{
    case 得到的参数是变量1:
        执行的操作...
        break;
    case 得到的参数是变量2:
        执行的操作...
        break;

    ...

    default:
        执行的操作...
}

上述伪代码通过判断用于作为路径选择的变量的不同值执行相应的case里的代码,当所有的case都不满足时则执行default里的内容

注:

  • switch 后的 用于作为路径选择的变量 必须是整型表达式
  • case 后的值,必须是整形常量表达式
  • 每一个 case 语句中的代码执行完成后,需要加上 break ,才能跳出这个switch语句。如果某一个 case 语句的后边没有 break 语句,代码会继续玩下执行,有可能执行其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。

循环语句:

一、while

while语句是一个简单的循环语句,当判断的条件结果为真时就进入while语句内执行响应的操作,当执行到大括号内最后一条代码时返回最开始的条件判断,如果判断的条件仍然为真就再次进入while语句内执行响应的操作,如此反复执行直到判断的条件结果为假时才跳出循环

复制代码
while( 判断的条件结果为真 )
{
    执行的操作...
}

二、for

for循环语句也是C语言中的常见循环语句,其语法结构为

复制代码
for( 循环变量初始化; 循环结束条件; 每执行完一次for循环循环变量的调整 )
{
    执行的操作...
}

整个循环的过程中,循环变量初始化部分只被执行1次,其他两个参数会被反复执行。三个参数并不是一定都要使用的,可以空着不写,例如当循环结束的条件为空时表示该循环为死循环。

三、do...while

while 和 for 这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳 出循环; 而 do...while 循环则是先直接进入循环体,执行循环语句,然后再执行 while 后的判断表达式,表达式为真,就会进行下一次,表达式为假,则不再继续循环。所以在 do...while 语句中循环体是至少执行一次的,这是 do...while 循环比较特殊的地方。其语法结构为

复制代码
do
{
    执行的操作...
}while( 判断的条件结果为真 )

四、提前离开循环

1.break

执行break语句可以做到终止该语句所在的循环

2.continue

执行continue语句可以做到跳过本次循环中continue之后的语句,直接开始执行下一次的循环

3.return

对于有返回值的函数,执行return语句可以做到终止该语句所在的函数,直接返回函数值

4.goto

使用goto语句可以使程序跳到任意你想让它跳转执行的位置,但是不建议使用goto,因为 goto 语句如果使用的不当,就会导致在函数内部随意乱跳转,打乱程序的执行流程,所以建议是能不用尽量不去使用;但是 goto 语句也不是一无是处,在多层循环的代码中,如果想快速跳出使用 goto 就非常的方便了。

复制代码
int main()
{
    int i = 0;
    for( i = 0; i < 100; i++ )
    {
        执行的操作...
        
        要去的地方:
        {
            执行的操作...
        }        
        if( i == 50)
        {
            goto 要去的地方:
        }

        执行的操作...
    }
}

注意:"要去的地方"在实际使用时根据自己的需要起名字