目录
1.循环结构
2.例题
(1)奇数乘积(while/do-while)
(2)水仙花数(while)
(3)最大公约数(for)
(4)最小公倍数(for)
(5)打印星星(for)
(6)乘法表(for)
1.循环结构
- 循环结构在程序中可执行多次
- 循环结构有while循环, do-while循环, for循环
名称 | 执行顺序 | 循环执行次数 | 应用场景 |
while | 先判断,再执行 | 执行0次或多次 | 常用于次数不确定的情况 |
do-while | 先执行,再判断 | 至少执行1次(1次或多次) | 常用于次数不确定的情况 |
for | 先判断,再执行 | 执行0次或多次 | 常用于次数确定的情况 |
// 循环结构 在程序中执行多次
// while循环 先判断,再执行
/* while(判断条件){
语句块
} */
// do...while 先执行,再判断
/* do{
}while(条件) */
// for循环
/* for( 定义循环变量① ; 条件判断② ; 更新循环变量④){
重复执行的代码③
}
*/
/* 循环区别
while: 先判断,再执行 循环语句执行次数为0次或多次 常用于次数不确定的情况
do-while: 先执行,后判断 循环语句执行次数为1次或多次(至少执行1次) 常用于次数不确定的情况
for: 先判断,再执行 循环语句执行次数为0次或多次 常用于次数确定的情况
*/
2.例题
(1)奇数乘积(while/do-while)
// 1*3*5*...*11结果
var sum = 1 //保存乘积
var i = 1 //保存变量
while(i < 12){
sum *= i
i += 2
}
console.log('11以内奇数乘积为: ' + sum)
var num = 1
var j = 11
while(j > 0){
num *= j
j -= 2
}
console.log('11以内奇数乘积为: ' + num)
var n = 1
var k = 1
do{
n *= k
k += 2
}while(k < 12)
console.log('11以内奇数乘积为: ' + n)
(2)水仙花数(while)
// 1000以内水仙花数
// 算法: 1) 将每个数,每一位上的数字取出
// 2) 计算每一位上的立方之和, 等于本身,则输出
var i = 100
var num = 0
while (i >= 100 && i < 1000) {
// 个位
var oNum =i % 10
// 十位
var tNum = parseInt((i/ 10) % 10)
// 百位
var hNum = parseInt(i / 100)
var num = oNum * oNum * oNum + tNum * tNum * tNum + hNum * hNum * hNum
if (num === i) {
console.log(i)
}
i++
}
// 153 370 371 407
(3)最大公约数(for)
// 求两个数的最大公约数
// 两个变量保存两个数
var num1 = prompt('请输入第一个数') - 0
var num2 = prompt('请输入第二个数') - 0
// 最大公约数 <= min(num1, num2)
// 假设最大公约数等于 num1 和 num2中较小的一个 ,e.g: num1小
var res = num1
if(num1 > num2){
res = num2
}
for(var i = res; i > 0; i--){
if(num1 % i == 0 && num2 % i == 0){
//第一次找到的i, 就是最大的公约数
console.log('最大公约数: ' + i)
break //终止循环
}
}
(4)最小公倍数(for)
// 求两个数的最小公倍数
// 两个变量保存两个数
var num1 = prompt('请输入第一个数') - 0
var num2 = prompt('请输入第二个数') - 0
// 假设其中较大的数是num1
var res = num1
if(num1 < num2){
res = num2
}
// 最小公倍数的范围一定在 较大的数 和 两数乘积之间
for(var i = res; i <= num1 * num2; i++){
if(i % num1 == 0 && i % num2 == 0){
//第一次找到的i, 就是最小的公倍数
console.log(num1 + '和' +num2 +'的最小公倍数: ' + i)
break //终止循环
}
}
(5)打印星星(for)
//打印 *
/*
1行: *
2行: * *
3行: * * *
4行: * * * *
5行: * * * * *
6行: * * * * * *
*/
for( var i = 0; i <= 5; i++){
var str = "" //用于拼接
for(var j = 0; j <= i; j++){
str += "* "
}
console.log(j + "行: " + str)
}
// 打印金字塔
/*
1行: *
2行: * *
3行: * * *
4行: * * * *
5行: * * * * *
6行: * * * * * *
*/
for( var i = 0; i <= 5; i++){
var str = "" //用于拼接5
// 先打印空格
for(var k = 0; k < 5-i; k++){
str += " "
}
for(var j = 0; j <= i; j++){
str += "* "
}
console.log(j + "行: " + str)
}
/* 打印
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
*/
for (var i = 1; i < 5; i++) {
var str = '' //用于拼接
// 先打印空格
// for (var k = 7 - 2 * i; k >= 0; k--) {
// str += ' '
// }
for(var k = 1; k <= 8 - 2 * i; k++){
str += " "
}
for (var j = 1; j <= 2 * i - 1; j++) {
str += '* '
}
console.log(i + '行: ' + str)
}
for (var m = 3; m > 0; m--) {
var str = "" //用于拼接
var num = 8 - m // 第几行
// 先打印空格
for(var z = 1; z <= 8 - 2 * m; z++){
str += " "
}
for(var n = 1; n <= 2 * m - 1; n++){
str += "* "
}
console.log( num + "行: " + str)
}
// 案例: 打印倒三角
/*
*****
****
***
**
*
*/
var num = prompt("请输入打印几行: ")
var str = '';
for(var i = 1; i <= num ; i++){ //外层循环打印行
for(var j = i; j <= num; j++){ //内层循环打印个数不一样 j=i
str = str + '*';
}
str = str + "\n";
}
console.log(str);
(6)乘法表(for)
// 乘法表(正向)
for(var i = 1; i < 10; i++){ //行
var str = " "
for(var j = 1; j <= i; j++){
str += i + " * " + j + " = " + i * j + " "
}
console.log(str )
}
console.log('------------------------------------------------------------------------------------------------------------------------------------------------------------')
/* 结果:
1 * 1 = 1
2 * 1 = 2 2 * 2 = 4
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25
6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36
7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49
8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64
9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81
*/
// 乘法表(倒向)
for(var i = 9; i > 0; i--){
var str = ''
// 打印空格
for(var k = 0 ; k < 9 - i; k++){
str += " "
}
for(var j = 1; j <= i; j++){
var num = i * j
if( num < 10){
num = ' ' + num
}
str += i + " * " + j + " = " + num + " "
}
console.log(str)
}
console.log('------------------------------------------------------------------------------------------------------------------------------------------------------------')
// 乘法表
for(i = 1; i < 10; i++){ //行
var str = ''
for(var k = 0 ; k < 9 - i; k++){
str += " "
}
for(var j = 1; j <= i; j++){
var num = i * j
if( num < 10){
num = ' ' + num
}
str += i + " * " + j + " = " + num + " "
}
console.log(str)
}
PreviousNotes:
https://mp.csdn.net/mp_blog/creation/editor/125005868