03 流程控制语句

流程控制语句

条件判断语句

if语句 :

  1. if(条件表达式){语句..}语句: 条件表达式为true则执行, 为false则不执行, (条件表达式的返回值只有true与false)
  2. if(条件表达式){语句1}else{语句2}: 条件表达式为true则执行语句1, 为false则执行语句2

小练习: 判断输入的数值,是偶数还是奇数

let num = prompt("请输入整数:")
let m = parseInt(num)
// 把取整后的值与取整前的值进行比较, 如果小于取整前的值则一定为小数,也可以对1取模看是否有余数
if(m < num || isNaN(m) ) {
  alert("不能输入小数或非法数字")
}else {
  if(m % 2 == 0) {
    alert(`${m} 是偶数`)
  }else {
    alert(`${m} 是奇数`)
  }
}

switch语句 :

switch(表达式) { //switch后的表达式与case后的表达式全等, 则执行case后的代码
  case 表达式 :
    代码...
    break
  case 表达式 :
    代码...
    break
  case 表达式 :
    代码...
    break
  default 表达式 : //default: 所有case都不满足, 执行default
    代码...
    break
}

switch语句执行当比较为true时, 会从当前case处开始执行后续代码, 需要加上break来打断后续代码的执行, switch语句与if语句的功能是重复的

循环语句

while 循环 :

// 初始化表达式
let a = 0;
// 条件表达式
while(a < 5) {
  console.log(a);
  // 循环表达式
  a++;
}

小练习: 在年利率5%的情况下, 存1000元, 多少年后可以存到5000元

let a = 1000
let b = 0 //计数器: 记录循环执行了几次
while(a < 5000) {
 //a  =  a + 50  //利息固定(单利)
  a  =  a + a * 0.05 //一年的收益(本金加利息,复利的情况下)
  b++
}
alert("需要" + b + "年") //33

while(条件表达式){循环体}, 条件表达式为true , 则循环体会一直执行

do…while 循环 :

// 初始化表达式
let a = 0;
// 条件表达式
do {
  console.log(a);
  // 循环表达式
  a++;
}while(a < 5)

do{循环体}while(条件表达式), 先执行循环体, 在对条件表达式进行判断, 因此确保程序最少可以执行一次, (在程序执行多次的情况下, 与while循环没有区别)

for 循环 :

for(let a = 0; a < 10; a++) {
  console.log(a);
}
/*for(①: let a = 0; ②: a < 10; ③: a++) {
  ④: 语句...
}
执行流程:
① 执行初始化状态, 初始化变量
② 执行条件表达式, 判断循环体是否执行(true执行, false终止)
③ 执行更新表达式, 对初始化变量进行修改
④ 重复② ,直到判断为false为止*/

初始化变量在循环语句中, 只会执行一次

小练习:

求100以内3的倍数, 打印个数与总和

let b = 0
let result = 0
//方法一:
// for(let a = 1; a <= 100; a++) {
//   if (a % 3 === 0) {
//     b++;
//     result = result + a
//   }
// }
//方法二
for(let i = 3; i <= 100; i += 3) {
  b++
  result = result + i
}
console.log(`3的倍数一共有${b}个, 总和为${result}`);

求1000以内水仙花数的个数,

(水仙花数: 一个n位数(n>=3), 如果它各个位上的数字的n次幂之和还等于这个数, 那么就是水仙花数)

//方法一:
// for(let a = 100; a<1000; a++) {
//   // 获取百位数
//   let bai = parseInt(a / 100);
//   // 获取十位数
//   let shi = parseInt((a - bai*100)/10)
//   // 获取个位数
//   let ge = a % 10
//   if(bai ** 3 + shi ** 3 + ge ** 3 === a){
//     console.log(a)
//   }
//   // console.log(a, ge);
// }
//方法二: 
for(let a = 100; a < 1000; a++ ) {
  let str = a + ""
  if(str[0] ** 3 + str[1] ** 3 + str[2] ** 3 === a) {
    console.log(a)
  }
}

判断输入的数值是否为质数

let num = +prompt("请输入一个大于一的整数: ")
if (isNaN(num) || num < 1) {
  alert("请输入大于一的整数")
} else {
  let flag = true;
  for (let i = 2; i < num; i++) {
    if (num % i == 0) {
      flag = false;
    }
  }
  if (flag = true) {
  	alert(`${num}是质数`)
  	} else {
  	alert(`${num}不是质数`)
  	}
}

循环嵌套 :

// 外层循环控制图形高度
for(let a = 0; a < 5; a++) {
  // 内层循环控制图形宽度
  for(let b = 0; b < 5; b++) {
    document.write("* &nbsp")
  }
  document.write("<br>")
}

外层循环执行一次, 内层循环执行一个循环周期

小练习:

打印99乘法表

for(let a = 1; a <= 9 ; a++) {
  for(let b = 1; b <= a; b++) {
      // 外层循环执行一次,	内层循环执行一个循环周期
    document.write(`${b} x ${a} = ${a * b} &nbsp &nbsp &nbsp`)
  }
  document.write("<br>")
}

打印100以内所有的质数

for(let a = 2; a < 100; a++) {
  let flag = true //flag这个变量也必须进入循环, 不然为true的只有 a=3(只打印了一次a++后的值)
  for(let b = 2; b < a; b++) {
    if(a % b == 0) {
      flag = false;
    }
    document.write("  ")
  }
  if(flag) {
    document.write(a)
  }
}

break与continue

break: 终止switch与循环语句, 多个循环嵌套时, 会终止最近的循环

continue: 用来跳过当次循环, 然后继续执行

优化质数练习:

  //for(let a = 2; a < 100000; a++) {
  //偶数一定不是质数, 因此从3开始循环, 每次执行更新 a + 2
  for(let a = 3; a < 100000; a+=2) {
  let flag = true //flag这个变量也必须进入循环, 不然为true的只有 a=3(只打印了一次a++后的值)
  //for(let b = 2; b < a; b++) {
  //对a进行开放, 缩小查找距离, (类似于二分查找)
  for(let b = 2; b <= a ** .5; b++) { 
    if(a % b == 0) {
      flag = false;
      break; //进入此判断, 说明不是质数, 没必要在继续循环判断, 因此这次终止循环
    }
    document.write("  ")
  }
  if(flag) {
    document.write(a)
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值