数学函数
/ x的y次方 Math.pow(x, y)/
// alert(Math.pow(2, 3));/*
Math.random() 【注】随机0~1的任意数。 [0, 1) 【注】随机0~9的任意整数。 */// alert(Math.random()); var num = parseInt(Math.random() * 10); alert(num);
1、输入年月日,输出当前年第几天。2018.05.17 。month
var year = 2018; var month = 5; var date = 17; var currentDay = 0; switch(month){ case 12: currentDay += 30; case 11: currentDay += 31; case 10: currentDay += 30; case 9: currentDay += 31; case 8: currentDay += 31; case 7: currentDay += 30; case 6: currentDay += 31; case 5: currentDay += 30; case 4: currentDay += 31; case 3: currentDay += 28; case 2: currentDay += 31; case 1: currentDay += date; break; default: alert("error"); break; } if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0) { if(month > 2){ alert(currentDay + 1); }else{ alert(currentDay); } }else{ alert(currentDay);}
2、个人所得税
var salary = 20000; var tax = 0; // salary = salary - 3500; salary -= 3500; if(salary >= 0 && salary <= 500){ tax = salary * 0.05; }else if(salary > 500 && salary <= 2000){ tax = salary * 0.1; }else if(salary > 2000 && salary <= 5000){ tax = salary * 0.15; }else if(salary > 5000 && salary <= 20000){ tax = salary * 0.2; }else if(salary > 20000 && salary <= 40000){ tax = salary * 0.25 - 1; }else if(salary > 40000 && salary <= 60000){ tax = salary * 0.3 - 3; }else if(salary > 60000 && salary <= 80000){ tax = salary * 0.35 - 6; }else{ tax = salary * 0.4 - 10; } alert(tax); //3300
3、循环习题
1、打印100–200之间所有能被3或者7整除的数 /*for(var i = 100; i <= 200; i++){ if(i % 3 == 0 || i % 7 == 0){ document.write(i + ""); } }*/ 2、打印九九乘法表 /*for(var i = 1; i < 10; i++){ //输出九九乘法表的式子 for(var j = 1; j <= i; j++){ document.write(j + "X" + i + "=" + i * j + " ") } document.write(""); }*/ 3、判断一个数是合数,还是质数。 var num = 6; /* 分析: 肯定能被1和它本身整除。 2~6 */ var isYes = false; //布尔值,记录是否是合数。 for(var i = 2; i < num; i++){ if(num % i == 0){ //判断出来是合数 isYes = true; // alert(i); break; } } if(isYes == true){ alert("这是一个合数"); }else{ alert("这是一个质数"); } 4、求出1-1/2+1/3-1/4…..1/100的和 var i=1; i*-1*-1 var sum = 0; for(var i = 1; i <= 100; i++){ if(i % 2 == 0){ sum -= 1 / i; }else{ sum += 1 / i; } } alert(sum); 5、输出20-30之间能被3整除的数,5个一行。 /* var count = 0; //用于计数 for(var i = 30; i <= 80; i++){ if(i % 3 == 0){ //没找一个符合条件的元素,就计数一次 if(count % 4 == 0){ document.write(""); } document.write(i + " "); count++; } }*/ 6、打印1000-2000年,所有的闰年,四个一行输出。 var count = 0; //用于计数 for(var i = 1000; i <= 2000; i++){ if(i % 400 == 0 || i % 4 == 0 && i % 100 != 0){ if(count % 4 == 0){ document.write(""); } document.write(i + " ") count++; } } 7、100-1000以内的水仙花数 /* 1、找出所有三位数 */ for(var i = 100; i < 1000; i++){ //2、将每一位数取出 123 // 【注】关键点:将每一位取出 var a = i % 10; // var b = parseInt(i / 10) % 10; var b = parseInt(i % 100 / 10); var c = parseInt(i / 100); // var sum = a * a * a + b * b * b + c * c * c; var sum = Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3); if(i == sum){ //3、水仙花数 document.write(i + ""); } } 8、宰相的麦子:相传古印度宰相达依尔,是国际象棋的发明者。 有一次,国王因为他的贡献要奖励他,问他想要什么 。达依尔说:“只要在国际象棋棋盘上(共64格)摆上这么些麦子就行了: 第一格一粒,第二格两粒,……,后面一格的麦子总是前一格麦子数的两倍, 摆满整个棋盘,我就感恩不尽了。” 国王一想,这还不容易,刚想答应,如果你这时在国王旁边站着, 你会不会劝国王别答应,为什么? var tmp = 1; //每一格的麦子数 var sum = 0; //求和 for(var i = 0; i < 64; i++){ sum += tmp; tmp *= 2; } alert(sum); //18446744073709552000 9、打印1——100的所有数,除了7的倍数和带7的数。 关键点:取出个位和十位,去进行判断 除了7的倍数 或 带7的数 (1)/*for(var i = 1; i <= 100; i++){ //1、剔除7的倍数 var a = i % 10; var b = parseInt(i / 10) % 10; if((a == 7 || b == 7) || i % 7 == 0){ continue; } document.write(i + ""); }*/ (2)/*for(var i = 1; i <= 100; i++){ //1、剔除7的倍数 if(i % 7 == 0){ continue; } var a = i % 10; var b = parseInt(i / 10) % 10; if(a == 7 || b == 7){ continue; } document.write(i + ""); }*/ (3)找出7的倍数和带数字7的值 /*for(var i = 1; i <= 100; i++){ if(i % 7 == 0){ document.write(i + ""); }else{ var a = i % 10; var b = parseInt(i / 10) % 10; if(a == 7 || b == 7){ document.write(i + ""); } } }*/ 10、求1!+2!+3!+4!+5! 1 + 2 + 6 + 24 + 1 20 分析: 1、加五次 2、每一次里面应该如何循环。 var sum = 0; for(var i = 1; i <= 5; i++){ var amass = 1; for(var j = 1; j <= i; j++){ amass *= j; } sum += amass; } alert(sum); //153 11、输入两个数,求两个数的最大公约数(*****) //能够同时整除两个数的最大数 9 6 3 15 5 5 关键字 1.先找出两个数中最小的那个数 */ var num1 = 15; var num2 = 5; //1、找出两个数中的较小数 /*var min = 0; if(num1 < num2){ min = num1; }else{ min = num2; } alert(min);*/ var min = num1 < num2 ? num1 : num2; // alert(min); while(1){ if(num1 % min == 0 && num2 % min == 0){ break; } min--; } // alert("最大公约数是:" + min); 12、输入两个数,求两个数的最小公倍数(****) 9 6 18 8 4 8 关键点 1. 先找出两个数中的最大数 2. 最大数++,找出能被两个数整除的数(退出循环) var num1 = 15; var num2 = 5; var max = num1 > num2 ? num1 : num2; while(1){ if(max % num1 == 0 && max % num2 == 0){ break; } max++; } // alert(max); 13、输入两个数n,a,如果n==3, a == 2; 输出 2 + 22 + 222 的值。(不用输出式子)(****) 如果n == 4, a == 3; 输出 3 + 33 + 333 + 3333的值。 1、n = 3,相加三次,每次相加比前一次相加的数,多一位 2、每次多的这个位数的值为a */ /* 3 + 33 + 333 + 3333 */ var n = 4; var a = 3; var sum = 0; var tmp = a; //关键点:每一次累加的数。 for(var i = 0; i < n; i++){ sum += tmp; tmp = tmp * 10 + a; } // alert(sum); 14、五位数中,对称的数称为回文数,找出所有的回文数。 如12321(***) 关键点:将每一位数都取出来。 /*var num = 12321; var a = num % 10; var b = parseInt(num / 10) % 10; var c = parseInt(num / 1000) % 10; var d = parseInt(num / 10000); if(a == d && b == c){ alert("这就是一个回文"); }*/ for(var i = 10000; i < 100000; i++){ var a = i % 10; var b = parseInt(i / 10) % 10; var c = parseInt(i / 1000) % 10; var d = parseInt(i / 10000); if(a == d && b == c){ document.write(i + ""); } }