导航

(三).JavaScript的分支结构和循环结构

Posted on 2022-04-10 22:04  云语不知  阅读(79)  评论(0)    收藏  举报

1. 分支结构

1.1 分支语句之单分支

①.语法:

if(值,如果不是布尔值会强制转换成布尔值) {
  代码块;
}

②.案例:

// 案例:如果a变量的值加键盘上输入的数大于100,就打印我爱你二狗子!
  var a = 30;
// prompt():页面弹出输入框的函数,可以获取用户输入内容,返回对应的字符串
  var num = parseInt(prompt('可以输入一个数字'));
  if (num + a > 100) {
    console.log('我爱你二狗子');
  }

1.2 分支语句之双分支

①.语法:

  if(值,这个值如果不是布尔值,会强转为布尔值){
    代码块
  }else{
    代码块
  }

②.案例:

  var num = parseInt(prompt('请输入一个数'));
  if (num > 0) {
    console.log(--num);
  } else {
    console.log(++num);
  }

  // 如果双分支代码块只有一行代码,可以使用三元运算符替代
  var num1 = parseInt(prompt('请输入一个数'));
  num1 > 0 ? num1-- : num1++;
  console.log(num1);

1.3 分支语句之多分支

①.语法:

  if(值,这个如果不是布尔值,会强转为布尔值){
    代码块
  }else if(值,这个如果不是布尔值,会强转为布尔值){
    代码块
  }else if(值,这个如果不是布尔值,会强转为布尔值){
    代码块
  }else{
    代码块
  }

②.案例:

// 输入体重判断属于什么样的体型
// 70 - 90  骨感美
// 90 - 120 性感美
// 120 - 150 微胖美
// 150 - 200 丰满美
// 200 -300  灵魂美

        var weight = parseInt(prompt('输入你的体重'));
// 注意点:不可以使用  70<=weight<=90这种写法
// 原因:70<=weight 返回true或false 与后面的90比较会转换成数字0或1,与原先的语义不一致
        if (weight >= 70 && weight <= 90) {
            console.log('骨感美');
        } else if (weight >= 90 && weight <= 120) {
            console.log('性感美');
        } else if (weight >= 120 && weight <= 150) {
            console.log('微胖美');
        } else if (weight >= 150 && weight <= 200) {
            console.log('丰满美');
        } else if (weight >= 200 && weight <= 300) {
            console.log('灵魂美');
        } else {
            console.log('请输入70 - 300之间的数');
        }

1.4 分支语句之 switch case

①.语法

1. key是一个值,不会进行转化
2. 从上到下,当key与value全等于的时候会进入该分支,只有遇到break才会跳出switch
   如果没有匹配的case分支,会执行最后的default默认分支
    switch (key) {
        case value:
            代码块;
            break;
        case value:
            代码块;
            break;
        ...
        default:
            break;
    }

break:用来跳出循环

②.案例

    // 1.输入一个数字,判断是星期几 
    var day = parseInt(prompt('请输入一个(1-7)的数字'));
    // 注意点
    // 1、值的判断使用的是 ===
    // 2、进入某个分支,只有遇到break才能跳出switch
    switch (day) {
        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的数字');
            break;
    }

    // 2.	输入分数,判定优良差和不及格(多分支版本  switch版本)
    //     90 ~ 100    A
    //     80~90       B
    //     70~80       C
    //     60~70       D
    //     0~ 60       不及格
    //     其它        提示
    var score = parseInt(prompt('请输入你的分数'));
    // 这种true的用法也需要注意
    switch (true) {
        case score >= 90 && score <= 100:
            console.log('A');
            break;
        case score >= 80 && score <= 90:
            console.log('B');
            break;
        case score >= 70 && score <= 80:
            console.log('C');
            break;
        case score >= 60 && score <= 70:
            console.log('D');
            break;
        case score >= 0 && score <= 60:
            console.log('不及格');
            break;
        default:
            console.log('请输入一个0-100的分数');
            break;
    }

    // 3.输入年龄 判定是童年少年青年中年老年
    var age = parseInt(prompt('输入年龄'));
    switch (true) {
        case age > 0 && age <= 6:
            console.log('童年');
            break;
        case age > 6 && age <= 18:
            console.log('少年');
            break;
        case age > 18 && age <= 30:
            console.log('青年');
            break;
        case age > 30 && age <= 50:
            console.log('中年');
            break;
        case age > 50:
            console.log('老年');
            break;
        default:
            console.log('请输入正确的年龄。');
    }

2. 循环结构

2.1 for 循环

①.语法

    for (初始化表达式,条件表达式,自增自减表达式){
            循环体;
    }

②.执行流程

    循环执行过程
    1.首次执行
    1-1 执行初始化表达式
    1-2 执行条件表达式(符合条件执行循环体,不符合跳出循环)
    1-3 执行循环体
    1-4 执行自增自减表达式

    2.非首次执行
    2-1 执行条件表达式 (符合条件执行循环体,不符合跳出循环)
    2-2 执行循环体
    2-3 执行自增自减表达式

③.总结

    1. 首次执行和非首次执行 区别在于是否执行初始化表达式
    2. 循环的此时看i 每次循环中的i都会变化
    3. 循环的结束条件,条件表达式的值为false

④.案例

    // 打印1-100之间的整数
    for (var i = 1; i <= 100; i++) {
        // console.log(i);
    }

    // 打印1-100之间的偶数
    for (var index = 1; index <= 100; index++) {
        if (index % 2 == 0) {
            // console.log(index);
        }
    }

    // 计算1到100的和
    var sum = 0;
    for (var i = 1; i <= 100; i++) {
        sum += i;
    }
    // console.log(sum);

    // 计算1-100之间所有偶数的和
    var sum = 0;
    for (var i = 1; i <= 100; i++) {
        if (i % 2 == 0) {
            sum += i;
        }
    }
    // console.log(sum);

    // 计算100的阶乘 1*2....*100
    var sum = 1;
    for (var i = 1; i <= 100; i++) {
        sum *= i;
    }
    // console.log(sum);

    // 打印三位数位上有3或者7的数字
    for (var i = 100; i < 1000; i++) {
        var x = parseInt(i / 100);
        var y = parseInt(i / 10 % 10);
        var z = i % 10;
        if (x == 3 || x == 7 || y == 3 || y == 7 || z == 3 || z == 7) {
            // console.log(i);
        }
    }

    // 求100 - 999之间的水仙花数
    for (var i = 100; i <= 999; i++) {
        var x = parseInt(i / 100);
        var y = parseInt(i / 10 % 10);
        var z = i % 10;
        if (x * x * x + y * y * y + z * z * z == i) {
            console.log(i);
        }
    }