0020. 循环语句 - 练习
- 1. 💻 练习.1 - 在控制台中输出 100 个
*
- 2. 💻 练习.2 - 输出 1-100 的所有数字
- 3. 💻 练习.3 - 输出 1-100 的所有奇数
- 4. 💻 练习.4 - 求 1-100 之间所有数字之和
- 5. 💻 练习.5 - 求 1-100 之间所有奇数之和
- 6. 💻 练习.6 - 求 1-10 之间所有数字的积
- 7. 💻 练习.7 - 输出一个 3 行 5 列的
*
号矩阵 - 8. 💻 练习.8 - 用
*
号输出一个 5 行的直角三角形 - 9. 💻 练习.9 - 用
*
号输出一个 5 行的等腰三角形 - 10. 💻 练习.10 - 判断数字 233 是不是素数
- 11. 💻 练习.11 - 判断 1-100 哪些数是素数
- 12. 💻 练习.12 - 求 1-100 之间的所有素数之和
- 13. 💻 练习.13 - 输出 99 乘法表
- 14. 💻 练习.14 - 猜拳游戏
- 完成笔记中记录的相关练习题。
1. 💻 练习.1 - 在控制台中输出 100 个 *
javascript
for (var i = 0; i < 100; i++) {
console.log('*')
}
1
2
3
2
3
2. 💻 练习.2 - 输出 1-100 的所有数字
javascript
for (var i = 1; i <= 100; i++) {
console.log(i)
}
1
2
3
2
3
3. 💻 练习.3 - 输出 1-100 的所有奇数
javascript
// for (var i = 1; i < 100; i += 2) {
// console.log(i)
// }
// 或者
for (var i = 1; i < 100; i++) {
if (i % 2) console.log(i)
// 等价于
// if (i % 2 !== 0) console.log(i)
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
4. 💻 练习.4 - 求 1-100 之间所有数字之和
javascript
var sum = 0
for (var i = 1; i <= 100; i++) {
sum += i
}
console.log(sum) // 5050
1
2
3
4
5
2
3
4
5
5. 💻 练习.5 - 求 1-100 之间所有奇数之和
javascript
var sum = 0
for (var i = 1; i <= 100; i++) {
if (i % 2 !== 0) {
sum += i
}
}
console.log(sum) // 2500
1
2
3
4
5
6
7
2
3
4
5
6
7
6. 💻 练习.6 - 求 1-10 之间所有数字的积
javascript
var sum = 1
for (var i = 1; i <= 10; i++) {
sum *= i
}
console.log(sum) // 3628800
1
2
3
4
5
2
3
4
5
7. 💻 练习.7 - 输出一个 3 行 5 列的 *
号矩阵
plain
*****
*****
*****
1
2
3
2
3
javascript
var r = 3,
colNum = 5
for (var i = 0; i < r; i++) {
// 循环r次
// 在一行内输出 c 个 * 号
var str = ''
for (var j = 0; j < colNum; 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. 💻 练习.8 - 用 *
号输出一个 5 行的直角三角形
plain
*
**
***
****
*****
1
2
3
4
5
2
3
4
5
javascript
var r = 5
for (var i = 1; i <= r; i++) {
// 输出一行星号,数量为 i
var str = ''
for (var j = 0; j < i; j++) {
str += '*'
}
console.log(str)
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
9. 💻 练习.9 - 用 *
号输出一个 5 行的等腰三角形
- 提示:
- 先把题目要求的三角形给画出来,找找规律,明确规律后再写程序。
plain
*
***
*****
*******
*********
1
2
3
4
5
2
3
4
5
javascript
var r = 5
for (var i = 1; i <= r; i++) { // 循环一次,意味着输出 1 行。
var str = ''
for (var j = 0; j < r - i; j++) str += ' ' // 1. 拼接空格,数量为 r - i
for (var j = 0; j < 2 * i - 1; j++) str += '*' // 2. 拼接星号,数量为 2 * i - 1
console.log(str)
}
1
2
3
4
5
6
7
2
3
4
5
6
7
10. 💻 练习.10 - 判断数字 233 是不是素数
- 提示:
- 素数是指一个数(大于1)仅能被1和自身整除。
javascript
var num = 233
var isFind = false
for (var 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. 💻 练习.11 - 判断 1-100 哪些数是素数
- 提示:
- 可以使用两层
for
循环来实现。 - 外层 for 用于遍历 1 到 100。
- 内层 for 用于判断 num 是否是素数。
- 可以使用两层
javascript
for (var num = 1; num <= 100; num++) {
var 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} 是一个素数`)
}
}
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
i <= Math.sqrt(num)
优化了查找次数。
12. 💻 练习.12 - 求 1-100 之间的所有素数之和
javascript
var sum = 0 // 记录和
for (var num = 2; num <= 100; num++) {
// i 是不是素数
var isFind = false // 默认没有找到能被 1 和自身整数的其余的除数 是素数
for (var j = 2; j <= Math.sqrt(num); j++) {
if (num % j === 0) {
isFind = true // 找到能被 1 和自身整数的其余的除数 不是素数
break
}
}
if (!isFind) {
sum += num
}
}
console.log(sum) // 1060
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
13. 💻 练习.13 - 输出 99 乘法表
- 提示:和【💻 练习.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=81
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
javascript
for (var i = 1; i <= 9; i++) { // 每遍历一次,输出 1 行。
// 拼接 i 个等式
var str = ''
for (var j = 1; j <= i; j++) {
str += `${j}*${i}=${i * j}\t`
}
console.log(str)
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
14. 💻 练习.14 - 猜拳游戏
- 要求:
- 玩家和系统随机出拳,判断胜负,石头、剪刀、布,出现的概率相同,都是 1/3。
- 记录系统和玩家的积分,获胜者加 1 分,平局和输者不计分。
- 游戏默认进行 10 轮,结束后统计得分。
- 输出示例:
plain
游戏开始
==============第1轮==============
系统:0分,玩家:0分
你的出拳:石头
系统出拳:石头
平局
==============第2轮==============
系统:0分,玩家:0分
你的出拳:剪刀
系统出拳:布
你赢了!
==============第3轮==============
系统:0分,玩家:1分
你的出拳:石头
系统出拳:布
系统胜利!
==============第4轮==============
系统:1分,玩家:1分
你的出拳:布
系统出拳:剪刀
系统胜利!
==============第5轮==============
系统:2分,玩家:1分
你的出拳:剪刀
系统出拳:石头
系统胜利!
==============第6轮==============
系统:3分,玩家:1分
你的出拳:剪刀
系统出拳:剪刀
平局
==============第7轮==============
系统:3分,玩家:1分
你的出拳:布
系统出拳:剪刀
系统胜利!
==============第8轮==============
系统:4分,玩家:1分
你的出拳:剪刀
系统出拳:石头
系统胜利!
==============第9轮==============
系统:5分,玩家:1分
你的出拳:石头
系统出拳:布
系统胜利!
==============游戏结束==============
系统:6分,玩家: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
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
javascript
console.log('游戏开始')
var round = 1, // 轮次
pcScore = 0, // 系统分数
playerScore = 0 // 玩家分数
while (true) {
if (round === 10) break
console.log(`==============第${round}轮==============`)
console.log(`系统:${pcScore}分,玩家:${playerScore}分`)
var fist = Math.random() // 模拟玩家出拳
if (fist < 0.3333) {
fist = '剪刀'
} else if (fist < 0.6666) {
fist = '石头'
} else {
fist = '布'
}
if (fist === null) {
// 取消
break
}
// 没有取消
if (fist !== '剪刀' && fist !== '石头' && fist !== '布') {
// 出拳无效
console.log('出拳无效,请重新出拳!')
continue
}
// 出拳有效
console.log(`你的出拳:${fist}`)
var pcFist = Math.random() // 系统随机出拳
if (pcFist < 0.3333) {
pcFist = '剪刀'
} else if (pcFist < 0.6666) {
pcFist = '石头'
} else {
pcFist = '布'
}
console.log(`系统出拳:${pcFist}`)
// 判断胜负
if (
(fist === '剪刀' && pcFist === '布') ||
(fist === '布' && pcFist === '石头') ||
(fist === '石头' && pcFist === '剪刀')
) {
// 玩家胜利
playerScore++
console.log('你赢了!')
} else if (fist === pcFist) {
console.log('平局')
} else {
pcScore++
console.log('系统胜利!')
}
// 轮次 + 1
round++
}
console.log('==============游戏结束==============')
console.log(`系统:${pcScore}分,玩家:${playerScore}分`)
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
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