C语言 第三章 关系、逻辑运算与分支流程控制 一、关系运算 二、逻辑运算 三、运算优先级 四、if语句 五、switch语句

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

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

C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句
#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);
}
C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句

运算结果:

C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句

C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句

二、逻辑运算

!(逻辑非) 
运算规则:!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码为非零的整数,非零值与非零值作“与”运算,结果为真。

三、运算优先级

 C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句

C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句

四、if语句

4.0、代码块

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

C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句
#include "stdio.h"
void main()
{
    //代码块1
    {
        int a=1;
        printf("
 %d",a);
    }
    
    //代码块2
    {
        int a=2;
        printf("
 %d",a);
    }
    
}
C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句

C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句

4.1、单if语句

C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句
#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);
}
C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句

C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句

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

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

C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句

4.2、if else

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

C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句
/* 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);
}
C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句

C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句

 C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句

4.3、多重if

C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句
/* 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("
程序完成");
    
}
C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句

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

4.4、?号:号表达式

C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句
/* 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);
}
C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句

五、switch语句

C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、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("数字太小");
            }
    }
    
}
C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句

练习:

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

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

switch练习2:

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

年:2008

月:2

29

年:2009

月:3

31

答案:

C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句
#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("卓越");
    }

}
C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句
C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句
#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输入错误,请重新输入。");
    }
}
C语言 第三章 关系、逻辑运算与分支流程控制
一、关系运算
二、逻辑运算
三、运算优先级
四、if语句
五、switch语句