05 C语言条件判断

本节将深刻讨论C语言的条件判断语句编写

[前言]

        通过前面的学习,我们已经知道了如何去修改计算机的内存数据。C语言程序在运行后,机器会直接执行程序中修改内存的指令。

        但是在实际应用中,我们不想让机器在开机后直接执行全部的指令,而是希望当满足某一条件后,机器才会去执行相应的指令,比如说按下不同的按钮(满足不同的条件)后,机器会选择性地执行那些满足条件的指令。C语言的条件判断语句应运而生。

        C语言程序要执行一系列的事件,对于没有条件判断的程序,CPU就会一股脑的把所有的事件都做完;而对于有条件判断的程序CPU只会执行那些满足条件的事件,这样就既实现了功能,又能减少CPU资源的占用。

        好嘞!我记下了(\ _ /)

一、运算符


        在学习C语言的条件判断语句之前,我们得先知道C语言的条件怎么写

        比如说当变量达到某一个数值后,或者说当一个变量的数值大于某一个变量的数值,又或者说当一个变量的数值小于某一个变量的数值......

        以上的种种情况都离不开C语言的运算符,C语言常见的运算符总结如下表:

        啊嘞?!!!有这么多运算符Σ(⊙▽⊙"a?这些到底该怎么用啊,一时间接受不了QAQ

        哈哈,不要担心,我一个一个慢慢给你说哈

        算数运算符,就是我们常用的四则运算,比较特殊的是有一个求余运算符'%',顾名思义,这个运算符就是用来求余数的,比如说我们计算12÷5=2······2(余数为2),所以12%5=2

        下面给出算数运算符的代码示例:

#include <stdio.h>

int main()
{
    int a = 12 ;   //定义变量a,赋值为12
    int b = 5 ;    //定义变量b,赋值为5

    printf("a+b = %d\n", a+b) ;   //打印a+b的值
    printf("a-b = %d\n", a-b) ;   //打印a-b的值
    printf("a*b = %d\n", a*b) ;   //打印a×b的值
    printf("a/b = %d\n", a/b) ;   //打印a÷b的值
    printf("a%%b = %d\n", a%b) ;  //打印a%b的值(打印百分号要写成%%)

    return 0 ;
}

        前辈,我看到a/b=2(即12/5=2),可是12/5结果不应该是2.4吗?

        你的观察很敏锐!这是因为a和b是int类型的,在C语言中,整数类型(int,short,long)的数据在进行除法运算时如果运算结果有小数部分,则会自把小数部分舍弃掉;如果想要保留小数部分, 则需要把a和b这两个变量定义为浮点型(float,double),具体代码如下:

#include <stdio.h>

int main()
{
    float a = 12 ;    //定义float类型变量a,赋值为12
    float b = 5 ;     //定义float类型变量b,赋值为5

    printf("a/b = %.2f\n", a/b) ;  //按'%.2f'格式输出a/b的运算结果,
                                    //'.2'修饰%d表示保留2位小数
    return 0 ;
}

        自加(++)自减(--)是特殊的算数运算符,它们的功能是在原数值的基础上加1或者减1:比如说a++就等价于a=a+1;同理a--就等价于a=a-1

        前辈!++a和a++到底有什么区别呢?

        ++a和a++的区别体现在语句执行的先后顺序上:++a是指在语句执行之前就已经完成了a=a+1的操作,而a++是指在语句执行之后,才进行a=a+1的操作;--a和a--也是同样的道理,比如我们运行下面一段代码:

#include <stdio.h>

int main()
{
    int a = 0 ;    //定义一段int大小的内存a,赋值为0

    printf("%d\n", ++a) ;  //a先加1,然后再打印a

    a = 0 ;        //a赋值为0

    printf("%d\n", a++) ;  //先打印a,然后a再加1
    printf("%d\n", a) ;    //打印a的值

    return 0 ;
}

        唔~你这么说我就懂了!

        关系运算符,就是我们生活中常说的大于小于等于,具体代码如下:

#include <stdio.h>

int main()
{
    int a = 12 ;    //定义变量a,赋值为12
    int b = 5 ;     //定义变量b,赋值为5

    printf("a>b  = %d\n", a>b) ;   //打印a>b的值
    printf("a<b  = %d\n", a<b) ;   //打印a<b的值
    printf("a==b = %d\n", a==b) ;  //打印a==b的值

    return 0 ;
}

        前辈,为什么这些关系运算的结果是0或者1?

        在C语言中,我们用1来表示真(成立),0来表示假(不成立)

        上面的代码中,我们定义了a=12,b=5,那么a>b显然是成立的,所以a>b打印的值为1(真,成立),而a<b和a==b就是不成立的了,所以a<b和a==b打印的值为0(假,不成立)。

        唔——原来如此

        逻辑运算符,就是我们生活中所说的“或者”( || )“并且”(&&)“除了”(!)

        “或者”( || ):比如我说:“我今天中午要吃番茄炒蛋,或者是鱼香肉丝”,意思是我只需要吃番茄炒蛋和鱼香肉丝中的一种,硬性条件是:有其中一个就可以了!(当然,两个都有也可以,多多益善嘿嘿~);如:条件1 || 条件2只要有一个条件是"成立"的,不管另一个条件是否成立,"条件1 || 条件2"这条语句就是成立的。

        “并且”(&&):比如我说:“我今天中午要吃宫保鸡丁,并且还要来一瓶可乐”,意思是说宫保鸡丁和可乐两个东西必须都有,少了一个,我就会感到愤怒,硬性条件是:两个必须都要有!;如:条件1 && 条件2只要有一个条件是"不成立"的,不管另一个条件是否成立,"条件1 && 条件2"这条语句都不成立。

        “除了”(!):比如我说:“我今天晚上随便吃点,除了鲱鱼罐头”,意思是什么食物都可以,只要不是鲱鱼罐头,硬性条件是:只要不是我指定的就可以了!;如:!条件,除了这个条件,其他条件都成立。

        原来这就是逻辑运算符呀~

        最后在说一下复合运算符(其他的运算符自己拓展哦~),+=-=*=/=,这些其实是程序员偷懒的的写法,它们等价于:

a += b       等价于 a = a + b     //把a + b的值赋值给a
a -= b        等价于 a = a - b      //把a - b的值赋值给a
a *= b        等价于 a = a * b     //把a * b的值赋值给a
a /= b        等价于 a = a / b      //把a / b的值赋值给a

        这下你明白复合运算符是什么意思了吧,初学者可能会觉得莫名其妙、难以理解,但我相信你在后面深入学习C语言的时候,一定会爱上这种写法!

        哦哦~我记下了!

二、if...else


        经过对C语言运算符的了解,我们就可以自己写一些条件语句了。

        首先我们要说的条件语句就是if...else语句,放在我们实际的生活场景可以理解为:

   如果(条件成立)就....否则(条件不成立)就...

        下面用if...else写一段简单的启动游戏的逻辑代码:要求用户输入"1",就可以启动游戏

#include <stdio.h>

int main()
{
    int a = 0 ;                    //定义一段int大小的内存a,赋值为0

    printf("请输入指令:") ;
    scanf("%d", &a) ;              //将用户键盘输入的数赋值给内存a    
 
    if(a==1)                       //如果检测到内存a的值为1(条件成立)
    {
        printf("原神,启动!\n") ;
    }
    else                           //否则(条件不成立)
    {
        printf("无任何反应\n") ;
    }

    return 0 ;
}

        哇(眼冒金光)!

三、if...else if...else


        if...else if...else(多条件)是if...else(单条件)的升级版,

  如果(条件1成立)就....如果(条件2成立)就....否则(条件不成立)就...

        它能够处理有多种条件的场合,比如说我想要通过输入不同的指令来启动不同的游戏

#include <stdio.h>

int main()
{
    int a = 0 ;                   //定义一段int大小的内存a,赋值为0

    printf("请输入指令:") ;
    scanf("%d", &a) ;             //将用户键盘输入的数赋值给内存a

    if(a==1)                      //如果检测到内存a的值为1(条件1成立)
    {
        printf("原神,启动!\n") ;
    }
    else if(a==2)                 //如果检测到内存a的值为2(条件2成立)
    {
        printf("星铁,启动!\n") ;
    }
    else if(a==3)                 //如果检测到内存a的值为3(条件3成立)
    {
        printf("崩三,启动!\n") ;
    }
    else                          //否则(条件都不成立)
    {
        printf("无任何反应\n") ;
    }

    return 0 ;
}

四、switch case


        switch case也是一种多条件判断语句,是if...else if...else语句的升级版,它可以让代码看起来更加简洁、干练

        switch的参数是一个变量(可以是一段内存,也可以是一个表达式),当这个变量是不同的值(不同的条件)时,会执行对应不同的语句,语句执行完毕后,会有break终止当前的case分支,并跳出switch语句。如果没有break,程序将继续执行下一个case语句。

        我们用switch case语句来复刻前面if...else if...else实现的通过输入不同的指令来启动不同的游戏

#include <stdio.h>

int main()
{
    int a = 0 ;             //定义一段int大小的内存a,赋值为0

    printf("请输入指令:") ;
    scanf("%d", &a) ;       //将用户键盘输入的数赋值给内存a

    switch(a)               //判断内存a的值
    {
        case 1 : printf("原神,启动!\n") ; break ;  //如果a==1
        case 2 : printf("星铁,启动!\n") ; break ;  //如果a==2
        case 3 : printf("崩三,启动!\n") ; break ;  //如果a==3
        default: printf("无任何反应\n")   ; break ;  //否则
    }

    return 0 ;
}

        哇~用switch case写果然看起来清晰多了呢!

        好的~下面总结一下本节所阐述的内容:

        (1)在写条件之前要先了解C语言的运算符。

        (2)C语言的运算符主要包括:算数运算符(加减乘除,求余,自增自减),关系运算符(大于,小于,等于,不等于),逻辑运算符(与,或,非),复合运算符(加等于,减等于,乘等于,除等于),...(剩下的自己总结)

        (3)单条件判断语句:if...else

        (4)多条件判断语句:if...else if...else,switch case

[end]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值