JavaScript的选择结构你真的了解吗?(看完这一篇就够了)

​🌈个人主页:前端青山
🔥系列专栏:JavaScript篇
🔖人终将被年少不可得之物困其一生

依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript-选择结构

目录

选择结构

实现选择结构的语句

三元(目)运算符

案例

判断一个年份是闰年还是平年

判断一个数是偶数还是奇数

判断一个数是正数还是负数

if 分支语句

单分支选择语句

案例

根据成绩判断是否发放清华大学的通知书?

输入任意两个数,然后交换位置输出(如:a=4,b=5输出a=5,b=4)

输入任意三个数,由大到小输出

双分支选择语句

案例

求两个数中的最大值?

求三个数的最大值?

输入一个成绩,判断是毕业还是挂科

多分支选择语句

案例

任意输入一个数字,判断是星期几?

判断成绩优(90-100)良(80-89)中(70-79)差(60-69)不及格(<60)

设计一个具有+、-、*、/、%的简单计算器

switch 分支语句

案例

任意输入一个数字,判断是星期几?

输入一个0-6的整数,判断哪一天是工作日,哪一天是休息日?

输入一个月份,输出这个月有多少天?

判断成绩优(90-100)良(80-89)中(70-79)差(60-69)不及格(<60)

计算某日是该年的第几天?

选择结构

用于判断给定的条件,根据条件的结果来选择执行不同的语句段。

实现选择结构的语句

  1. 三元运算符

  2. if

  3. switch

三元(目)运算符

条件?语句:语句

规则:如果条件为真,则执行?后面的语句。 如果条件为假,则执行:后面的语句。

案例

  • 判断一个年份是闰年还是平年
    <script>
        //判断一个年份是闰年还是平年
       
        一个年份? 当我们不知道这个数据的时候?问用户要?怎么要?
        1. prompt()   类型:String   需要的是数字:parseInt()  parseFloat() Number()
        //判断闰年还是平年,根据条件进行判断,选择一种结果
        //判断闰年的条件 1. 能被4整除但不能被100整除  2. 能被400整除
        能被4整除: 余数为0    0 天然为假 我们这里需要让0为真,怎么让0为真? 1. 0 === 0   2. !0
        不能被100整除: 余数不能为0   非0的数,天然为真
        i_year % 4 === 0 && i_year % 100 !== 0 || i_year % 400 === 0
        !(i_year % 4) && i_year % 100 || !(i_year % 400)
    
        //准备一个变量,接收一个年份:
        var i_year = parseInt(prompt('请输入一个年份:'));
        alert(i_year % 4 === 0 && i_year % 100 !== 0 || i_year % 400 === 0 ? '闰年' : '平年');
    </script>
  • 判断一个数是偶数还是奇数
 <script>
        //判断一个数是偶数还是奇数
   
        一个数? prompt()   parseInt()
        偶数还是奇数? 
        比如有一个数4  5
        //  0 假
        能被2整除 ? 奇数 : 偶数

        能被2整除 === 0 ? 偶数 : 奇数

        能被2整除 == 0 ? 奇数 :偶数
    
        //准备一个变量,接收一个整数:
        var i = parseInt(prompt('请输入一个整数:'));
        //判断
        alert(i % 2 ? '奇数' : '偶数');
    </script>
  • 判断一个数是正数还是负数
  <script>
        //判断一个数是正数还是负数
        一个数? prompt()  parseInt()
        正数还是负数?
        大于0 : 正数
        小于0 : 负数
        等于0 : 既不是正数,也不是负数

        i === 0 ? '既不是正数,也不是负数' : i > 0 ? '正数' : '负数'
        //准备一个变量,接收一个整数
        var i = parseInt(prompt('请输入一个整数:'));
        alert(i === 0 ? '既不是正数,也不是负数' : i > 0 ? '正数' : '负数');
    </script>

if 分支语句

单分支选择语句

if(条件){
    语句组;
}

流程:当程序执行到if时,先计算表达式的值,如果值为true,则执行后面大括号中的语句;如果值为false时,执行if语句后面的其它语句

案例

  • 根据成绩判断是否发放清华大学的通知书?
 <script>
        //根据成绩判断是否发放清华大学的通知书?
        成绩? prompt() parseInt()
        清华大学的通知书,前提条件?满足分数线? 700
        成绩 >= 700
            通知书

        单分支
        //1. 准备一个变量,接收一个成绩
        var i_score = parseInt(prompt('请输入一个成绩:'));
        //2. 判断成绩是否合格
        if( i_score >= 700 ){
            alert('祝贺你拿到清华大学的通知书!');
        }
    </script>
  • 输入任意两个数,然后交换位置输出(如:a=4,b=5输出a=5,b=4)
   <script>
        //输入任意两个数,然后交换位置输出(如:a=4,b=5输出a=5,b=4)
        输入任意两个数: prompt()  parseInt()
        交换位置: 需要一个空容器,进行交换
        //1. 准备两个变量,接收两个整数:
        var a = parseInt(prompt('请输入一个整数:'));
        var b = parseInt(prompt('请输入一个整数:'));
        //输出一次未交换的数据
        console.log('交换前:\na=' + a + '\nb=' + b);
        //交换位置
        //准备一个空变量
        var t = a;
        a = b;
        b = t;
        //输出一次交换后的数据
        console.log('交换后:\na=' + a + '\nb=' + b);
    </script>
  • 输入任意三个数,由大到小输出
 <script>
        //输入任意三个数,由大到小输出
        输入任意三个数? parInt() prompt()
        大到小输出(排序):判断
        两个数比较 a b c
        1. 确保 a 和 b 中的最大值放到 a中
            if(a < b){
                交换a 和 b 中的值
            }
        2. 确保a 和 c 中的最大值放到 a中
            if(a < c){
                交换a 和 c 中的值
            }
        3. 确保 b 和 c 中的最大值放到 b 中
            if(b < c){
                交换 b 和c中的值
            }
        //1. 准备三个变量,接收数据
        var a = parseInt(prompt('请输入一个整数:'));
        var b = parseInt(prompt('请输入一个整数:'));
        var c = parseInt(prompt('请输入一个整数:'));
        //2. 确保 a 和 b 中的最大值放到 a中
        if(a < b){
            var t = a;
            a = b;
            b = t;
        }
        //3. 确保a 和 c 中的最大值放到 a中
        if(a < c){
            var t = a;
            a = c;
            c = t;
        }
        //4. 确保 b 和 c 中的最大值放到 b 中
        if(b < c){
            var t = b;
            b = c;
            c = t;
        }
        //5. 输出结果
        console.log(a,b,c);
    </script>

双分支选择语句

if(条件){
    语句组;
}else{
    语句组;
}

流程:当程序执行到if时,先计算表达式的值,值为true时:执行if后面语句组;值为false时,执行else后的语句组。

案例

  • 求两个数中的最大值?
  <script>
        求两个数中的最大值?
        两个数? prompt() parseInt()
        最大值 一条件,两个结果,使用双分支

        //1. 准备两个变量,接收数据
        var i = parseInt(prompt('请输入一个整数:'));
        var j = parseInt(prompt('请输入一个整数:'));
        //2. 选择语句(双分支)
        if( i > j ){
            alert(i);
        }else{
            alert(j);
        }
    </script>
  • 求三个数的最大值?
<script>
        求三个数的最大值?
三个数? prompt() parseInt()
最大值? 两两比较最为简单  a b c 
1. 求出a和b中的最大值,放到一个新的变量中。max
2. 如果c > max,则将c的值存放到max中
        //1. 准备变量
        var a = parseInt(prompt('请输入一个整数:'));
        var b = parseInt(prompt('请输入一个整数:'));
        var c = parseInt(prompt('请输入一个整数:'));
        //最大值
        var max;
        //2. 比较前两个数,求出最大值
        if(a > b){
            max = a;
        }else{ //否则
            max = b;
        }
        //3. 比较下一个数与max,求出最大值
        if(c > max){
            max = c;
        }
        //4. 输出结果
        alert('最大值是:' + max);
    </script>
  • 输入一个成绩,判断是毕业还是挂科
  <script>
        输入一个成绩,判断是升班还是重修
        成绩 prpmpt() parseInt()
        升班还是重修? 及格分数线:90
        一个条件 (成绩 >= 90)    ‘毕业'  '挂科'  双分支
        //1. 准备一个变量
        var i_score = parseInt(prompt('请输入一个成绩:'));
        //2. 判断
        if( i_score >= 90 ){
            alert('毕业');
        }else{
            alert('挂科');
        }
    </script>

多分支选择语句

if(条件1){
    语句组1;
}else if(条件2){
    语句组2;
}
……
}else if(条件n){
    语句组n;
}else{
    语句组n + 1;
}

流程:当程序执行到if时,先判断条件1的值,值为true时,执行语句组1;值为false时,再判断条件2的值,值为true时,执行语句组2;值为false时,再判断条件3的值,依此类推,直到判断条件n的值,值为true时,执行语句组n,值为false时,执行语句组n+1;

案例

  • 任意输入一个数字,判断是星期几?
  <script>
        任意输入一个数字,判断是星期几?
        一个数字: prompt() parseInt()
        1 2 3 4 5 6 7   多条件   多结果   多分支
        //准备一个变量
        var i = parseInt(prompt('请输入1~7中的整数:'));
        //判断
        if(i === 1){
            alert('星期一');
        }else if(i === 2){
            alert('星期二');
        }else if(i === 3){
            alert('星期三');
        }else if(i === 4){
            alert('星期四');
        }else if(i === 5){
            alert('星期五');
        }else if(i === 6){
            alert('星期六');
        }else if(i === 7){
            alert('星期日');
        }else{
            alert('请输入1~7中的整数!');
        }
    </script>
  • 判断成绩优(90-100)良(80-89)中(70-79)差(60-69)不及格(<60)
  <script>
        判断成绩优(90-100)良(80-89)中(70-79)差(60-69)不及格(<60)
        成绩 : prompt()  parseInt()
        90-100 : score >= 90 && score <= 100
        80-89:   score >= 80 && score < 90
        70-79:   score >= 70 && score < 80
        60-69:   score >= 60 && score < 70
        <60:     score < 60
        多分支
        //1. 准备一个变量
        var score = parseInt(prompt('请输入一个成绩:'));
        //2. 根据成绩进行判断
        if(score < 0 || score > 100){
            alert('一边儿玩去!');
        }else{
            if(score >= 90 && score <= 100){
                alert('优');
            }else if(score >= 80){
                alert('良');
            }else if(score >= 70){
                alert('中');
            }else if(score >= 60){
                alert('差');
            }else{
                alert('不及格');
            }
        }
       
    </script>
  • 设计一个具有+、-、*、/、%的简单计算器
    <script>
        设计一个具有+、-、*、/、%的简单计算器
        准备变量:3个 第一个接收数字   第二个接收运算符  第三个接收数字  prompt() parseInt()
        根据运算符进行判断
        +、-、*、/、%   多条件 多结果  多分支
        //1. 准备变量
        //1.1 第一个数字
        var i = parseInt(prompt('请输入第一个整数:'));
        //1.2 运算符
        var ch = prompt('请输入一个算术运算符:');
        //1.3 第二个数字
        var j = parseInt(prompt('请输入第二个整数:'));
        //2. 根据运算符进行判断
        if(ch === '+'){
            alert(i + '+' + j + '=' + (i + j));
        }else if(ch === '-'){
            alert(i + '-' + j + '=' + (i - j));
        }else if(ch === '*'){
            alert(i + '*' + j + '=' + i * j);
        }else if(ch === '/'){
            alert(j === 0 ? '除数不能为零!' : i + '/' + j + '=' + (i / j).toFixed(2));
        }else if(ch === '%'){
            alert(j === 0 ? '除数不能为零!' : i + '%' + j + '=' + i % j);
        }else{
            alert('请输入一个正确的算术运算符!');
        }
    </script>

switch 分支语句

switch(表达式){
    case 表达式 : 语句组; [break;]
    case 表达式 : 语句组; [break;]
    ……
    case 表达式 : 语句组; [break;]
    [default : 语句组;]
}
规则:先计算switch后的表达式的值,如果这个值与 某个case后表达式的值 相同时,则执行这个case后面的语句组,如果语句组后有break,则直接跳出switch语句。如果没有break,则继续执行后面所有的语句组,直到遇到break或右大括号停止。

案例

  • 任意输入一个数字,判断是星期几?
  <script>
        任意输入一个数字,判断是星期几?
        数字
        7个条件,每一个条件对应一个结果
        //1. 准备一个变量
        var i = parseInt(prompt('请输入一个1~7中的整数:'));
        //2. 根据这个整数进行判断
        switch(i){
            case 1 : console.log('星期一'); break;
            case 2 : console.log('星期二'); break;
            case 3 : console.log('星期三'); break;
            case 4 : console.log('星期四'); break;
            case 5 : console.log('星期五'); break;
            case 6 : console.log('星期六'); break;
            case 7 : console.log('星期日'); break;
            default : console.log('输入错误!');
        }
    </script>
  • 输入一个0-6的整数,判断哪一天是工作日,哪一天是休息日?
   <script>
        输入一个0-6的整数,判断哪一天是工作日,哪一天是休息日?
        输入一个0-6的整数 prompt() parseInt()
        工作日:  1 2 3 4 5
        休息日: 6 7
       //1. 准备一个变量
       var i = parseInt(prompt('请输入0~6中的整数:'));
       //2. 根据这个整数进行判断
       switch(i){
            case 1 : 
            case 2 : 
            case 3 : 
            case 4 : 
            case 5 : console.log('工作日'); break;
            case 6 : 
            case 0 : console.log('休息日'); break;
            default : console.log('末日'); break;
       }
    </script>
  • 输入一个月份,输出这个月有多少天?
  <script>
        输入一个月份,输出这个月有多少天?
        一个月份 : prompt() parseInt()
        1  3  5  7 8 10  12   (31)
        4  6 9  11   (30)
        2  闰年(29)  平年(28)
        //1.  准备一个变量
        var i_month = parseInt(prompt('请输入一个月份:'));
        //2. 根据月份进行判断
        switch(i_month){
            case 1 : 
            case 3 : 
            case 5 : 
            case 7 : 
            case 8 : 
            case 10 : 
            case 12 : alert('31天');break;
            case 4 : 
            case 6 : 
            case 9 : 
            case 11 : alert('30天'); break;
            case 2 :   
                //准备变量,接收年份
                var i_year = parseInt(prompt('请输入一个年份:'));
                alert(!(i_year % 4) && i_year % 100 || !(i_year % 400) ? '29天' : '28天');
        }

        /*
            1. 能被4整除
              0 (假) 想办法让0变为真   0 == 0  0 === 0  !0
            i % 4
            2. 不能被100整除
            i % 100   结果是一个不为0的数 本身就是真  
        */
    </script>
  • 判断成绩优(90-100)良(80-89)中(70-79)差(60-69)不及格(<60)
    <script>
        判断成绩优(90-100)良(80-89)中(70-79)差(60-69)不及格(<60)
        成绩 : prompt()  parseInt()
                                        10 优
        90-100 : 90  91  92  93  99     9  优
        80-89:   80  81  82  83  89     8  良
        70-79:   70 ~79                 7  中
        60-69:   60 61  69              6  差
        <60:     

        多分支
        //1. 准备一个变量
        var score = parseInt(prompt('请输入一个成绩:'));
        //2. 根据成绩进行判断
        if(score < 0 || score > 100){
            alert('一边儿玩去!');
        }else{
           switch(parseInt(score / 10)){
                case 10 : 
                case 9 : alert('优'); break;
                case 8 : alert('良'); break;
                case 7 : alert('中'); break;
                case 6 : alert('差'); break;
                default : alert('不及格');
           }
        }
       
    </script>
  • 计算某日是该年的第几天?
<script>
        计算某日是该年的第几天?
        1. 需要哪些变量?
         年  月   日

         根据月份
         从当前月份的之前月份开始加
         2022、11、30
         10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 日
         2022、3、1
         2 + 1 + 日
        //1. 准备变量
        //1.1 年
        var year = parseInt(prompt('请输入一个年份:'));
        //1.2 月
        var month = parseInt(prompt('请输入一个月份:'));
        //1.3 日
        var date = parseInt(prompt('请输入日:'));
        //1.4 总天数
        var sum = 0;
        //2. 根据月份判断 (从当前月的 ***前面*** 所有月份天数的和)
        switch(month){  // 12月20日 
            case 12 : sum += 30;  //(30是11月份的天数) sum = 0 + 30  30
            case 11 : sum += 31; //(31是10月份的天数)  sum = 30 + 31
            case 10 : sum += 30;  //(30是9月份的天数) sum = 61 + 30
            case 9 : sum += 31;   // sum = 91 + 31
            case 8 : sum += 31;   // sum = 122 + 31
            case 7 : sum += 30;   // sum = 153 + 30
            case 6 : sum += 31;  // sum = 183 + 31
            case 5 : sum += 30;  // sum = 214 + 30
            case 4 : sum += 31;  // sum = 244 + 31
            case 3 : sum += !(year % 4) && year % 100 || !(year % 400) ? 29 : 28;      // sum = 275 + 28
            case 2 : sum += 31;  // sum = 303 + 31
            case 1 : sum += date; // sum = 334 + 20  sum = 354
        }
        //3. 输出结果
        alert(year + '年' + month + '月' + date + '日是' + year + '年中的第' + sum + '天');
       
    </script>

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年12月13日
下一篇 2023年12月13日

相关推荐