ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

2021-09-16---JavaScript基础语法:分支结构

2021-09-16 16:30:23  阅读:164  来源: 互联网

标签:case 09 prompt 16 sum JavaScript alert break var


分支结构

1.程序的流程控制

在这里插入图片描述

2.程序控制的三大结构

  1. 顺序结构:从上到下,从左到右,依次执行每一条语句,不允许跳过任一语句。
  2. 选择结构:根据条件判断,执行某一段代码。
  3. 循环条件;满足某一条件,重复执行某一段代码。
    在这里插入图片描述

3.实现选择结构的语句有哪些

  1. ? :
  2. if
  3. switch

三目运算符 ?:

if

单分支选择

if(条件){
	语句组;
}

<script>
        //只要是从外部获取的数据,都是String类型。
        //i. 根据成绩判断是否发放清华大学的通知书?720
        var i_score = prompt('请输入您的成绩:');
        if(!isNaN(i_score)){  //先判断输入的是否为数字  不是isNaN ,就是数字
            if(i_score > 600){
                        alert('祝贺你!')
                    }
        }
        
        /*
输入任意两个数,然后交换位置输出(如: a=4,b=5 输出 a=5,b=4)

        */
        var a = prompt("请输入一个数");
        var b = prompt('请输入另一个数');
        console.log("交换前\n"+ 'a' + '=' + a +'\nb' + '=' + b);

        var t ;
        t = a;
        a = b;
        b = t;
        console.log("交换后\n"+ 'a' + '=' + a +'\nb' + '=' + b);


        /*
输入任意三个数,由大到小输出
        */
        var a = prompt('please');
        var b = prompt('please');
        var c = prompt('please');
        var t;
        //思路:让a里面存放三个数中最大值,先判断A和B的大小,如果A小于B,则交换,此时A里面存放A和B之间较大的值,然后再判断A和C的大小,如果A小于C,则交换,此时A里面存放的为A B C 中最大的值;然后再判断B和C的大小,如果B小于C,则交换,此时B里面存放的为B C之间较大的值也就是第二大值,那么C里面存放的就是三者之间最小的值。
        //始终保持让A里面存放最大的值
        //判断A B的大小,B 大,则交换
        if(a<b){
            t = a;
            a = b;
            b = t;
        }
        //判断A C 的大小,C大,则交换
        if(a < c){
            t = a;
            a = c;
            c = t;
        }
        //始终保持让B 里面存放第二大值。
        //判断B C 的大小,C大,则交换
        if(b < c){
            t = b;
            b = c;
            c = t;
        }
        console.log(a,b,c);
    </script>

双分支选择

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

多分支选择

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

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

<script>
        /*
        任意输入一个数字,判断是星期几?
        */
        // var a = prompt('请输入');
        // if(a == 1){
        //     alert('星期一');
        // }else if(a == 2){
        //     alert('星期二');
        // }else if(a == 3){
        //     alert('星期三');
        // }else if(a == 4){
        //     alert('星期四');
        // }else if(a == 5){
        //     alert('星期五');
        // }else if(a == 6){
        //     alert('星期六');
        // }else{
        //     alert('星期日');
        // }
        // //判断成绩优(90-100)良(80-89)中(70-79)差(60-69) 不及格(<60)
        // var score = prompt('请输入');
        // if(score > 0 && score <=100){
        //     if (score >= 90 && score <= 100){
        //     alert('you');
        //     }else if(score >= 80){
        //         alert('liang');
        //     }else if(score >= 70){
        //         alert('zhong');
        //     }else if(score >= 60){
        //         alert('cha');
        //     }else{
        //         alert('bujige');
        //     }
        // }else{
        //     alert('lihai');
        // }
        //设计一个具有+、-、*、/、%的简单计算器
        var a = Number( prompt('第一个数'));
        var ch = prompt('运算符');
        var b = Number(prompt('第二个数')) ;
        if(ch == '+'){
            alert(a + '+' + b + '=' + (a + b));
        }else if(ch == '-'){
            alert(a + '-' + b + '=' +(a - b));
        }else if(ch == '*'){
            alert(a + '*' + b + '=' +(a * b));
        }else if(ch == '/'){
            alert(b !== 0 ?  a + '/' + b + '=' +(a / b) : '除数不能为0');
        }else{
            alert(b !== 0 ? a + '%' + b + '=' +(a % b) : '除数不能为0');
        }
    </script>
</body>

Switch 开关语句

switch(表达式){
	case 表达式 : 语句组;[break;]
	case 表达式 : 语句组;[break;]
	……
	case 表达式 : 语句组;[break;]
	[default : 语句组;]
}


规则:先计算switch后表达式的值,该值如果与某个case后表达式的值一致,则执行该case后的语句组,如果后面有break,则退出switch语句;如果没有break。则继续执行后面所有语句组,直到遇到break或右大括号结束。

<script>
        // 任意输入一个数字,判断是星期几?
        // var z = parseInt(prompt('一个数') );
        // switch(z){
        //     case 1 : alert('星期一');break;
        //     case 2 : alert('星期二');break;
        //     case 3 : alert('星期三');break;
        //     case 4 : alert('星期四');break;
        //     case 5 : alert('星期五');break;
        //     case 6 : alert('星期六');break;
        //     case 7 : alert('星期日');break;
        //     default : alert('无效');
        // }

        /*
输入一个 0-6 的整数,判断哪一天是工作日,哪一天是 休息日?
        */
        // var a = parseInt(prompt('0-6的整数')) ;
        // switch( a ){
        //     case 1 : alert('工作日');break;
        //     case 2 : alert('工作日');break;
        //     case 3 : alert('工作日');break;
        //     case 4 : alert('工作日');break;
        //     case 5 : alert('工作日');break;
        //     case 6 : alert('休息日');break;
        //     case 0 : alert('休息日');break;
        //     default : alert('非法');
        // }

    //计算某日是该年的第几天?
    // 2020 8 1
    // 月份  7  是要根据月份来判断加几个月的时间
        var year = parseInt(prompt('年份'));
        var month = parseInt(prompt('月份'));
        var day = parseInt(prompt('日期'));
        var sum = 0;
        switch( month ){
            case 12 : sum += 30;
            case 11 : sum += 31;
            case 10 : sum += 31;
            case 9 : sum += 30;
            case 8 : sum += 31;
            case 7 : sum += 31;
            case 6 : sum += 30;
            case 5 : sum += 31;
            case 4 : sum += 30;
            case 3 : sum += 31;
            case 2 : !(year % 4) && year %100 || !(year % 400) ? sum += 29  : sum+=28;
            case 1 : sum += day;
            // default : alert('无效');            
        }
        alert(sum);

        
    </script>

计算某日是该年的第几天?
这个案例很好地利用了switch的穿透性。首先要能判断出来,我们是根据月份来判断一共要加几个月的时间,知道这一点就能知道switch后面的表达式里面要写到的是month;然后必须从case 12 开始,依次倒着写,这样,如果说输入的日期是11月28号,那么case匹配到month是11,就跳过case 12,从case 11 开始,依次执行后面的每一条语句,也就会依次加上10月,9月,……,2月,一月的天数,这样就能得出总的时间;最后需要注意的是,用户输入的是12月,则加的前11个月的天数,然后再加上12的day数,用户输的是9月,则加的是前8个月的天数,然后加上9月的day数,……,依次……;如果用户输入的是1月,则直接加上一月份的day数就好了。

应用

 <script>
	// switch
        // 1) 任意输入一个数字,判断是星期几? 
        //  var z = parseInt(prompt('一个数') );
        // switch(z){
        //     case 1 : alert('星期一');break;
        //     case 2 : alert('星期二');break;
        //     case 3 : alert('星期三');break;
        //     case 4 : alert('星期四');break;
        //     case 5 : alert('星期五');break;
        //     case 6 : alert('星期六');break;
        //     case 7 : alert('星期日');break;
        //     default : alert('无效');
        // }

        // 2) 输入一个 0-6 的整数,判断哪一天是工作日,哪一天是 休息日? 
        // var a = parseInt(prompt('0-6的整数')) ;
        // switch( a ){
        //     case 1 : alert('工作日');break;
        //     case 2 : alert('工作日');break;
        //     case 3 : alert('工作日');break;
        //     case 4 : alert('工作日');break;
        //     case 5 : alert('工作日');break;
        //     case 6 : alert('休息日');break;
        //     case 0 : alert('休息日');break;
        //     default : alert('非法');
        // }

        // 3) 输入一个月份,输出这个月有多少天?
        // var year = parseInt(prompt('年份')); 
        // var month = parseInt(prompt('月份'));
        // switch( 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 : !(year % 4) && (year % 100) || !(year % 400) ? alert('29天') : alert('28天');
        // }

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

        //方法一
        // var i_score = Number(prompt('您的成绩'));
        // if(i_score >= 0 && i_score <= 100){
        //     switch (true){
        //         case i_score>=90 && i_score<=100 : alert('优');break;
        //         case i_score>=80 : alert('良');break;
        //         case i_score>=70 : alert('中');break;
        //         case i_score>=60 : alert('差');break;
        //         case i_score<60 : alert('不及格');
        //     }  
        // }else{
        //     alert('请输入0-100的数字');
        // }
        //方法二
        // var i_score = parseInt(prompt('您的成绩')/10); 
        // switch(i_score){
        //     case 10 :
        //     case 9 : alert('优');break;
        //     case 8 : alert('良');break;
        //     case 7 : alert('中');break;
        //     case 6 :alert('差');break;
        //     default :alert('不及格');
        // }


        // 5) 计算某日是该年的第几天? 
        // var year = parseInt(prompt('年份'));
        // var month = parseInt(prompt('月份'));
        // var day = parseInt(prompt('日期'));
        // var sum = 0;
        // switch( month ){
        //     case 12 : sum += 30;
        //     case 11 : sum += 31;
        //     case 10 : sum += 31;
        //     case 9 : sum += 30;
        //     case 8 : sum += 31;
        //     case 7 : sum += 31;
        //     case 6 : sum += 30;
        //     case 5 : sum += 31;
        //     case 4 : sum += 30;
        //     case 3 : sum += 31;
        //     case 2 : !(year % 4) && year %100 || !(year % 400) ? sum += 29  : sum+=28;
        //     case 1 : sum += day;
        //     // default : alert('无效');            
        // }
        // alert(sum);

        //这个案例很好地利用了switch的穿透性。首先要能判断出来,我们是根据月份来判断一共要加几个月的时间,知道这一点就能知道switch后面的表达式里面要写到的是month;然后必须从case 12 开始,依次倒着写,这样,如果说输入的日期是11月28号,那么case匹配到month是11,就跳过case 12,从case 11 开始,依次执行后面的每一条语句,也就会依次加上10月,9月,……,2月,一月的天数,这样就能得出总的时间;最后需要注意的是,用户输入的是12月,则加的前11个月的天数,然后再加上12的day数,用户输的是9月,则加的是前8个月的天数,然后加上9月的day数,……,依次……;如果用户输入的是1月,则直接加上一月份的day数就好了。

        // // 6) 用 switch 实现简单计算器 
        //     var i_one = Number(prompt('第一个数'));
        //     var ch = prompt('运算符');
        //     var i_two = Number(prompt('第二个数'));
        //     switch( ch ){
        //         case '+' : alert(i_one + '+' + i_two + '=' + (i_one+i_two));break;
        //         case '-' : alert(i_one + '-' + i_two + '=' + (i_one-i_two));break;
        //         case '*' : alert(i_one + '*' + i_two + '=' + (i_one*i_two));break;
        //         case '/' : i_two === 0 ? alert('除数不能为0') : alert(i_one + '/' + i_two + '=' + (i_one/i_two));break;
        //         case '%' : i_two === 0 ? alert('除数不能为0') : alert(i_one + '%' + i_two + '=' + (i_one%i_two));break;
        //     }

        // 7) 根据血型与性别测试性格 
            // var blood = prompt('血型 A B C 0');
            // var sex = prompt('性别 M W');
            // switch (sex ){
            //     case 'M' : switch (blood){
            //         case 'A' : alert('男A');break;
            //         case 'B' : alert('男B');break;
            //         case 'AB' : alert('男AB');break;
            //         case 'O' : alert('男O');
            //     };
            //     case 'W' : 
            //     switch (blood){
            //         case 'A' : alert('女A');break;
            //         case 'B' : alert('女B');break;
            //         case 'AB' : alert('女AB');break;
            //         case 'O' : alert('女O');
            //     }
            // }
        // 8) 设计一个简单的猜拳游戏
            var play_one = parseInt(prompt('请输入 0为石头 1为剪刀 2位布')) ;
            var play_two = parseInt(prompt('请输入 0为石头 1为剪刀 2位布')) ;
            switch(play_one){
                case 0 : 
                    switch(play_two){
                        case 0 : alert('平局');break;
                        case 1 : alert('先手赢');break;
                        case 2 : alert('后手赢');
                    }break;
                case 1 : 
                    switch(play_two){
                        case 0 : alert('后手赢');break;
                        case 1 : alert('平局');break;
                        case 2 : alert('先手赢');
                    }break;
                case 2 : 
                    switch(play_two){
                        case 0 : alert('先手赢');break;
                        case 1 : alert('后手赢');break;
                        case 2 : alert('平局');
                    }
            }

    </script>

标签:case,09,prompt,16,sum,JavaScript,alert,break,var
来源: https://blog.csdn.net/zjj8008120308/article/details/120331557

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有