• C语言-第3课


    第3课 - if,switch,do,while,for分析

       国嵌课程

    1. if

    (1) if语句用于根据条件选择执行语句

    (2) else不能独立存在且总是与它最近的if相匹配

    (3) else语句后可以接连其他if语句

     

    l if语句中零值比较的注意点

    bool型变量应该直接出现于条件中,不要进行比较

    bool b = TURE;

    if(b)

    {

    //statement 1

    }

    else

    {

    //statement 2

    }

    普通变量和0值比较时(或者常数),0值应该出现在比较符号左边

    int i = 1;

    if(0 == i)

    {

    //statement 1

    }

    else

    {

    //statement 2

    }

    float型变量不能直接进行0值比较,需要定义精度

    #define EPSION 0.0000001

    float f = 0.0;

    if((EPSION <= f) && (f <= EPSION))

    {

    //statement 1

    }

    else

    {

    //statement 2

    }

     

    1. witch

    (1) switch语句对应单个条件多个分值的情形。

    (2) 每个case语句分支必须要有breakbreak,,否则会导致分支重叠。

    (3) default语句有必要加上,以处理特殊情况。

    l case语句中的值只能是整型或字符型。

    l case语句排列顺序分析。

    按字母或数字顺序排列各条语句。

    正常情况放在前面,异常情况放在后面。

    default语句只用于处理真正的默认情况。

    #include <stdio.h>

    void f1(int i)

    {

        if( i < 6 )

        {

            printf("Failed! ");

        }

        else if( (6 <= i) && (i <= 8) )

        {

            printf("Good! ");

        }

        else

        {

            printf("Perfect! ");

        }

    }

    void f2(char i)

    {

        switch(i)

        {

            case 'c':

                printf("Compile ");

                break;

            

            case 'd':

                printf("Debug ");

                break;

            

            case 'o':

                printf("Object ");

                break;

                

            case 'r':

                printf("Run ");

                break;

            

            default:

                printf("Unknown ");

                break;       

        }

    }

    int main()

    {

        f1(5);

        f1(9);  

        f2('o');

        f2('d');

        f2('e');

    }

     

    小结:

    (1) if语句实用于需要“按片”进行判断的情形中。

    (2) switch语句实用于需要对各个离散值进行分别判断的情形中。

    (3) if语句可以安全从功能上代替switch语句,但switch语句无法代替if语句。

    (4) switch语句对于多分支判断的情形更加简洁。

     

    1. 循环语句的基本工作方式

    (1) 通过条件表达式判定是否执行循环体。

    (2) 条件表达式遵循if语句表达式的原则。

     

    1. dowhilefor的区别

    (1) do语句先执行后判断,循环体至少执行一次。

    (2) while语句先判断后执行,循环体可能不执行 ,循环体可能不执行。

    (3) for语句先判断后执行,相比while更简洁。

    #include <stdio.h>

    int f1(int n)

    {

        int ret = 0;

        int i = 0;    

        for(i=1; i<=n; i++)

        {

            ret += i;

        }

        return ret;

    }

    int f2(int n)  //传个负数进来,就是死循环。

    {

        int ret = 0;

        

        while( (n > 0) && (ret += n--) );

        

        return ret;

    }

    int f3(int n)

    {

        int ret = 0;

        if( n > 0 )   //0的时候,死循环。

        {

            do

            {

                ret += n--;

            }while( n );

        }   

        return ret;

    }

    int main()

    {

        printf("%d ", f1(10));  //55

        printf("%d ", f2(10));  //55

        printf("%d ", f3(10));  //55

    }

     

    1. breakcontinue的区别

    (1) break表示终止循环的执行。

    (2) continue表示终止本次循环体,进入下次循环执行。

    #include <stdio.h>

    #include <malloc.h>

    int func(int n)    //可以防止内存泄漏。

    {

        int i = 0;

        int ret = 0;

        int* p = (int*)malloc(sizeof(int) * n);

        do

        {

            if( NULL == p ) break;       

            if( n < 0 ) break;

            for(i=0; i<n; i++)

            {

                p[i] = i;

                printf("%d ", p[i]);

            }     

            ret = 1;

        }while(0);   

        free(p);    

        return ret;

    }

    int main()

    {

        if( func(10) )

        {

            printf("OK");

        }

        else

        {

            printf("ERROR");

        }

    }

    思考:

    switch能否用continue关键字?为什么 ?为什么?

    不能。因为continue关键字是为循环语句设计,与分支语句switch没有任何关系。

     

  • 相关阅读:
    一句话评论设计模式六大原则
    keystore和truststore
    对于纯Java项目,JVM 各个类加载器的加载目标是什么?
    Keytool 使用总结
    饥饿的消费者(Hungry Consumer)模型
    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted c
    如何判断对象已死?
    JMX 管理
    通过 jstat gcutil 来学习JVM 内存分配策略与 GC 发生时机
    程序员也应该有点艺术范儿,不要把“老年代”叫成“Old Generation”
  • 原文地址:https://www.cnblogs.com/free-1122/p/9693265.html
Copyright © 2020-2023  润新知