7.比较与逻辑运算符

  • 比较运算符(关系运算符)( > , < , >= ,<= , == , !=)

    • 比较运算符的结果只有两种,true和false

      • e.g

        image
    • , < , <= ,>= 运算符的优先级高于== ,!=
      * e.g

      ![image](http://upload-images.jianshu.io/upload_images/9148742-db71caef3dc327af.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
      
  • 逻辑运算符(与、或、非)

    • && “与”:两边同时为true,结果是true;如果任意一边为false,结果是false

      image
    • || “或”:两边同时为false,结果是false;如果任意一边为true,结果为true

      image
    • ! “非”(单目运算符):取反,true取反是false;false取反是true

    • 运算符优先级:! 高于 && 高于 ||

    • 编程规范

      • 在if语句的条件判断中,不要用bool变量和true\false直接进行比较

      • 不规范的示例

        image
      • 正确写法

        • 判断条件为真时

          image
        • 判断条件为假时

          image
  • 运算符优先级

    image
    • 规律
      • 不考虑()圆括号时,单目运算符优先级最高,赋值运算符优先级最低
      • 不考虑单目运算符时,算术运算符 高于 比较运算符,比较运算符 高于 逻辑运算符
      • 算术运算符中,“乘除”高于“加减”
      • 比较运算符中,“含大于或小于”高于“等于”“不等于”
      • 逻辑运算符中,“与”高于“或”
    • 示例1:给定一个年份,判断是否是闰年
      • 条件判断:
        • (能被400整除的,或者能被4整除并且不能被100整除)(400年中97个闰年)
        • (能被400整除 || 能被4整除 && 不能被100整除)
        • ((year % 400 == 0 )|| (year % 4 ==0)&& (year % 100 != 0))
        • 如果年份是2016
          • ((2016%400==0)|| (2016%4==0)&&(2016%100 != 0))
          • ((16==0)|| (0==0)&&(16 != 0))
          • (false || true && true)
          • (false || true)
          • (true)
  • 条件组合测试

    • 列条件表

      image
    • 测试所有的条件是否期望结果与实际结果相同

      image
    • 若所有的测试结果都相符则说明程序正确

  • else - if语句

    • e.g 从控制台输入学生成绩,根据学生成绩从控制台输出对应等级,“优”、“良”、“中”、“差”。(提示:成绩大于100或小于0,控制台输出“成绩输入”)
      • 写法一:都用if写

        image
      • 写法二:用if...else写,优化写法一

        image
      • 写法三:else if语句,优化写法二

        image
        • 如果else分支中只有一个if,则可以把else 和 else分支中的if结合起来,else if表示
  • 区间覆盖测试

    • e.g

      image
  • 边界测试

    • 由区间覆盖测试转换为边界测试

    • e.g

      image
  • switch语句

    • e.g

      image
  • 枚举(enum)类型

    • e.g

      image
    • 枚举成员默认值从0开始,往下依次递增

    • 默认值可以修改,修改后后面的值依次递增

    • 最后一个成员后面的“,”可以省略

    • enum与class同级别,不要写在class中

  • 将枚举与switch语句结合

    • 先写枚举

      image
    • 声明枚举变量

      image
    • 输入sw,连按两次Tab

      image
    • 效果

      image
    • 输入枚举变量

      image
    • 点击鼠标左键,效果如图

      image
    • 补充完成

      image
  • 测试:从小到大 : 单元测试(以函数为单位) >> 集成测试 (将多个单元测试过的函数组合起来)>> 系统测试(将测试过的子系统装配成一个完整系统)

  • 作业

作业一:飞行棋游戏:

(1)从键盘输入步数,

如果步数输入是5,在控制台输出:(A,B都是全角)

您让玩家A走了5步:

棋盘:
B□□□□A□□□□

如果步数输入是8,在控制台输出:

您让玩家A走了8步:

棋盘:
B□□□□□□□A□

作业二:习题:

(1)从控制台输入三个数,对三个数进行比较,从控制台输出,最大数和最小数。

(2)从控制台输入6个数,对6个数进行比较,从控制台输出最大数和最小数。

     (声明两个变量min、max,和其他变量进行比较,

       如果变量小于min,把其值给min;如果变量大于max,把其值给max)

(3)从控制台输入一个不多于5位的正整数,1、求出它是几位数。

     2、按逆序输出每一位上的数字。例如:输入123,输出321。

     (提示:对10取余数,得到个位,对10取商后再对10取余数得到十位,......)

(4)从控制台输入一个5位数,判断它是不是回文数(个位与万位相同,十位和千位相同)。

     举例:12321是一个回文数。

(5)从控制台输入年月日,进行判断后,从控制台输出,这一天是本年的第多少天。

(6)从控制台输入星期几的第一个字母来判断一下是星期几,

     如果第一个字母一样,则继续判断第二个字母。

(7)玩家先输入押注金额(必须是50的倍数),然后猜大或小(投掷骰子2,、4、6是大,1、3、5是小)

     如果猜对了,押注金额翻倍,从控制台输出押注金额和"恭喜猜中了"

     如果猜错了,押注金额清零,从控制台输出押注金额和"输了,再接再厉,愿赌服输!"

    (提示:Random r = new Random(); 

            int num = r.Next(6) + 1;  //r.Next(6) 在(0-5)中取随机整数)

(8)任意输入一个年龄(整数),如果0-17之间,输出未成年;18-50之间,输出成年;51-110之间,输出老年。

(9)输入信用卡积分,显示可兑换的奖品。

     如果积分小于2000时,可兑换50元充值卡;

     小于5000时,可兑换电火锅;

     小于10000时,可兑换笔记本;

     达到或超过10000时,可兑换iphone一台。

(10)企业根据利润,发放奖金。

     利润低于或等于20万元时,奖金可提2%;

     高于20万元,低于等于40万元之间时,低于等于20万元的部分仍按2%提成,高于20万元的部分,可提成4%;

     高于40万元,低于等于60万元之间时,高于40万元的部分,可提成6%;

     高于60万元,低于等于80万元之间时,高于60万元的部分,可提成8%;

     高于80万元,低于等于100万元之间时,高于80万元的部分,可提成10%;

     高于100万元,超过100万元的部分按12%提成。

     从控制台输入当月利润,从控制台输出应发放奖金的总数。

你可能感兴趣的:(7.比较与逻辑运算符)