Skip to content

08 作业 2

主观题

核心知识点

  1. 打印 0-20 之间的整数,将每个数输出到控制台

    js
    for (let i = 0; i <= 20; i++) {
      console.log(i);
    }
  2. 计算 1-1000 之间的累加和,并且打印输出到页面中

    js
    let sum = 0;
    let i = 1;
    
    while (i <= 1000) {
      sum += i;
      i++;
    }
    
    document.write("1-1000 的累加和为:" + sum);
  3. 页面依次打印 100-200 之间,可以被 6 整除的数字

    js
    let num = 100;
    
    while (num <= 200) {
      if (num % 6 === 0) {
        document.write(num + "<br>");
      }
      num++;
    }
  4. 用户弹窗输入两个数字,页面输出两个数字中的最大值(请使用三元运算符完成)

    js
    let num1 = prompt("请输入第一个数字:");
    let num2 = prompt("请输入第二个数字:");
    
    let max = num1 > num2 ? num1 : num2;
    
    document.write("两个数字中的最大值为:" + max);
  5. 用户输入一个数,计算 1 到这个数的累加和

    • 比如 用户输入的是 5,则计算 1~5 之间的累加和
    • 比如用户输入的是 10,则计算 1~10 之间的累加和
    js
    let num = prompt("请输入一个数字:");
    let sum = 0;
    
    for (let i = 1; i <= num; i++) {
      sum += i;
    }
    
    document.write("1 到 " + num + " 的累加和为:" + sum);
  6. 输出成绩案例(请使用 if 多分支来书写程序)

    题目描述:接收用户输入的分数,根据分数输出对应的等级字母 A、B、C、D、E,

    • 90 分 (含) 以上,输出:A
    • 80 分 (含)~ 90 分 (不含),输出:B
    • 70 分 (含)~ 80 分 (不含),输出:C
    • 60 分 (含)~ 70 分 (不含),输出:D
    • 60 分 (不含) 以下,输出 E
    js
    let score = prompt("请输入您的成绩:");
    
    if (score >= 90) {
      document.write("您的等级为 A");
    } else if (score >= 80 && score < 90) {
      document.write("您的等级为 B");
    } else if (score >= 70 && score < 80) {
      document.write("您的等级为 C");
    } else if (score >= 60 && score < 70) {
      document.write("您的等级为 D");
    } else {
      document.write("您的等级为 E");
    }
  7. 输出星期练习(请使用 switch 分支语句来书写程序)

    题目描述:请用户输入 1 个星期数。就将对应的英文的星期打印出来。

    • 比如用户输入 ' 星期一 ',则 页面可以打印 monday
    • 英文自己查有道。比如星期一是 monday 星期二是 tuesday
    js
    let day = prompt("请输入一个星期数(例如:星期一): ");
    
    switch (day) {
      case "星期一":
        document.write("monday");
        break;
      case "星期二":
        document.write("tuesday");
        break;
      case "星期三":
        document.write("wednesday");
        break;
      case "星期四":
        document.write("thursday");
        break;
      case "星期五":
        document.write("friday");
        break;
      case "星期六":
        document.write("saturday");
        break;
      case "星期日":
        document.write("sunday");
        break;
      default:
        document.write("您输入的不是有效的星期数。");
    }
  8. 用户登录验证

    题目描述:接收用户输入的用户名和密码,若用户名为 "admin" ,且密码为 "123456" ,则提示用户登录成功!否则,让用户一直输入。

    js
    let username = "";
    let password = "";
    
    while (username !== "admin" || password !== "123456") {
      username = prompt("请输入用户名:");
      password = prompt("请输入密码:");
    
      if (username === "admin" && password === "123456") {
        alert("登录成功!");
        break;
      }
    
      alert("用户名或密码不正确,请重新输入!");
    }

综合案例变形

需求:根据用户选择计算两个数的结果:

题目描述:打开页面出现一个提示框,注意是一直提示的,' 请您选择 + - * / ,如果输入 q,则是退出结束程序

  • 如果输入的是 + - * / 其中任何一个,比如用户输入是 + ,则是计算求和,如果用户输入是 * 则是计算乘积
    • 则提示第一个弹窗,提示用户:' 请您输入第一个数字 '
    • 输入完毕则继续提示第二个弹窗,提示用户:' 请您输入第二个数字 '
    • 都输入完毕,则通过警示框 alert 输出结果
  • 如果输入是 q,则结束程序
js
let operator = "";
let num1 = 0;
let num2 = 0;

while (operator !== "q") {
  operator = prompt("1. 输入 + - * / 计算两个数字的结果\n2. 如果输入 q 则退出");

  if (operator === "+" || operator === "-" || operator === "*" || operator === "/") {
    num1 = parseInt(prompt("请您输入第一个数字:"));
    num2 = parseInt(prompt("请您输入第二个数字:"));

    let result;
    switch (operator) {
      case "+":
        alert("计算求和结果为:" + (num1 + num2));
        break;
      case "-":
        alert("计算差值结果为:" + (num1 - num2));
        break;
      case "*":
        alert("计算乘积结果为:" + num1 * num2);
        break;
      case "/":
        alert("计算商值结果为:" + num1 / num2);
        break;
    }
  } else if (operator !== "q") {
    alert("您输入的操作不合法,请重新输入。");
  }
}
js
while (true) {
  let operator = prompt("1. 输入 + - * / 计算两个数字的结果\n2. 如果输入 q 则退出");
  if (operator === "q") {
    break;
  } else if (operator !== "+" && operator !== "-" && operator !== "*" && operator !== "/") {
    alert("您输入的操作不合法,请重新输入。");
    continue;
  }

  let num1 = Number(prompt("请您输入第一个数字"));
  let num2 = Number(prompt("请您输入第二个数字"));
  let result;
  if (operator === "+") {
    alert("计算求和结果为:" + (num1 + num2));
  } else if (operator === "-") {
    alert("计算差值结果为:" + (num1 - num2));
  } else if (operator === "*") {
    alert("计算乘积结果为:" + num1 * num2);
  } else {
    alert("计算商值结果为:" + num1 / num2);
  }
}

排错题

排错题 1

javascript
// 请问以下代码会出现什么问题,如何解决?
// 需求:求用户输入 2 个数字的和
let num1 = prompt("请输入第一个值");
let num2 = prompt("请输入第二个值");
alert(num1 + num2);

// 答案
// prompt 方法返回的是字符串类型,而不是数字类型。因此 num1 和 num2 变量中存储的是字符串类型的值。
// 在使用加号运算符时,如果其中一个操作数是字符串类型,那么另一个操作数也会被转换为字符串类型。因此 num1 + num2 的结果将是两个字符串拼接在一起而不是相加。

// 解决办法
// 可以将字符串类型的值转换为数字类型,可以使用 parseInt() 或 parseFloat() 方法将字符串转换为整数或浮点数类型
let num1 = parseInt(prompt("请输入第一个值"));
let num2 = parseInt(prompt("请输入第二个值"));
alert(num1 + num2);

// 使用加号运算符将字符串类型的值直接转换为数字类型
let num1 = +prompt("请输入第一个值");
let num2 = +prompt("请输入第二个值");
alert(num1 + num2);

排错题 2

javascript
// 请问下面代码会出现什么问题,怎么去解决?

// 判断用户名的案例,用户会输入用户名
// 1. 如果用户名输入'迪丽热巴',则页面弹出 '用户名输入正确'
// 2. 如果用户名输入不是'迪丽热巴',否则弹出'用户名输入不正确'

let username = prompt("请输入用户名:");
if ((username = "迪丽热巴")) {
  alert("用户名输入正确");
} else {
  alert("用户名输入不正确");
}

// 答案
// 在条件判断语句中,使用了单个等号 = 而不是相等运算符 == 或 ===,将会把赋值操作的结果作为条件判断表达式的结果,因此将始终进入 if 分支。
// 因为条件判断语句中使用的是赋值操作 =, 所以无论用户输入什么内容,都会被赋值给 username 变量,然后自动转换为布尔类型的 true,导致无法正确地判断用户名是否正确。

// 解决办法
// 将相等运算符 === 用于条件判断语句中,确保 username 的值严格等于字符串 "迪丽热巴"
let username = prompt("请输入用户名:");
if (username === "迪丽热巴") {
  alert("用户名输入正确");
} else {
  alert("用户名输入不正确");
}

排错题 3

js
// 请问下面代码会出现什么问题,怎么去解决?

// 需求,用户输入 1~10 之间的整数,则循环打印用户输入的次数
// 注意此处有 2 个错误,找出并且修正

let num = prompt("请输入一个 1~10 之间的整数");
let i = 1;
while (i < num) {
  console.log(`我是第${i}句话`);
}

// 答案
// 1. prompt() 方法返回的是字符串类型,而不是数字类型。因此 num 变量中存储的是字符串类型的值。
// 2. 在 while 循环中,没有对 i 变量进行自增操作,导致 i 的值始终为 1,从而导致无限循环。

// 解决办法
// 使用 parseInt() 将字符串类型的 num 转换为数字类型,并且在 while 循环中使用了自增操作,确保 i 每次加 1,最终达到循环打印用户输入次数的目的。
let num = parseInt(prompt("请输入一个 1~10 之间的整数"));
let i = 1;
while (i <= num) {
  console.log(`我是第${i}句话`);
  i++;
}

排错题 4

js
// bug:请你找到下面代码代码穿透的原因,并找到匹配不上 case 里面的值的问题进行修改

// 需求:用户输入 1~4 之间整数,对应输出 '春' '夏' '秋' '冬'
// 例如用户输入 1 则输出 '春' ,用户输入 2,则输出 '夏' 以此类推
// 注意:此处有 2 个错误,找出并且修正
let num = +prompt("请你输入一个 1-4 之间的值");
switch (num) {
  case "1":
    alert("春");
  case "2":
    alert("夏");
  case "3":
    alert("秋");
  case "4":
    alert("冬");
  default:
    alert("请输入 1~4 之间整数");
    break;
}

// 答案
// 1. 在使用 switch 语句时,每个 case 后面应该加上 break;,否则将会发生代码穿透现象,即满足当前 case 条件后,后续的所有 case 语句都会被执行。
// 2. 用户输入的应该为数字类型的值,而不是字符串。如果条件判断中使用了字符串类型的值,将无法匹配到正确的分支。

// 解决办法
// 去掉了 case 条件中的引号,确保条件判断中使用的是数字类型的值,并且在每个 case 后添加了 break; 语句,确保只执行当前分支的代码块。
let num = +prompt("请你输入一个 1-4 之间的值");
switch (num) {
  case 1:
    alert("春");
    break;
  case 2:
    alert("夏");
    break;
  case 3:
    alert("秋");
    break;
  case 4:
    alert("冬");
    break;
  default:
    alert("请输入 1~4 之间整数");
    break;
}

客观题

地址:javascript 基础第二天客观题-pink 老师 (wjx.top)

  1. if…else 语句的 if 和 else 两个句子里的代码能同时被执行吗?

    js
    A: 不可以因为两个条件不同
    B: 有时候可以有时候不可以
    C: 2 个都不能执行
    D: 可以因为条件是并列的

    答案选项为 A: 不可以,因为两个条件不同(两个条件是互斥的)。

    if…else 语句中,只有当 if 条件不满足时,才会执行 else 的代码块,否则 else 的代码块将不会被执行。

    因此,在 if…else 语句中,ifelse 的代码块永远不可能同时被执行。

  2. 仔细阅读代码,请问下面的输出结果是?

    js
    switch (2) {
      case 1:
        console.log(1);
        break;
      case 2:
        console.log(2);
      default:
        console.log(3);
        break;
    }
    js
    A: 3
    B: 2 3
    C: 1 2 3
    D: 2

    答案选项为 B: 2 3。

    因为 switch 语句中的条件为 2,所以会匹配到第二个 case 条件,输出 2

    但是由于第二个 case 没有添加 break 语句,因此会继续执行到下一个语句,即输出 3

    注意,在 switch 语句中,不需要在最后一个 case 分支添加 break 语句,因为最后一个 case 分支的结束也意味着 switch 语句的结束。

  3. 结束当前循环,继续进行下一次循环的关键词是()

    js
    A: break
    B: continue
    C: end
    D: return

    答案选项为 B: continue。

    在 JavaScript 中,continue 语句用于退出当前循环中的迭代,并开始执行下一个迭代。当代码执行到 continue 语句时,它会立即停止当前迭代中余下的语句,然后跳转回循环的顶部,继续下一次迭代。

    与之不同的是,break 语句用于完全退出循环体,而不是仅仅跳过当前迭代并继续循环。

  4. 以下哪些情况可能会出现无限循环()【多选题】

    js
    A: for(;;){}
    B: while(true){}
    C: for(){}
    D: while("itcast"){}

    答案选项为 AB

    A 是一个没有条件的 for 循环,会一直执行下去;

    B 是一个 while 循环,其判断条件为 true,也会一直执行下去。

    C 和 D 都包含有条件判断,不会导致无限循环。

  5. 以下 while 循环的次数是()

    js
    let i = 0;
    while (i === 1) {
      i++;
    }
    js
    A: 无限次;
    B: 有语法错不能执行;
    C: 一次也不执行;
    D: 执行一次;

    答案选项为 C: 一次也不执行。

    由于 i 的初始值为 0,不满足循环条件 i===1,所以这个 while 循环一次都不会执行,

  6. 下列哪个运算符需要同时对值与类型来比较是否相等?

    js
    A: =
    B: ==
    C: ===
    D: !=

    答案选项为 C。=== 会同时对值与类型进行比较,判断是否相等。

  7. 请问以下代码运算结果是

    js
    console.log(11 && 22);
    console.log(false && "hello");
    console.log(33 || 44);
    console.log(0 || 55);
    js
    A: 22 hello 33 55
    B: 11 hello 33 55
    C: 22 false 33 0
    D: 22 false 33 55

    答案选项为 D。

    • && 运算符会先判断左边的表达式,如果为真,则继续计算右边的表达式,并返回结果。如果左边的表达式为假,则直接返回其结果,不再计算右边的表达式。
    • || 运算符也是类似的,只不过是左边的表达式为真时直接返回其结果,否则继续计算右边的表达式。
  8. 请根据运算符的优先级给下面的运算符做个排序?
    a 逻辑运算符 ‖
    b 比较运算符 >
    c 一元运算符 ++
    d 算数运算符 +

    js
    A: abcd;
    B: dcab;
    C: cdba;
    D: cbda;

    答案选项为 B。

    1. 一元运算符 ++ 的优先级最高。
    2. 算数运算符 + 的优先级高于比较运算符 > 和逻辑运算符 ||
    3. 比较运算符 > 的优先级高于逻辑运算符 ||
  9. 运算结果正确的是?

    js
    console.log(1 > 2);
    console.log(2 >= 2);
    console.log(2 <= 2);
    console.log(2 == "2");
    console.log(2 != "2");
    js
    A: false true true true false
    B: false true true false false
    C: false true true true true
    D: false false false true false

    答案选项为 B: false true true false false

    解释如下:

    • 1 > 2 : 1 不大于 2,返回 false。
    • 2 > = 2 : 2 等于 2,返回 true。其中 > = 表示大于等于。
    • 2 <= 2 : 2 等于 2,返回 true。其中 <= 表示小于等于。
    • 2 == '2' : 虽然数据类型不同,但是值相等,返回 true。其中 == 表示相等。
    • 2 != '2' : 虽然数据类型不同,但是值相等,返回 false。其中 != 表示不相等。
  10. 用 break 语句可以使流程跳出 switch 语句体,也可以用 break 语句在循环结构终止本层循环体,从而提前结束本层循环,继续下一次循环。

    js
    ;
    ;

    答案选项为对。

    break 语句可以用于跳出 switch 语句和循环语句。

    switch 语句中,当程序执行到 break 语句时,会跳出 switch 语句体,继续执行后面的代码。这样可以有效地避免程序进入不必要的分支。

    js
    let num = 2;
    
    switch (num) {
      case 1:
        console.log("case 1");
        break;
      case 2:
        console.log("case 2");
        break;
      default:
        console.log("default");
        break;
    }
    // 输出: case 2

    在循环语句中,当程序执行到 break 语句时,会提前结束本层循环并跳出循环体,继续执行循环语句后面的代码。这样可以有效地控制循环结束的条件,避免进入死循环。

    js
    for (let i = 0; i < 5; i++) {
      if (i === 3) {
        break;
      }
      console.log(i);
    }
    // 输出: 0 1 2
    // 当 i 的值为 3 时,程序执行到 break 语句,提前结束了本层循环,并跳出循环体,因此只输出了 0、1 和 2。
  11. continue 不会打断当次循环执行。

    js
    ;
    ;

    答案选项为对。

    continue 语句可以用于跳过本次循环中余下尚未执行的语句,直接进入下一次循环。

    当程序执行到 continue 语句时,会结束当前这次循环的执行,直接进入下一次循环。

    需要注意的是,continue 语句只能用于循环语句中,不能用于其他语句中。

    js
    for (let i = 0; i < 5; i++) {
      if (i === 2) {
        continue;
      }
      console.log(i);
    }
    // 输出: 0 1 3 4
    // 当 i 的值为 2 时,程序执行到 continue 语句,跳过了这次循环的执行,直接进入了下一次循环,因此只输出了 0、1、3 和 4。
  12. 下列关于 if 多分支语句和 switch 分支语句说法错误的是?()

    js
    A: if 多分支和 switch 多分支没有区别
    B: if 多分支语句我们开发中使用更多更提倡使用
    C: switch 分支语句一般用于等值判断if 多分支适合于区间判断
    D: 大部分情况下if 多分支可以用来替换 switch

    答案选项为 A。

    if 多分支语句和 switch 分支语句在用法上有很大的区别:

    • if 多分支语句适合于判断区间,即当变量落在某个区间时,执行不同的代码块。
    • switch 分支语句适合于等值判断,即当变量与某个值相等时,执行对应的代码块。

    一般来说,使用哪种语句更好取决于具体情况。当需要判断的条件比较明显且固定时,可以使用 switch 分支语句;而当需要根据某个变量的值来进行判断时,可以使用 if 多分支语句。在实际开发中,两者都有各自的应用场景。

    选项 B 和 C 都是正确的。选项 D 则需要具体情况具体分析,不能一概而论。

  13. 下列不属于程序三大流程控制结构的是?()

    js
    A: 顺序结构从上往下执行语句
    B: 分支结构根据条件选择执行
    C: 循环结构某段代码被重复执行
    D: 左右结构代码先计算右边再计算左边

    答案选项为 D。

    程序的三大流程控制结构是: 顺序结构、分支结构和循环结构。其中:

    • 顺序结构指程序按照代码的书写顺序依次执行,从上到下,逐条执行。
    • 分支结构指根据条件的不同选择性地执行不同的代码块,包括单项分支和多项分支。
    • 循环结构用于重复执行某个代码块,直到满足某个条件才停止循环。

    选项 D 描述的是一种表达式求值的规则,即先计算右边操作数的值,再根据运算符进行相应的计算。这与程序的流程控制无关,因此不属于程序三大流程控制结构。

简答题 关键字汇总

能够简单的说出来这些关键字干啥用的

  • let: 用于声明变量,可以在代码块作用域内定义局部变量。
  • typeof: 用于检测数据类型,返回一个字符串,表示操作数的数据类型。
  • if: 条件语句,用于指定一个或多个条件,并根据结果执行相应的代码块。
  • else: 在 if 语句中使用,当 if 中的条件不成立时,执行 else 代码块中的语句。
  • switch: 分支语句,用于指定多个条件并根据每个条件执行不同的代码块。
  • case: 在 switch 语句中使用,用于指定一个条件并执行相关代码块,如果没有哪一个 case 符合,则跳转到默认语句。
  • default: 在 switch 语句中使用,如果所有 case 都不符合要求,则执行 default 代码块中的语句。
  • while: 循环语句,重复执行某些代码块,只要给定的条件为真。
  • break: 可以用于退出循环,在执行循环体的过程中,如果遇到 break,则会强制退出循环。
  • continue: 可以用于跳过循环中的某个迭代,继续后面的迭代。