1.篮球从5米高的地方掉下来,每次弹起的高度是原来的30%,经过几次弹起,篮球的高度小于0.1米。
var height = 5;
for(a = 1;;a++){
height=height*0.3;
if(height<=0.1){
console.log('经过'+a+'次弹起');
break;
}
}
2.有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg,第二个里面放2粒,第三个里面放4,棋盘上放的所有芝麻的重量
要找到每个方格上面的规律:每个方格里面的芝麻量是2的(i-1)次幂
刚开始时,我犯了一个错误。每个格子上有多少芝麻数,我用了for循环。其实不对,因为j++是加一递增,而每一个格子里的j是2倍递增的。
var sum = 1;
for(i = 1;i < 65;i++){
for(j = 1;j <= i;j++){
sum += Math.pow(2,i-1);
}
}
console.log(sum*0.00001+'kg');
后面我改成了
var sum = 1;
for(i = 1;i < 65;i++){
num = Math.pow(2, i);
sum += num;
}
console.log(sum*0.00001+'kg');
3. 完成一个梯形打印功能
只要改变循环变量的初始值
for(i = 3; i<7;i++){
for(j = 0;j<i;j++){
document.write('* ');
}
document.write('<br/>');
}
for(i = 100;i <= 200;i++){
if(i%3==0 || i%7==0)
console.log(i);
}
4.打印100–200之间所有能被3或者7整除的数
for(i = 100;i <= 200;i++){
if(i%3==0 || i%7==0)
console.log(i);
}
5. 求1+2!+3!+...+20!的值
不能把sum定义在for外面。因为这样做的话,sum就会一直在乘i,没有清零
var sum = 1;
var count = 0;
for(i = 1;i<=20;i++){
for(j = 1;j<=i;j++){
sum*=j;
}
count+=sum;
}
console.log(count);
把sum和count定义在for外面,运行的结果如下
1.274420312381611e+156
之后把sum和count定义在for里面
for(var i=1,count=0;i<=20;i++){
for(var j=1,sum=1;j<=i;j++){
sum*=j;
}
count+=sum;
}
console.log('1+2!+3!+...+20!的值'+count);
运行出结果:
2561327494111820300
6. 输出100-200之间所有的质数
难点在于:判断质数的条件要怎么写?
思路:如果是质数,它的循环次数是不是就是最大值
第一种方法
for(var i = 100; i <= 200; i++) {
for(var j = 2; j < i - 1; j++) {
if(i % j == 0){
// 证明此时的i一定不是一个质数
break;
}
}
if(j == i - 1) {
// 证明循环完毕, 都没有进入到if语句中
console.log(i);
}
}
举个例子做类比
for(var i = 0; i < 10; i++) {
}
console.log(i); // 10
第二种方法
for(var i = 100; i <= 200; i++) {
var flag = true; // 上锁
for(var j = 2; j < i - 1; j++) {
if(i % j == 0){
// 证明此时的i一定不是一个质数
flag = false;
break;
}
}
if(flag) {
// 证明循环完毕, 都没有进入到if语句中
console.log(i);
}
}
7. 九九乘法表
我第一次运行出来的结果没有第一行,后来发现是j的范围那里没有=
for(i = 1;i<=9;i++){
for(j = 1;j<=i;j++){
document.write(i+'*'+j+'='+i*j);
document.write(' ');
}
document.write('<br />');
}
8. 求100-999之间的水仙花数。abc = a * a * a + b * b * b + c * c *c;
要事先想出3位数的个、十、百要怎样提取出来
for(i=100;i<=999;i++){
if(i==Math.pow(parseInt(i/100),3) + Math.pow(parseInt(i/10)%10,3) + Math.pow(parseInt(i%10),3)){
console.log(i);
}
}
后面还可以改进
for(var i = 100; i < 1000; i++) {
var g = i % 10;
var s = Math.floor(i / 10) % 10;
var b = Math.floor(i / 100) % 10;
if(i == Math.pow(g, 3) + Math.pow(s, 3) + Math.pow(b, 3) ) {
console.log(i);
}
}