3-循环结构

1:循环结构

1:当循环结构

2:直到型循环结构

2:当循环结构

3:直到型循环结构

4:while循环(解决了具备重复性的问题)

语法:while(循环条件){

// 重复执行的语句(循环代码体)

}

工作原理:先判断条件是否为真,如果条件为真则执行循环体一次,然后再判断条件是否为真,如果为真 再执行循环体,如此反复,直到条件为假时循环结束,循环结束后会继续执行下面的语句

Eg: (1)//显示hello world五次

var i = 0;
while (i<5) {
    document.write('hello world ');
    i++;
}

(2)// 求1~100的累积和

var num = 1,sum = 0;
while (num <= 100) {
     sum = sum + num;
     num++;
}
alert(sum);

(3)// 统计1-100之间能被3整除也能被5整除的 数的个数(计数器思想)

var num = 1, count = 0;
while(num <= 100){
    if(num % 3 === 0 && num % 5 === 0){
           count++;
    }
    num++;
}
alert(count);

(4)// 输出0-100之间能被7整除的数

var num = 0;
 while (num <= 100) {
    if (num % 7 == 0){
        document.write(num);
    }
    num++;
}

5:do...while循环

语法:

do{
// 循环代码体
} while(循环条件);

区别:while是条件成立时才执行循环体的内容,而do…while的循环体不管条件成不成立至少会执行 一次。

Eg://求5的阶乘

var num = 5,jiecheng = 1;
do {
     jiecheng = num * jiecheng;
     num--;
} while (num>=1)
alert(jiecheng);

6:for循环

语法:

for(表达式1,表达式2,表达式3){
// 循环体
}

工作原理:

先执行表达式1,然后判断条件是否为真,为真则执行循环体,然后执行表达式3,

然后判断条件,条件为真执行循环体,然后执行表达式3,

然后判断条件,为真执行循环体,如此反复到条件为假,循环结束

for循环和while循环的区别:代码逻辑更清晰、更加严谨。

// 求100!
var jiechemg = 1;
for (var i = 100;i >= 1;i--) {
     jiechemg = jiechemg * i;
}
console.log(jiechemg);

for循环的嵌套。

for(var i = 1;i <= 5;i++){
    for(var j = 1;j <= 10;i++){
        document.write('*');
    }
    document.write('<br/>');
}

7:break和continue

break关键字:终止循环,

for(var i = 1; i < 10;i++){
    if(i > 7){
        break;
    }
    document.write(i);  //1 2 3 4 5 6 7
}

continue关键字:跳过当前循环。直接进入下一次循环

for(var i = 1; i <= 5;i++){
    if(i == 3)
        continue;
    document.write(i);  //1 2 4 5
}

注意:变量自增的语句一定要放在continue前面,否则出现死循环。

break与continue区别:

区别:break会终止当前的循环,而continue仅仅是跳过当前的循环。

共同点:break和continue后面的代码将不再执行。

8:跳过/终止指定循环(扩展,仅做了解)

在循环的指定一个名字,使用break或者continue时指定需要终止或者跳过的循环名称。注意,名称后面还要加上冒号。

for(var i =0; i< 10; i++) {
       for(var j=0; j< 20; j++) {
              if(j == 10) {
                     break list;
              }
              console.log(10);
       }
}

Eg:入职薪水10K,每年涨幅5%,50年后工资多少?

var money = 10000;
for (var i = 1;i <= 50;i++){
     money = money + money*0.05;
}
console.log(money);

Eg:打印100以内 7的倍数。

for (var i = 1;i <= 100;i++){
     if(i % 7 === 0){
            console.log(i);
     }
}

Eg:打印100以内的奇数。

for(var i = 1;i <= 100;i++){
     if(i % 2 == 1){
            console.log(i)
     }
}

应用:

1:打印100以内所有偶数的和。

var sum = 0;
for (var i = 1;i <= 100;i++){
     if(i % 2 === 0){
            sum = sum + i;
     }
}
console.log(sum);

2:求出1-1/2+1/3-1/4…..1/100的和 var i=1;

var sum = 0, num1 = 0,num2 = 0;
for(var i = 1;i <= 100;i++){
     if (i % 2 === 0) {
            num1 = num1 + (-1) * (1/i)
     }else{
            num2 = num2 + (1/i);
     }
}      
sum = num1 + num2;
alert(sum);

3:打印出1000-2000年中所有的闰年,并以每行四个数的形式输出。

var count = 0;
for (var i = 1000;i <= 2000;i++){
     if((i % 4 === 0 && i % 100 !== 0) || i % 400 === 0){
            document.write(i + '、');
            count++;
            if(count % 4 === 0){
                document.write('<br />');
            }
     }
}

4:打印三角形。

英文空格实体符号:&ensp;

for(var i = 1;i <= 5;i++){
     for(var j = 1;j <= i;j++){
            document.write('*');
     }
     document.write('<br />')
}

5.打印一个反过来的三角形

for (var i = 1;i <= 5;i++){
     // 计算空格数
     var space = 5 - i;
     // 输出空格
     for(var j = 1;j <= space;j++){
            document.write('&nbsp;&nbsp;');
     }
     // 输出星星
     for (var j = 1;j <= i;j++){
            document.write('*');
     }
     // 换行
     document.write('<br />');
}

1:console常用方法

console.log() // 输出普通信息。
console.warn() // 输出警示信息。
console.info() // 输出提示性信息。
console.error() // 输出错误信息。
console.debug() // 输出调试信息。

console.group() // 开始一组输出信息。
console.groupEnd() // 结束一组输出信息

console.time() // 必须传入一个字段标识,开始计时
console.timeEnd() // 必须传入和time一样的字段标识,来结束计时。

console.time('first');
for(var i=1;i<=1000000;i++){}
console.timeEnd('first');
console.assert() // 对表达式进行断言,只有表达式为false,才会输出信息。
console.assert(5 > 6, '我不会被打印出来');

console.count() // 统计代码执行的次数。
console.dir() // 将DOM节点以树形结构形式进行输出,便于我们查看。

2:firefox、chrome、IE浏览器的DEBUG工具使用

火狐:安装firebug,初识firebug工具面板。

学会调试JS代码。

Eg:打印100–200之间所有能被3或者7整除的数。

Eg:计算100的阶乘。

Eg:求100-999之间的水仙花数。

原理:水仙花数是指一个3位数,它的每个 位上的数字的3次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)

for(var i = 100; i<= 999; i++) {
    var first  = parseInt(i / 100);
    var second = parseInt( (i - first * 100) / 10 );
    var third  = i % 10;
    if(first * first * first + second * second * second + third * third * third === i) {
         console.log(i);
    }
    if(Math.pow(first, 3) + Math.pow(second, 3) + Math.pow(third, 3) === i) {
        console.log(i)
    }
    if(first**3 + second**3 + third**3 === i) {
        console.log(i)
    }
}

Eg:打印九九乘法表。

for (var i = 1;i <= 9;i++){
    for (var j = 1;j <= i;j++){
        document.write( j+ "*" + i + "=" + j * i + "&nbsp;&nbsp;&nbsp;&nbsp;");
    }
    document.write('<br/>');
}

应用:

质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。

1:输出100-200之间所有的素数。

for(var i = 100;i <= 200;i++){
     // 假设当前i的值是一个素数
     var btn = true;
     for(var j = 2;j <= i-1;j++){
            // 如果i取余某个值为0;说明刚才的假设失败;应该设为false
            if (i % j === 0){
                   btn = false;
                   break;
            }
     }
     if(btn == true) {
            document.write(i + '、');
     }
}

2:求1+2!+3!+...+20!的值,即:1+1*2+1*2*3+...+1*2*...19*20。n!是阶乘的意思。

var sum = 0;
for (var i = 1;i <= 20;i++){
     // 求阶乘
     var jiecheng = 1;  //不能定义在外面 即和sum一切
     for(var j = 1;j <= i; j++){
            jiecheng = jiecheng * j;
     }
     // 求阶乘的和
     sum = sum + jiecheng;
}
console.log(sum);

// 用函数的方法
function product(max) {
     var jiecheng = 1;
     for(var i = 1;i <= max;i++){
            jiecheng = jiecheng * i;
     }
     return jiecheng;
}
var sum = 0;
for(var i = 1;i <= 20;i++){
     sum = sum + product(i);
}
console.log(sum);

3:完成一个等腰三角形打印功能。

// 行数和列数
var rows = 9,cols = rows * 2 - 1;
// 确定行数
for(var i = 1;i <= rows;i++){
     // 计算星星的数量
     var star = i * 2 - 1;
     // 计算左侧空格数量
     var space = (cols - star) / 2;
     // 显示空格
     for(var j = 1;j <= space;j++){
            document.write('&nbsp;');
     }
     // 显示星星
     for(var j = 1; j <= star; j++) {
            document.write('*');
     }
     // 换行
     document.write('<br/>');
}

4:完成一个梯形打印功能。

// 确定行数和列数
var rows = 9; cols = rows * 2 - 1;
// 确定行数
for (var i = 3;i <= rows;i++){
     // 确定星星数量
     var star = i * 2 - 1;
     // 确定左侧空格数
     var space = (cols - star) /2;
     // 打印空格
     for (var j = 1;j <= space;j++){
            document.write('&nbsp;')
     }
     // 打印星星
     for(var j = 1;j <= star;j++){
            document.write('*');
     }
     // 换行
     document.write('<br />')
}

综合应用:

1:篮球从5米高的地方掉下来,每次弹起的高度是原来的30%,经过几次弹起,篮球的高度是0.1米。

// 因为不管成立不成立 都会执行一次,所以用do..while
var height = 5,times = 0;
do{
     times++;
     height = height*0.3;
} while (height > 0.1)
console.log(times);

2:有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg,第二个里面放2粒,第三个里面放4,棋盘上放的所有芝麻的重量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值