3、流程语句相关练习

数学函数

/*
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、个人所得税

image

            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 + "<br />");
				}
			}*/

			
				2、打印九九乘法表
			
			/*for(var i = 1; i < 10; i++){
				//输出九九乘法表的式子
				for(var j = 1; j <= i; j++){
					document.write(j + "X" + i + "=" + i * j + "&ensp;")
				}
				document.write("<br/>");
			}*/


			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("<br />");
					}
					document.write(i + "&ensp;");
					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("<br />");
					}
					document.write(i + "&ensp;")
					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 + "<br/>");
				}
			}
			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 + "<br/>");
			}*/


		(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 + "<br/>");
			}*/


		(3)找出7的倍数和带数字7的值
		/*for(var i = 1; i <= 100; i++){
				if(i % 7 == 0){
					document.write(i + "<br />");
				}else{
					var a = i % 10;
					var b = parseInt(i / 10) % 10;
					if(a == 7 || b == 7){
						document.write(i + "<br />");
					}
				}
			}*/

			
			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 + "<br/>");
				}
			}
			
posted @ 2018-07-06 20:42  飞刀还问情  阅读(182)  评论(0编辑  收藏  举报