• C语言 第三章 关系、逻辑运算与分支流程控制


    一、关系运算

    若干表达式用关系运算符连接而成,就构成关系表达式。 
    关系表达式中,表达式成立,其值为1(真);表达式不成立,其值为0(假)。
    其他表达式中,其结果如果是非0则为真,结果为0则为假。 
    关系运算符的优先级低于算术运算符,高于赋值运算符。

    关系运算符号:> >= < <= !=

    复制代码
    #include "stdio.h"
    void main()
    {
        //1、关系运算常用于比较
        //2、关系运算只有两种结果,1真,0假
        int a=1,b=2,c=3;
        printf("
     %d",a==b);
        printf("
     %d",a>=b);
        printf("
     %d",a!=b);
        printf("
     %d",1<=2);
        printf("
     %d",c<2);
        printf("
     %d",a+b>c);
    }
    复制代码

    运算结果:

    二、逻辑运算

    !(逻辑非) 
    运算规则:!1 = 0,!0 = 1 。优先级:高。
    &&(逻辑与)
    运算规则:1&&1=1,1&&0=0,0&&1=0,0&&0=0优先级:中
    ||(逻辑或)
    运算规则:0||1=1,1||0=1,0||0=0,1||1=1。
    优先级:低

    注意:短路,当与运算时,第一个表达式为假时,不会再处理第2个表达式。

    a&&b

    当或运算时,第1个表达式为真是,不会再处理第2个表达式

    a||b

    注意:

    另外使用时必须注意以下几点:
    代数中的不等式0<x<5必须写成(x>0)&&(x<5) 
    C语言允许直接对数字或字符进行逻辑运算。
    例如:!5,其结果为0。因为在C语言中,非0的值均认为是“真”,而5是个非零值,对非零值求反,即得零值。5&&‘c’,结果为1。因为字符'c'的ASCLL码为非零的整数,非零值与非零值作“与”运算,结果为真。

    三、运算优先级

     

    四、if语句

    4.0、代码块

    代码块表示一段代码,有{}符号界定,是一个新的作用域,可以有0-n行代码。

    复制代码
    #include "stdio.h"
    void main()
    {
        //代码块1
        {
            int a=1;
            printf("
     %d",a);
        }
        
        //代码块2
        {
            int a=2;
            printf("
     %d",a);
        }
        
    }
    复制代码

    4.1、单if语句

    复制代码
    #include "stdio.h"
    void main()
    {
        int a=1,b=2,c=3;
        if(a<=b&&c++<=c)
        {
            printf("
     yes %d",c);
        }
        printf("
     no %d",c);
    }
    复制代码

    if(条件表达式)
    {
    条件表达式为真时要执行的语句块(分支一语句);

    其语义是:
    如果表达式的值为真,则执行其后的分支一语句, 否则不执行该分支一语句。

    4.2、if else

    if(条件表达式)
    {
    条件表达式为真时要执行的语句块(分支一语句);
    }
    else
    {
    条件表达式为假时要执行的语句块(分支二语句);
    }
    其语义是:如果表达式的值为真,则执行分支一语句,否则执行分支二语句。

    复制代码
    /* Note:Your choice is C IDE */
    #include "stdio.h"
    void main()
    {
        int a,b,c,max;
        scanf("%d",&a);
        scanf("%d",&b);
        scanf("%d",&c);
        //如果条件成立
        if(a>b)
        {
            max=a;
        }
        else  //如果条件不成立
        {
            max=b;
        }
        
        if(c>max){  //有代码块的地方,总是会执行一句
            max=c;
        }
            
        printf("最大值是:%d",max);
    }
    复制代码

     

    4.3、多重if

    复制代码
    /* Note:Your choice is C IDE */
    #include "stdio.h"
    void main()
    {
        int a;
        scanf("%d",&a);
        
        if(a<0)
        {
            printf("负数");
        }
        else if(a==0)
        {
            printf("零");
        }
        else if(a>=100)
        {
             printf("大于100的正数");
        }
        else
        {
            if(a>=1 && a<=50)
            {
                printf("1-50");
            }
            else
            {
                printf("51-99");
            }
        }
        
        printf("
    程序完成");
        
    }
    复制代码

    使用多重if完成下面的内容:
    输入分数,根据分数输出等级.
    0-59 不及格 
    59-70 良好
    71-85 优秀
    86-100 卓越

    4.4、?号:号表达式

    复制代码
    /* Note:Your choice is C IDE */
    #include "stdio.h"
    void main()
    {
        int a,b,c;
        scanf("%d",&a);
        scanf("%d",&b);
        
        //a>10?printf("大于10"):printf("小于等于10");
        c=(a>b)?(a++):(++b);
        
        printf("%d",c);
    }
    复制代码

    五、switch语句

    复制代码
    /* Note:Your choice is C IDE */
    #include "stdio.h"
    void main()
    {
        int a;
        scanf("%d",&a);
        
        switch(a)
        {
            case 1:
                printf("a");
                break;
            case 2:
                printf("b");
                break;
            case 3:
                printf("c");
                break;
            default:
                printf("错误:");
                if(a>3)
                {
                   printf("数字太大。");
                }
                else
                {
                   printf("数字太小");
                }
        }
        
    }
    复制代码

    练习:

    使用switch完成菜单功能,用户按键(1-5)选择。
    1、开始游戏
    2、创建存档
    3、加载存档
    4、加载地图
    5、退出
    请选择(1-5):

    当输入1-5以外的内容时输出错误

    switch练习2:

    输入年份与月份,输出天数。

    年:2008

    月:2

    29

    年:2009

    月:3

    31

    答案:

    复制代码
    #include "stdio.h"
    void main()
    {
        float mark;
    
        printf("请输入分数:");
        scanf("%f",&mark);
    
        if(mark<60)
        {
            printf("不及格");
        }
        else if(mark>=60 && mark<=70)
        {
            printf("良好");
        }
        else if(mark>=71 && mark<=85)
        {
            printf("优秀");
        }
        else
        {
            printf("卓越");
        }
    
    }
    复制代码
    复制代码
    #include "stdio.h"
    void main()
    {
        int menu;
        printf("
    **********************************");
        printf("
    1、开始游戏");
        printf("
    2、创建存档");
        printf("
    3、加载存档");
        printf("
    4、加载地图");
        printf("
    5、退出");
        printf("
    **********************************");
        printf("
    请选择(1-5):");
        scanf("%d",&menu);
        
        switch(menu)
        {
            case 1:
                printf("
    开始游戏了");
                break;
            case 2:
                printf("
    创建存档了");
                break;
            case 3:
                printf("
    加载存档了");
                break;
            case 4:
                printf("
    加载地图了");
                break;
            case 5:
                printf("
    您确定要退出吗?");
                break;
            default:
                printf("a输入错误,请重新输入。");
        }
    }
    复制代码
  • 相关阅读:
    2017年第八届蓝桥杯C/C++ C组国赛 —— 第一题:哥德巴赫分解
    Tree Walk Aizu
    Tree Walk Aizu
    Binary Trees Aizu
    有效的括号
    划分整数
    最大子矩阵和
    最大子段和
    最长上升子序列
    合唱队形
  • 原文地址:https://www.cnblogs.com/Jansens520/p/6538182.html
Copyright © 2020-2023  润新知