JS-流程控制语句

JS笔记


三大流程控制语句

1.顺序结构:代码自上而下顺序执行

//输入两个数,然后交换这两个数,在输出它们交换的结果
	var num1 = 10;
	var num2 = 20;
	alert("num1=" + num1 + ",num2=" + num2);
	var tmp = num1;
	num1 = num2;
	num2 = tmp;
	alert("num1=" + num1 + ",num2=" + num2);

2.分支/选择/条件结构:要根据不同的条件,执行不同的操作
单分支语句:
 if(判断的条件){
  执行语句;
 }
双分支语句:
 if(判断的条件){
  执行语句;
 }else{
  执行语句;
 }
多分支语句:
 if(表达式1){
  执行语句1;
 }else if(表达式2){
  执行语句2;
 }else if(表达式3){
  执行语句3;
 …
 }else{
  执行语句n;
 }
switch语句:
 switch(表达式){
  case 常量1:语句;break;
  case 常量2:语句;break;
  case 常量3:语句;break;
  …
  case 常量n:语句;break;
  default:语句;break;
 }
三目运算符:(本质是一个双分支语句)
 表达式1 ? 表达式2 : 表达式3;
【注】if()里面可以写任何的表达式,都会自动数据类型转换成布尔值;如果是匹配确定的结果,优先使用switch语句,需要判断的题目,只能用if语句

//判断一个数是奇数还是偶数
	var num = 8;
	if (num % 2 == 0) {
	alert("偶数");
	}
	alert("奇数");
//三目运算符
	num % 2 == 0 ? alert("偶数") : alert("奇数");
//双分支语句
	var num = 7;
	if(num % 2 == 0){
		alert("这是一个偶数");
	}else{
		alert("这是一个奇数");
	}
	
//求两个数的最大数  num1=10 num2=20
	var num1 = 10,num2 = 20;
	if (num1 >= num2) {
		alert(num1);
	} else {
		alert(num2);
	}

//判读一个年份,是闰年还是平年
	var year = 1998;
	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
		alert("闰年");
	} else {
		alert("平年");
	}

//switch语句。成绩划分等级
	var grade = "B";
	switch (grade) {
		case "A":alert("80~100");break;
        case "B":alert("70~79");break;
        case "C":alert("60~69");break;
        case "D":alert("<60");break;
        default:alert("error");break;
 	}

//switch语句简化。输入月份,显示当前月的天数。要求:1)利用case穿透简化代码 
	var month = 4;
	var year = 2000;
	switch (month) {
		case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:alert("31天");break;
        case 2:
			if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
				alert("29天");
			} else {
				alert("28天");
          	}
          	break;
        default:alert("30天");break;
	}

3.循环结构:重复去做一件事情
while循环:(好处:代码简洁;代码没有冗余;后期维护方便)
 while(循环条件){
  循环语句;
 }
do…while循环:
 do{
  循环语句;
 }while(循环条件);
【注】while循环和do…while循环的区别:while循环先判断循环条件;do…while循环先去运行一次循环语句,再去判断循环条件
for循环:
 for(表达式1;表达式2;表达式3){
  执行语句;
}
【注】break和continue关键字:break用来终止当前循环;continue跳过这次循环,直接进入下次循环
死循环:循环条件永远成立
 while(true){
  执行语句;
 }
 while(1){
  执行语句;
 }
 do{
  执行语句;
 }while(1);
 for( ; ; ){
  执行语句;
 }

//while循环,1加到100的和
	var sum = 0;
	var i = 1;
	while (i <= 100) {
		sum += i;
        i++;
	}
	alert(sum);
//do...while循环
	var i = 1;
	var sum = 0;
	do {
		sum += i;
        i++;
	} while (i <= 100);
	console.log(sum);
//for循环
	var i = 1;
	var sum = 0;
	for (i = 1; i <= 100; i++) {
		sum += i;
	}
	console.log(sum);

//求出1000-2000之间所有的闰年,并保证每4个一行
	var i = 1000;
	var count = 0; //用于计数闰年的个数
	while (i <= 2000) {
		if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {
			document.write(i + "&nbsp");
			count++;
          	if (count % 4 == 0) {
            	document.write("<br/>");
			}
		}
		i++;
	}
	
//for循环嵌套,打印三角形(左下三角) 
	var i = 0;
 	var j = 0;
  	for (i = 0; i < 5; i++) {//左下三角
		for (j = 0; j <= i; j++) {
    		document.write("○" + "&nbsp");
        }
        document.write("<br/>");
  	}
//左上三角
	var i = 0;
	var j = 0;
	for (i = 0; i < 5; i++) {//左上三角
		for (j = i; j < 5; j++) {
			document.write("○");
        }
        document.write("<br/>");
	}

//for循环嵌套,输出9*9的乘法口诀
	var i = 1;
	var j = 1;
	for (i = 1; i <= 9; i++) {//输出乘法口诀表
   		for (j = 1; j <= i; j++) {
  			document.write(j + "X" + i + "=" + i * j + "&nbsp;&nbsp;");
        }
        document.write("<br/>");
  	}
//深度综合练习
//山上有一口缸可以装50升水,现在有15升水,老和尚叫小和尚下山挑水,每次可以挑5升。问:几次可以挑满
	var water = 15;
	var count = 0;
	while (water < 50) {
		water += 5;
        count++;
   	}
  	console.log(count);
  	
//判断一个数是不是合数(除了能被1和本身除以外,还能被其他数整除);判断一个数是不是质数(除了能被1和本省除以外,不能被其他数整除)
	var num = 12;
	var isYes = false;
   	for (var i = 2; i < num; i++) {
  		if (num % i == 0) {
   			isYes = true;
   			break;
        }
  	}
  	if (isYes) {
 		document.write(num + "&nbsp;是一个合数");
	} else {
        document.write(num + "&nbsp;是一个质数");
 	}

//国王奖励大师,大师说,国际一共有64格,第一个放1粒麦子,后面的格放前面歌的2倍,一共需多少
    var i = 0;
    var sum = 0;
    var num = 1;
    for (i = 0; i < 64; i++) {
      	sum += num;
      	num *= 2;
    }
    console.log(sum);

//找出所以的水仙花数,三位数,各位的立方和等于该数本身。153=1^3+5^3+3^3	【Math.pow(x,y),可以求x的y次方】
	var num = 100;
    for (num = 100; num < 1000; num++) {
    	var i = parseInt(num / 100);
      	var j = parseInt((num % 100) / 10);
      	var k = (num % 100) % 10;
      	if (num === Math.pow(i, 3) + Math.pow(j, 3) + Math.pow(k, 3)) {
        	document.write(num + "<br/>");
        }
 	}

//输入两个数,求这两个数的最大公约数和最小公倍数
	var num1 = 6;
    var num2 = 5;
    var min = num1 > num2 ? num2 : num1;
    var max = num1 > num2 ? num1 : num2;
    while (1) {//求两个数的最大公约数
    	if (num1 % min == 0 && num2 % min == 0) {
        	break;
        }
        min--;
      }
      while (1) {
      	if (max % num1 == 0 && max % num2 == 0) {
        	break;
        }
        max++;
      }
      console.log(min);
      console.log(max);

/* 
   输入两个数n,a,如果n==3,a==2;
   输出2+22+222的值
   如果n==4,a==3;
   输出3+33+333+3333的值
   不用输出式子
*/
    var n = 3;
    var a = 2;
    var tmp = a;
    var sum = 0;
    for (var i = 0; i < n; i++) {
    	sum += tmp;
        tmp = tmp * 10 + a;
 	}
    console.log(sum);

//五位数中,对称的数称为回文数,找出所有的回文数。如12321
	var num = 10000;
	for (num = 10000; num < 100000; num++) {
		var i = num % 10; //个位
        var k = parseInt(num / 10) % 10; //十位位
        var j = parseInt(num / 1000) % 10; //千位
        var l = parseInt(num / 10000); //万位
        if (i == l && j == k) {
     		console.log(num);
        }
 	}

//省略break简化代码。输入年月日,输出当前年第多少天/多少周 -->Math.ceil()向上取整
    var year = 2008;
    var month = 2;
    var date = 8;
    var sum = 0; //记录第几天
    switch (month) {
    	case 12:
          	sum += 30;
        case 11:
          	sum += 31;
        case 10:
          	sum += 30;
        case 9:
          	sum += 31;
        case 8:
          	sum += 31;
        case 7:
          	sum += 30;
        case 6:
          	sum += 31;
        case 5:
          	sum += 30;
        case 4:
          	sum += 31;
        case 3:
        	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            	sum += 29;
          	} else {
            	sum += 28;
          	}
        case 2:
          	sum += 31;
        case 1:
          	sum += date;
        default:
          	document.write("Error");
          	break;
 	}
    document.write("date is:" + sum + "&nbsp;week is:" + Math.ceil(sum / 7));
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值