【JS】Day02

学习内容

  • 选择结构
  • 三目运算符
  • 三元应用
  • 单分支选择语句
  • 单分支应用
  • 双分支选择语句
  • 双分支应用
  • 多分支选择语句
  • 多分支应用
  • switch分支语句
  • switch应用

选择结构

程序设置的三大结构:
顺序结构: 从上到下,依次执行每一条语句,不能跳过任何一条语句。
选择结构: 根据条件判断,选择执行某一个语句段。
循环结构: 在满足一定条件的时候,重复执行一个语句段。

实现选择结构的语句:
1.三元运算符
2.if
3.switch

 三目运算符

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

//求一个三位数每位数的和
//1. 准备一个变量,接收一个三位的正整数
var i = prompt('请输入一个三位的正整数:');
//2. 分解三位数
var h = parseInt( i / 100 );
var t = parseInt( i % 100 / 10);
var a = i % 10;
//3. 求和
var sum = h + t + a;
//4. 输出结果
alert(i + '这个整数的和是:' + sum);

三元应用

//判断一个年份是闰年还是平年
//准备一个变量,用于接收用户输入的值
var i_year = prompt('请输入一个年份:');
//准备条件
alert(i_year % 4 === 0 && i_year % 100 || i_year % 400 === 0 ? '闰年' : '平年');

//判断一个数是偶数还是奇数
//准备一个变量,接收用户输入的值
var i = prompt('请输入一个整数:');
alert(i % 2 ? '奇数' : '偶数');

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

//切记:JS中只要是从外部获取的数据,都是String类型

单分支选择语句

if(条件){
    语句组;
}

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

单分支应用

//根据成绩判断是否发放清华大学的通知书?
var i_score = prompt('请输入一个成绩:');
if( i_score >= 655 ){
    alert('清华大学欢迎您 !');
}

//输入任意两个数,然后交换位置输出(如:a=4,b=5输出a=5,b=4)
//准备两个变量,接收两个数
var i = prompt('请输入一个整数:');
var j = prompt('请输入一个整数:');
console.log('交换前:\ni = ' + i + '\nj = ' + j);
//空变量
var t = i;
i = j;
j = t;
console.log('交换后:\ni = ' + i + '\nj = ' + j);

//输入任意三个数,由大到小输出
/*
三个数? prompt()
假设:i = 5,j = 3,k = 9
第一个放置最大值?
第一次 i < j  交换位置 确定前两个数中的最大值放到i中
第二次 i < k  交换位置 确定三个数中 的最大值放到i中
第二个放置第二大数?
第一次 j < k  交换位置 
*/  
var i = prompt('请输入一个整数:');
var j = prompt('请输入一个整数:');
var k = prompt('请输入一个整数:');
if(i < j){
    var t = i;
    i = j;
    j = t;
}
if(i < k){
    var t = i;
    i = k;
    k  = t;
}
if(j < k){
    var t = j;
    j = k;
    k = t;
}
console.log(i ,j ,k);

双分支选择语句

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

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

双分支应用

// 求两个数中的最大值?
//声明变量,接收两个整数
var i = prompt('请输入第一个整数:');
var j = prompt('请输入第二个整数:');
//条件判断
if( i > j ){
    alert(i);
}else{
    alert(j);
}
alert(i > j ? i : j);

// 求三个数的最大值?
//准备三个变量,接收三个数
var i = prompt('请输入一个整数:');
var j = prompt('请输入一个整数:');
var k = prompt('请输入一个整数:');
var max = null; //赋值给null时,当我们不再使用max变量时,系统会自动将这个变量销毁,释放出内存空间。
if( i > j ){
    max = i;
}else{
    max = j;
}
if(max < k){
    max = k;
}
alert('最大值:' + max);

// 输入一个成绩,判断是升班还是重修
/*
一个成绩? prompt()
分数线: 90
*/
var i = prompt('请输入一个成绩:');
if( i >= 90 ){
    alert('升班');
}else{
    alert('重修');
}

多分支选择语句

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。

多分支应用

var i = 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中的整数!');
}

//判断成绩优(90-100)良(80-89)中(70-79)差(60-69)不及格(<60)
/*
    成绩
    i >= 90 && i <= 100  优
    i >= 80 && i <= 89   良
    i >= 70 && i <= 79   中
    i >= 60 && i <= 69   差
    i < 60               不及格
*/
var i = prompt('请输入一个成绩:');
if(i < 0 || i > 100){
    alert('回家玩去吧!');
}else{
    if(i >= 90 && i <= 100){
        alert('优');
    }else if(i >= 80){
        alert('良');
    }else if(i >= 70){
        alert('中');
    }else if(i >= 60){
        alert('差');
    }else{
        alert('不及格');
    }
}

//设计一个具有+、-、*、/、%的简单计算器
/*
    1 + 1
    1. 需要几个变量,分别存储什么数据?
    三个变量, i    ch   j
    2. 有多少个条件,需要哪个语法的支撑?
    +、-、*、/、%   多分支
*/
var i = parseInt(prompt('请输入一个整数:'));
var ch = prompt('请输入一个算术运算符:');
var j = parseInt(prompt('请输入另一个整数:'));
if(ch === '+'){
    alert(i + j);
}else if(ch === '-'){
    alert(i - j);
}else if(ch === '*'){
    alert(i * j);
}else if(ch === '/'){
    alert(j === 0 ? '除数不能为零!' : (i / j).toFixed(2));
}else if(ch === '%'){
    alert(j === 0 ? '除数不能为零!' : (i % j));
}else{
    alert('其它运算暂未开放,敬请期待!');
}

switch分支语句

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

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

switch应用

//任意输入一个数字,判断是星期几?
//准备一个变量,接收一个数字
var i = parseInt(prompt('请输入一个1~7中的整数:'));
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('请输入1~7中的整数!');
}

//输入一个0-6的整数,判断哪一天是工作日,哪一天是休息日?
//准备一个变量,接收一个数字
var i = parseInt(prompt('请输入一个0~6中的整数:'));
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('请输入0~6中的整数!');
}

// 输入一个月份,输出这个月有多少天?
//准备一个变量,接收一个月份
var i_month = parseInt(prompt('请输入一个月份:'));
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天');
}

//判断成绩优良中差不及格
/*
    100
    90 ~ 99   优
    80 ~ 89   良
    70 ~ 79
    60 ~ 69
    59 ~ 0
*/
var i = parseInt(prompt('请输入一个成绩:'));
switch(parseInt(i / 10)){
    case 10 : 
    case 9 : alert('优');break;
    case 8 : alert('良');break;
    case 7 : alert('中');break;
    case 6 : alert('差');break;
    default : alert('不及格');
}

//计算某日是该年的第几天?
/*
    1. 需要哪些变量? 年  月  日
    2. 根据月份判断,从这个月的前一个月开始 加到 第一月的天数,然后再加上日
*/
var i_year = parseInt(prompt('请输入一个年份:'));
var i_month = parseInt(prompt('请输入一个月份:'));
var i_date = parseInt(prompt('请输入一个日:'));
var sum = 0; //只能0不会影响和的结果
switch(i_month){
    case 12 : sum += 30;
    case 11 : sum += 31;
    case 10 : sum += 30;
    case 9 : sum += 31;
    case 8 : sum += 31;
    case 7 : sum += 30;
    case 6 : sum += 31;
    case 5 : sum += 30;
    case 4 : sum += 31;
    case 3 : sum += !(i_year % 4) && i_year % 100 || !(i_year % 400) ? 29 : 28;
    case 2 : sum += 31;
    case 1 : sum += i_date;
}
alert(i_year + '年' + i_month + '月' + i_date + '日是' + i_year + '年中的第' + sum + '天');

//用switch实现简单计算器
// 数字  符号   数字
//  +  -  *  /  %
var i = parseInt(prompt('Please input a Int:'));
var ch = prompt('请输入一个算术运算符:');
var j = parseInt(prompt('请输入一个整数:'));
switch(ch){
    case '+' : alert(i + j);break;
    case '-' : alert(i - j);break;
    case '*' : alert(i * j);break;
    case '/' : alert(j === 0 ? '除数不能为零!' : (i / j).toFixed(2));break;
    case '%' : alert(j === 0 ? '除数不能为零!' : i % j);break;
    default : alert('运算符错误!');
}

//设计一个简单的猜拳游戏
//两个人:需要几个变量? 2
//每一个人可以有多少种出拳方式:石头、剪刀、布
//玩家一
var player1 = prompt('石头、剪刀、布,三种方式\n请出拳:');
var player2 = prompt('石头、剪刀、布,三种方式\n请出拳:');
switch(player1){
    case '石头' : 
        switch(player2){
            case '石头' : alert('平局');break;
            case '剪刀' : alert('玩家一胜');break;
            case '布' : alert('玩家二胜');break;
            default : alert('耍赖');
        }
        break;
    case '剪刀' : 
        switch(player2){
            case '石头' : alert('玩家二胜');break;
            case '剪刀' : alert('平局');break;
            case '布' : alert('玩家一胜');break;
            default : alert('耍赖');
        }
        break;
    case '布' : 
        switch(player2){
            case '石头' : alert('玩家一胜');break;
            case '剪刀' : alert('玩家二胜');break;
            case '布' : alert('平局');break;
            default : alert('耍赖');
        }
        break;
    default : alert('耍赖');
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值