1.计算2的n次幂,n可输入,n为自然数。
/* n=1 1*2 n=2 1*2*2 n=3 1*2*2*2 */ var n = parseInt(window.prompt("input")); var mul=1; for(var i=1;i<=n;i++){ mul *= 2; } console.log(mul)
2.计算n的阶乘,n可输入
/* n=1 1*1 n=2 1*2 n=3 1*2*3 n=4 1*2*3*4 n=5 1*2*3*4*5 */ var n = parseInt(window.prompt("input")); var count=1; for(var i=1;i<=n;i++){ count *= i; } console.log(count); //方法二 递归 function jc(n){ if(n == 1){ return 1; } return n*jc(n-1); }
3.计算斐波纳契数列 1 1 2 3 5 8 输出第n项
/* 1 1 2 3 5 8 1+1 = 2 1+2 = 3 2+3 = 5 3+5 = 8 5+8 = 13... */ var n = parseInt(window.prompt("input")); var first = 1,seconed = 1,third = 0,arr=[1,1]; if(n>2){ for(var i=0;i<n-2;i++){ third = first + seconed; first = seconed; seconed = third; arr.push(third) } }else{ arr = [1,1]; } console.log(arr); //方法二 递归 function fb(n){ if(n == 1 || n == 2){ return 1; } return fb(n - 1) + fb(n-2); }
4.编写一程序,输入一个三位数的正整数,输出时反向输出。如:输入456,输出654
//方法一 通过字符串转换 var n = parseInt(window.prompt("input")); var arr =[] ,str="",n1=0; arr = (n+"").split(""); str = arr.reverse().join(""); n = parseInt(str); console.log(n); //方法二 通过计算 var n = parseInt(window.prompt("input")); var unit = 0,decade = 0,hundred = 0,reverseNum = 0; unit = n % 10; decade = n % 100 - unit; hundred = (n - decade - unit) / 100; reverseNum = unit * 100 + decade + hundred; console.log(hundred,decade,unit,reverseNum);
5.输入a,b,c三个数字,打印出最大的。
var n1 = parseInt(window.prompt("input")); var n2 = parseInt(window.prompt("input")); var n3 = parseInt(window.prompt("input")); if(n1>n2){ if(n1>n3){ console.log(n1); }else{ console.log(n3); } }else{ if(n2>n3){ console.log(n2); }else{ console.log(n3); } }
6.打印出100以内的质数
var count = 0,arr=[]; for(var i=1;i<100;i++){ for(var j=1;j<=i;j++){ if(i % j == 0){ count++; } } if(count == 2){ arr.push(i) } count = 0; } console.log(arr); //只要和开方,10以内找可以被整除的就可以了,减少计算量 var count = 0,arr=[]; for(var i=2;i<100;i++){ for(var j=1;j<=Math.sqrt(i);j++){ if(i % j == 0){ count++; } } if(count == 1){ arr.push(i) } count = 0; } console.log(arr);
知识点
var date = window.prompt("input"); switch(date){ case "monday": console.log("working"); break; //跳出不往下走了 case "tuesday": console.log("working"); break; case "wednesday": console.log("working"); break; case "thursday": console.log("working"); break; case "friday": console.log("working"); break; case "周六": console.log("relaxing"); break; case "周日": console.log("relaxing"); break; } var date = window.prompt("input"); switch(date){ case "monday": case "tuesday": case "wednesday": case "thursday": case "friday": console.log("working"); break; case "周六": case "周日": console.log("relaxing"); break; }
for(var i=0;i<100;i++){ if(i % 7 == 0 || i % 10 == 7){ //7的位数,或是尾数带7 continue;//跳出本次循环,继续下个循环 } console.log(i); }
typeof 的结果:number string boolean object undefined function
类型转换:显示转换
number():想方设法转数字 false:0 true:1 null:0 undefined:NaN abc:NaN parseInt():可以在字符里找数字,只有字符转不了 "123abc":123 null/false/true/undefined:NaN var demo = 123; demo.toString() //"123" undefined/null.toString()//报错,没有这个方法 基底 parseInt(123,16) //将16进制的123转成10进制的123,16是当前进制 demo.toString(8) //将10进制的123转成8进制,8是目标进制 eg. var num = 10101010; var test = parseInt(num,2); console.log(test.toString(16));
隐式转换
//用number() isNaN() ++/-- +/- + -*/% &&||! < > <= >= //数字优先,字符是比较Ascall码 2>3<1 //true 先比较左边2>3:false:0 再看右边0<1:true undefined/null>0 : false undefined/null<0 : false undefined/null=0 : false undefined == null : true boolean() == != 不转换 === !== typeof(a) //"undefined" 不会报错 typeof(typeof(a)) //string typeof(NaN) //string var a = "123abc"; typeof(+a); //number typeof(!!a); //boolean typeof(a+"");//string