Skip to content

循环练习

心得:

  1. 循环题的核心就是先有思路,再把自己的思路用代码描述出来。

  2. 循环的核心在于判断条件,核心就是循环多少次,找的核心规律就是这个。

  3. 针对循环嵌套,一定要抛开第一层循环去思考。 例如: 第一层循环写下来,我就要思考,在这层循环我要做什么事。(九九乘法表 第一行循环我要输出几个式子) 第二层循环,把i替换成固定的一个值,然后思考在当前i下我要做什么?(九九乘法表第二层 我要在第二行输出2个式子)

  4. 输出一个3行5列的*

js
for (let i = 1; i <= 3; i++) {
  let str = ``;

  for (let j = 1; j <= 5; j++) {
    str += "*";
  }

  console.log(str);
}
  1. 输出一个等腰三角形
    *
   ***
  *****
 *******
*********
js
var row = 5; //总行数

for (let i = 1; i <= row; i++) {
  let str = "";

  // 拼接空白
  for (let j = 1; j <= row - i; j++) {
    str += "";
  }

  // 拼接星星
  for (let s = 1; s <= 2 * i - 1; s++) {
    str += "*";
  }

  console.log(str);
}
  1. 求1-100之间的所有素数之和
js
let sum = 0;

for (let i = 1; i <= 100; i++) {
  let isFind = false;

  for (let j = 2; j < i - 1; j++) {
    if (i % j === 0) {
      isFind = true;
      break;
    }
  }

  if (!isFind && i > 1) {
    console.log("素数", i);
    sum += i;
  }
}

console.log("所有素数的和", sum); //1060
  1. 输出99乘法表,效果如下:
1*1=1
1*2=2	2*2=4
1*3=3	2*3=6	3*3=9
1*4=4	2*4=8	3*4=12	4*4=16
1*5=5	2*5=10	3*5=15	4*5=20	5*5=25
1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36
1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49
1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64
1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81
js
for (let i = 1; i <= 9; i++) {
  let str = "";

  for (let j = 1; j <= i; j++) {
    str += `${j}✖${i}=${j * i}\t`;
  }

  console.log(str);
}
  1. 将猜拳游戏升级,记录系统和玩家的积分,获胜者加1分,平局和输者不计分

可参考以下效果:

游戏开始
==============第1轮==============
系统:0分,玩家:0分
你的出拳:剪刀
系统出拳:布
你赢了!
==============第2轮==============
系统:0分,玩家:1分
你的出拳:石头
系统出拳:布
你输了!
==============游戏结束==============
系统:1分,玩家:1分
js
/* 猜拳游戏 */
function getRandom(min, max) {
  return Math.floor(Math.random() * (max - min + 1) + min);
}

const dataPane = {
  round: 1, //第几轮
  user: 0, //用户得分
  system: 0, //系统得分
};

const typeMap = {
  1: "剪刀",
  2: "石头",
  3: "布",
};

console.log(getRandom(1, 3));
// 开启死循环
while (true) {
  const sysType = getRandom(1, 3);
  const userType = Number(
    prompt(`第${dataPane.round}轮,请选择您要出拳: 1-剪刀 2-石头 3-布`),
  );
  console.log(sysType, userType);

  if (!userType && userType !== 1 && userType !== 2 && userType !== 3) {
    alert("无效选择!");
    break;
  }

  const isUserWin =
    (userType === 1 && sysType === 3) ||
    (userType === 2 && sysType === 1) ||
    (userType === 3 && sysType === 2);

  if (isUserWin) {
    alert(`您-${typeMap[userType]} 系统-${typeMap[sysType]} 您获胜了!`);
    dataPane.user++;
  } else if (userType === sysType) {
    alert(`您-${typeMap[userType]} 系统-${typeMap[sysType]} 平局!`);
  } else {
    alert(`您-${typeMap[userType]} 系统-${typeMap[sysType]} 您输了!`);
    dataPane.system++;
  }

  dataPane.round++;
}

MIT License