朝花夕拾 · C语言 | 流程控制篇

顺序结构较为简单,本篇不作说明。

一.分支结构

1.if分支

1)简单分支

if(表达式)                //表达式:具有逻辑结果的表达式

{                                //当表达式结果为真时,执行语句1,否则执行语句2

        语句1;

}

else

{

        语句2;

}

1.if可以单独存在,但else不可以

2.当if或else后面的语句只有一句时,{}可以省略,建议不要省略

3.{}里面缩进一个Tab

4.if(表达式)后面不要写分号,写分号if语句直接结束

流程图如下

2)阶梯分支

if(表达式1)

{

        语句1;

}

else if(表达式2)

{

        语句2;

}

else if(表达式3)

{

        语句3;

}

else

{

        语句4;

}

顺序执行,若前面的表达式符合条件则不会执行后面的

流程图如下

3)嵌套分支

        相对阶梯分支效率低,且嵌套多层时可读性差,少用。

2.switch分支

 switch(表达式)

{                

        case 常量/表达式1:   语句1;break;

        case 常量/表达式2:   语句2;break;

        case 常量/表达式3:   语句3;break;

        case 常量/表达式4:   语句4; break;

        default  :语句;break;

}

1.switch后面的表达式一定是具有整型结果的表达式

2.当只匹配一个结果时,所有的case后面都要加break跳出switch,default后面可省略break

3.default可省略

4.case后面不能用逻辑表达式

5.各个case和default出现次序不影响结果。

二.循环结构

1.for循环

for(表达式1;逻辑表达式2;表达式3)

{        

        循环体;

}

表达式1:循环的初始条件;

表达式2:循环被执行的条件,表达式2的结果为真,则执行循环体,否则退出循环;

表达式3:让循环趋于结束的条件。

语法规定:

1.for(;;){}--->死循环,表示循环体一直被执行;

2.for循环的三个表达式都可以被省略,但循环初始条件,让循环执行的判断条件及让循环趋于结束的条件必须要有;

3.for循环中的三个表达式的位置不能互换;

4.for(表达式1;逻辑表达式2;表达式3)后不要加分号,加分号代表语句结束;

  for(表达式1;逻辑表达式2;表达式3);==   for(表达式1;逻辑表达式2;表达式3)

                {                                                                {

                        循环体;

                 }                                                                }

5.一个在 for 里定义的变量,就只属于那个循环,只负责把循环跑完,跑完就消失;而一个在外部定义的变量,它的定义域属于整个函数。写代码时,尽量让变量的定义域落在最小需要它的范围内,以便后续调试。

执行流程:

(1)先求解表达式1。
(2)求解表达式2,若其值为真(值为非0),则执行for语句中指定的内嵌语句,然后
执行下面第(3)步。若为假(值为0),则结束循环,转到第(5)步。
(3)求解表达式3。
(4)转回上面第(2)步骤继续执行。

(5)循环结束,执行for语句下面的一个语句

2.while

while(表达式)

{

        循环体;

}

循环的初始条件:while()前面

循环执行的条件:逻辑结果的表达式,表达式结果为真则执行循环体,否则退出循环;

让循环趋于结束的条件:循环体内

注意:

1.while(表达式)后面不能加分号,加分号相当于:

while(表达式)

{

        //空

}

2.while(表达式)后面的{},当循环体只有一行语句时可以省略,但不建议省略;

3.死循环

while(1)

{

        循环体;

}

流程图如下:

3.do while

do

{

         循环体;

}while(表达式);

1.do  while语句在while()后面必须加分号;

2.无论while()的逻辑结果为真为假,循环体至少执行一次;

执行流程:先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非零(“真”)时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束。

4.goto

goto语句为无条件转向语句,它的一般形式为
goto 语句标号;
其第一个字符必须为字母或下划线。不能用整数来作标号。例如:
语句标号用标识符表示,它的定名规则与变量名相同,即由字母、数字和下划线组成,
goto label _1;是合法的,而goto 123;是不合法的。

结构化程序设计方法主张限制使用goto语句,因为滥用goto语句将使程序流程无规律、可读性差。但也不是绝对禁止使用goto语句。一般来说,有两种用途:
(1)与if语句一起构成循环结构。
(2)从循环体中跳转到循环体外,但在C语言中可以用break语句和continue语句跳出本层循环和结束本次循环。goto语句的使用机会已大大减少,只是需要从多层循环的内层循环跳到外层循环外时才用到goto语句。但是这种用法不符合结构化原则,一般不宜采用,只有在不得已时(例如能大大提高效率)才使用。

int main()
{
    int num = 0;

    printf("请输入一个正整数:");
    scanf("%d", &num);

    if (num < 0)
    {
        goto error;   // 负数时跳转到error错误处理,中间代码直接跳过
    }

    printf("你输入的是:%d\n", num);
    return 0;

error:
    printf("错误:不能输入负数!\n");
    return 1;
}

三.循环辅助语句

1.break

循环断路语句,结束当前循环。(当多层循环嵌套时,只跳出当前层循环)。break不能用于除循环语句和switch语句之外的任何其他语句中。

2.continue

循环短路语句,仅跳出此次循环,执行下次循环。

3.return

跳出当前函数,当在main函数中遇到return时,直接结束整个程序;若在其他函数里时只表示函数结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值