0020. 循环语句 - 练习
- 1. 💻 exercises.1 - 在控制台中输出 100 个
* - 2. 💻 exercises.2 - 输出 1-100 的所有数字
- 3. 💻 exercises.3 - 输出 1-100 的所有奇数
- 4. 💻 exercises.4 - 求 1-100 之间所有数字之和
- 5. 💻 exercises.5 - 求 1-100 之间所有奇数之和
- 6. 💻 exercises.6 - 求 1-10 之间所有数字的积
- 7. 💻 exercises.7 - 输出一个 3 行 5 列的
*号矩阵 - 8. 💻 exercises.8 - 用
*号输出一个 5 行的直角三角形 - 9. 💻 exercises.9 - 用
*号输出一个 5 行的等腰三角形 - 10. 💻 exercises.10 - 判断数字 233 是不是素数
- 11. 💻 exercises.11 - 判断 1-100 哪些数是素数
- 12. 💻 exercises.12 - 求 1-100 之间的所有素数之和
- 13. 💻 exercises.13 - 输出 99 乘法表
- 14. 💻 exercises.14 - 猜拳游戏
1. 💻 exercises.1 - 在控制台中输出 100 个 *
参考答案
js
for (let i = 0; i < 100; i++) {
console.log('*')
}1
2
3
2
3
2. 💻 exercises.2 - 输出 1-100 的所有数字
参考答案
js
for (let i = 1; i <= 100; i++) {
console.log(i)
}1
2
3
2
3
3. 💻 exercises.3 - 输出 1-100 的所有奇数
参考答案
js
// 写法 1
for (let i = 1; i < 100; i++) {
if (i % 2) console.log(i)
// 等价于
// if (i % 2 !== 0) console.log(i)
}1
2
3
4
5
6
2
3
4
5
6
js
// 写法 2
for (let i = 1; i < 100; i += 2) {
console.log(i)
}1
2
3
4
2
3
4
4. 💻 exercises.4 - 求 1-100 之间所有数字之和
参考答案
js
let sum = 0
for (let i = 1; i <= 100; i++) {
sum += i
}
console.log(sum) // 50501
2
3
4
5
2
3
4
5
5. 💻 exercises.5 - 求 1-100 之间所有奇数之和
参考答案
js
// 写法 1
let sum = 0
for (let i = 1; i <= 100; i++) {
if (i % 2 !== 0) {
sum += i
}
}
console.log(sum) // 25001
2
3
4
5
6
7
8
2
3
4
5
6
7
8
6. 💻 exercises.6 - 求 1-10 之间所有数字的积
参考答案
js
let sum = 1
for (let i = 1; i <= 10; i++) {
sum *= i
}
console.log(sum) // 36288001
2
3
4
5
2
3
4
5
7. 💻 exercises.7 - 输出一个 3 行 5 列的 * 号矩阵
plain
*****
*****
*****1
2
3
2
3
参考答案
js
const row = 3
const col = 5
for (let i = 0; i < row; i++) {
// 循环r次
// 在一行内输出 c 个 * 号
let str = ''
for (let j = 0; j < col; j++) {
str += '*'
}
console.log(str)
}1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
8. 💻 exercises.8 - 用 * 号输出一个 5 行的直角三角形
plain
*
**
***
****
*****1
2
3
4
5
2
3
4
5
参考答案
js
const row = 5
for (let num = 1; num <= row; num++) {
// 输出一行星号,数量为 i
let str = ''
for (let j = 0; j < num; j++) {
str += '*'
}
console.log(str)
}1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
9. 💻 exercises.9 - 用 * 号输出一个 5 行的等腰三角形
- 提示:
- 先把题目要求的三角形给画出来,找找规律,明确规律后再写程序。
plain
*
***
*****
*******
*********1
2
3
4
5
2
3
4
5
参考答案
js
const row = 5
for (let i = 1; i <= row; i++) {
// 循环一次,意味着输出 1 行。
let str = ''
for (let j = 0; j < row - i; j++) str += ' ' // 1. 拼接空格,数量为 r - i
for (let k = 0; k < 2 * i - 1; k++) str += '*' // 2. 拼接星号,数量为 2 * i - 1
console.log(str)
}1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
10. 💻 exercises.10 - 判断数字 233 是不是素数
- 提示:
- 素数是指一个数(大于 1)仅能被 1 和自身整除。
参考答案
js
const num = 233
let isFind = false
for (let i = 2; i <= num - 1; i++) {
if (num % i === 0) {
isFind = true
break
}
}
if (num <= 1 || isFind) {
console.log(`${num} 不是一个素数`)
} else {
console.log(`${num} 是一个素数`)
}
// 最终输出结果:
// 233 是一个素数1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
11. 💻 exercises.11 - 判断 1-100 哪些数是素数
- 提示:
- 可以使用两层
for循环来实现。 - 外层 for 用于遍历 1 到 100。
- 内层 for 用于判断 num 是否是素数。
- 可以使用两层
参考答案
js
for (let num = 1; num <= 233; num++) {
let isFind = false
for (var i = 2; i <= Math.sqrt(num); i++) {
// 如果 num 是合数,至少有一个因数小于或等于它的平方根 Math.sqrt(num)
if (num % i === 0) {
isFind = true
break
}
}
if (num <= 1 || isFind) {
// 如果 num 是 1 或者找到了除了 1 和自身以外的约数,那么 num 不是素数
// console.log(`${num} 不是一个素数`);
} else {
// 如果 num 是大于1的数并且没有找到除了1和自身以外的约数,那么 num 是素数
console.log(`${num} 是一个素数`)
}
}
// 输出结果:
// 2 是一个素数
// 3 是一个素数
// 5 是一个素数
// 7 是一个素数
// 11 是一个素数
// 13 是一个素数
// 17 是一个素数
// 19 是一个素数
// 23 是一个素数
// 29 是一个素数
// 31 是一个素数
// 37 是一个素数
// 41 是一个素数
// 43 是一个素数
// 47 是一个素数
// 53 是一个素数
// 59 是一个素数
// 61 是一个素数
// 67 是一个素数
// 71 是一个素数
// 73 是一个素数
// 79 是一个素数
// 83 是一个素数
// 89 是一个素数
// 97 是一个素数
// 101 是一个素数
// 103 是一个素数
// 107 是一个素数
// 109 是一个素数
// 113 是一个素数
// 127 是一个素数
// 131 是一个素数
// 137 是一个素数
// 139 是一个素数
// 149 是一个素数
// 151 是一个素数
// 157 是一个素数
// 163 是一个素数
// 167 是一个素数
// 173 是一个素数
// 179 是一个素数
// 181 是一个素数
// 191 是一个素数
// 193 是一个素数
// 197 是一个素数
// 199 是一个素数
// 211 是一个素数
// 223 是一个素数
// 227 是一个素数
// 229 是一个素数
// 233 是一个素数1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
i <= Math.sqrt(num)优化了查找次数。
12. 💻 exercises.12 - 求 1-100 之间的所有素数之和
参考答案
js
let sum = 0 // 记录和
for (let num = 2; num <= 100; num++) {
// i 是不是素数
let isFind = false // 默认没有找到能被 1 和自身整数的其余的除数 是素数
for (let i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) {
isFind = true // 找到能被 1 和自身整数的其余的除数 不是素数
break
}
}
if (!isFind) {
sum += num
}
}
console.log(sum) // 10601
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
13. 💻 exercises.13 - 输出 99 乘法表
- 提示:和【💻 exercises.8 - 用 _ 号输出一个 5 行的直角三角形】的原理是一样的,只不过这里打印的东西不再是
_号罢了。
plain
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=811
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
参考答案
js
for (let i = 1; i <= 9; i++) {
// 每遍历一次,输出 1 行。
// 拼接 i 个等式
let str = ''
for (let j = 1; j <= i; j++) {
str += `${j}*${i}=${i * j}\t`
}
console.log(str)
}1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
14. 💻 exercises.14 - 猜拳游戏
- 要求:
- 玩家和系统随机出拳,判断胜负,石头、剪刀、布,出现的概率相同,都是 1/3。
- 记录系统和玩家的积分,获胜者加 1 分,平局和输者不计分。
- 游戏默认进行 10 轮,结束后统计得分。
- 输出示例:
plain
游戏开始
==============第1轮==============
电脑:0分,玩家:0分
你的出拳:布
电脑出拳:布
平局
==============第2轮==============
电脑:0分,玩家:0分
你的出拳:石头
电脑出拳:石头
平局
==============第3轮==============
电脑:0分,玩家:0分
你的出拳:布
电脑出拳:布
平局
==============第4轮==============
电脑:0分,玩家:0分
你的出拳:布
电脑出拳:布
平局
==============第5轮==============
电脑:0分,玩家:0分
你的出拳:剪刀
电脑出拳:石头
电脑胜利!
==============第6轮==============
电脑:1分,玩家:0分
你的出拳:布
电脑出拳:布
平局
==============第7轮==============
电脑:1分,玩家:0分
你的出拳:布
电脑出拳:剪刀
电脑胜利!
==============第8轮==============
电脑:2分,玩家:0分
你的出拳:布
电脑出拳:剪刀
电脑胜利!
==============第9轮==============
电脑:3分,玩家:0分
你的出拳:剪刀
电脑出拳:布
你赢了!
==============第10轮==============
电脑:3分,玩家:1分
你的出拳:石头
电脑出拳:布
电脑胜利!
==============游戏结束==============
电脑:4分,玩家:1分1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
参考答案
js
console.log('游戏开始')
let currentRound = 1 // 当前轮次
let computerScore = 0 // 电脑分数
let userScore = 0 // 用户分数
while (true) {
if (currentRound > 10) break
console.log(`==============第${currentRound}轮==============`)
console.log(`电脑:${computerScore}分,玩家:${userScore}分`)
// 用户出拳
let userChoice = Math.random()
if (userChoice < 0.3333) {
userChoice = '剪刀'
} else if (userChoice < 0.6666) {
userChoice = '石头'
} else {
userChoice = '布'
}
if (userChoice === null) {
// 取消游戏
break
}
// 验证出拳有效性
if (userChoice !== '剪刀' && userChoice !== '石头' && userChoice !== '布') {
console.log('出拳无效,请重新出拳!')
continue
}
console.log(`你的出拳:${userChoice}`)
// 电脑随机出拳
let computerChoice = Math.random()
if (computerChoice < 0.3333) {
computerChoice = '剪刀'
} else if (computerChoice < 0.6666) {
computerChoice = '石头'
} else {
computerChoice = '布'
}
console.log(`电脑出拳:${computerChoice}`)
// 判断胜负
if (
(userChoice === '剪刀' && computerChoice === '布') ||
(userChoice === '布' && computerChoice === '石头') ||
(userChoice === '石头' && computerChoice === '剪刀')
) {
// 用户胜利
userScore++
console.log('你赢了!')
} else if (userChoice === computerChoice) {
console.log('平局')
} else {
// 电脑胜利
computerScore++
console.log('电脑胜利!')
}
// 轮次增加
currentRound++
}
console.log('==============游戏结束==============')
console.log(`电脑:${computerScore}分,玩家:${userScore}分`)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70