if+switch+for应用以及假设法的使用

Posted ……勇敢妞妞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了if+switch+for应用以及假设法的使用相关的知识,希望对你有一定的参考价值。

程序的三大流程控制

1.顺序结构:从上朝下执行的代码就是顺序
2.选择结构:根据不同的情况,执行对应代码
3.循环结构:重复做一件事情

一、选择结构之if语句(常用于范围判断)
单分支 if
双分支 if …else…
多分支 if …else if…else if…else…

1.单分支
if(表达式)
执行语句;

满足表达式的条件就执行,不满足就不执行任何操作,继续执行后面的代码

注意:
1.if后面的()不能省略。
2.无论执行语句是一条还是
多条,一对 都不能省略
2.双分支
if(表达式)
执行语句1;
else
执行语句2;

二选一执行语句

例如👇

var grade = Math.round(Math.random()*100);//0-100的随机数
console.log(grade);
if(grade >= 60)
document.write(grade+"分,及格");
else
document.write(grade+"分,不及格");

document.write("<h3>判断完毕</h3>");

三(元)目运算符,条件运算符,三元条件运算符
1.简单的双分支判断(语句只能执行一条)
2.判断赋值,先判断再赋值

语法结构:
表达式1? 表达式2:表达式3
先求解表达式1(判断是否成立),如果成立则求解表达式2,否则求解表达式3
示例:求两个数的最大数👇

var a = Math.round(Math.random() * 100);
var b = Math.round(Math.random() * 100);
var max=(a>=b ? a : b);

3.多分支
if(表达式1)
执行语句1;
else if(表达式2)
执行语句2;
else if(表达式3)
执行语句3;
else
执行语句4;

<script>

    // 选择结构的嵌套  => 条件依赖 (在满足特定条件的情况下,进行二次判断)
    // 一般嵌套不超过三层(规范),该超还要超

    // var grade = Math.round(Math.random() * 100);
    var grade = 59;
    // debugger;

    if (grade >= 0 && grade <= 100) 
        if (grade >= 90)   // 90-100
            if (grade == 100) 
                document.write(grade + "分,666");
             else  // 90 - 99
                document.write(grade + "分,优秀");
            
         else if (grade >= 80)    //  grade >= 80 && grade < 90
            document.write(grade + "分,良好");
         else if (grade >= 70) 
            document.write(grade + "分,一般");
         else if (grade >= 60) 
            document.write(grade + "分,危险");
         else   // 0-59
            if (grade == 59) 
                document.write(grade + "分,我感觉可以抢救下?");
             else 
                document.write(grade + "分,不及格?");
            
        
     else 
        alert("请输入0-100的数值");
    



</script>

二、选择结构之多分支-switch语句(常用于数值判断)
switch(表达式)
case 常量1:语句1;break;
case 常量2:语句2;break;
case 常量3:语句3;break;

case 常量n:语句n;break;
default:语句;break;

switch中的表达式 一般是一个变量;
switch中的表达式 和 case中的常量 依次做全等(===)比较, 如果全等则执行对应的语句,遇到break跳出当前switch结构,否则继续向下比较,以此类推,都不满足就执行default 中语句;
break的作用是跳出当前的switch结构,如果没有break 会继续执行后续的执行语句,而不进行判断;
switch穿透特性;

 // 做数值判断
    var week = 1 + Math.round(Math.random() * 6);    // 1-7
    debugger;
    console.log(week); // 4
    switch (week)   // 根据switch中的变量,列举出所有可能出现的情况 
        case 1: document.write("星期一,学习了JS数据类型"); break;
        case 2: document.write("星期二,学习了JS运算符"); break;
        case 3: document.write("星期三,学习了选择结构"); break;
        case 4: document.write("星期四,学习了循环结构"); break;
        case 5: document.write("星期五,学习了函数"); break;
        case 6: document.write("星期六,自习,学习使我快乐"); break;
        case 7: document.write("星期天,休息,休息为了更好的学习"); break;
        default:
            document.write("出现了未知错误,谁也不能阻挡我学习");
            break;
    
//switch穿透特性
  var week = 1 + Math.round(Math.random() * 6);    // 1-7
    debugger;
    console.log(week); //  3
    switch (week)   // 根据switch中的变量,列举出所有可能出现的情况 
        case 1:
        case 2:
        case 3:
        case 4:
        case 5: document.write("星期" + week + ",学习<br>"); break;
        case 6: document.write("星期" + week + ",自习<br>"); break;
        case 7: document.write("星期" + week + ",休息<br>"); break;
        default:
            document.write("出现了未知错误,谁也不能阻挡我学习");
            break;
    

选择结构总结👇
1.if后面的()不能省略,()后面不要加分号
2.if分支中即使一句话也要把写上
3.if嵌套不要超过三层
4.Switch语句里把default分支一定要写上,防止在以后的维护中产生歧义
5.把执行概率更大(正常情况)放在前面(if,case)
6.if else 和 switch:
if else 一般来表示两个分支或者嵌套比较少的分支,如果分支多的话,用switch。


循环结构
while循环
do…while循环
for循环

循环结构的三要素👇:1.初始值(起始位置)2.循环条件3.自增、自减
初始值
while (表达式)
循环语句(循环体);

while循环👇
先判断条件,再执行循环体

方法1:

//40个* 每10个一行
var i=1;
while(i<=40)
    document.write("*");
    if(i%10==0)
        document.write("<br>");
    
    i++;

方法2:10个*号,一个换行,打印4次(循环嵌套)

//外层循环 走一次,内层循环走一轮
//外层循环 控制循环的总次数(总层数)外层架构
//内层循环 每层打印的内容(10个*号加一个换行)
var i=1;
while(i<=7)//外层循环
    var j=1;
    while(j<=10)//内层循环
        //1-10循环,11跳出
        document.write("*");
        j++;
    
    document.write("<br>");
    i++;

do while循环👇
先执行循环体再判断

var i = 1;
do
document.write(“i” + “<br>”);
i++;
while(false);

for循环👇

for(var i=1;i<=10;i++)
    document.write(i+"<br>")

菱形案例👇

var n = 5;
    var mid = Math.floor(n / 2);

    for (var i = -mid; i <= mid; i++)   // -4   4
        // 打印空格
        for (var j = 1; j <= Math.abs(i); j++) 
            document.write("&emsp;");
        

        // 打印 *
        for (var k = 1; k <= n - 2 * Math.abs(i); k++) 
            document.write("锋");
        

        // 打印空格
        for (var j = 1; j <= Math.abs(i); j++) 
            document.write("&emsp;");
        


        document.write("<br>");
    

循环结构中的关键字:
continue
break

1.continue
注意:
continue跳过本次进入下次循环,也就是continue后的语句不执行
continue语句只能用在循环里。
对于 while 和 do-while 循环,continue 语句执行之后的动作是条件判断👇;对于 for 循环,随后的动作是变量更新(自增自减)👇。

var i=0;
while(i<=99)
    i++;
    if(i%2==1)
       continue; 
    
    document.write(i+"<br>");

for(var i=1;i<=100;i++)
    if(i%2==1)
        continue;
    
    document.write(i+"<br>");



2.break

break在switch表示跳出当前的选择结构,在循环结构中表示跳出当前的循环结构。

循环结构注意点👇:
选择for还是选择while
一般情况下,已知循环次数时,用for,否则用while。

2.如何造死循环:while(true) ……

3.循环嵌套: 长循环在内层,短循环在外层,效率高,影响效率的主要体现:两个循环之间的切换,切换次数越少,效率越高。

for (col = 0; col < 5; col++) //5列
    
        for (row = 0; row < 100; row++) //100行。每一列里面循环执行一百次
        
            …………
        
    


    for (row = 0; row < 100; row++) //100行
    
        for (col = 0; col < 5; col++) //每1行里执行5次列
        
            …………
        
    

假设法:

先立一个假设(flag),然后尝试从对立面推翻它 => 有两个状态的切换 => 得到想要的结果

假设不存在(false), 然后尝试从对立面推翻它 (证明 存在true) => 找到一个满足条件的数 (简单)
假设存在(true), 然后尝试从对立面推翻它 (证明 不存在) => 全都不满足条件(1 2 3 … 100 全都不满足) 可以写 但是没有必要 (麻烦)

 var flag = false;//假设在1000以内不存在同时被2,3,5整除的数
    for (var i = 1; i <= 1000; i++) 
        if (i % 2 == 0 && i % 3 == 0 && i % 5 == 0) 
            flag = true;//如果找到一个能同时被整除的数,推翻假设
            break;//找到一个 后面就没必要看了,跳出循环
        
    
    if (flag) //flag==true
        document.write("存在能同时2,3,5被整除的数:" + i);
     else 
        document.write("不存在能同时2,3,5被整除的数");
    

以上是关于if+switch+for应用以及假设法的使用的主要内容,如果未能解决你的问题,请参考以下文章

Swift学习——使用if和switch来进行条件操作,使用for,while,和do-while来进行循环

第二次实验报告

有两个循环,他们是嵌套关系,在内循环中使用break将终止哪一个循环?

编写函数求两个整数 a 和 b 之间的较大值。要求不能使用if, while, switch, for, ?: 以 及任何的比较语句。

GO - if判断,for循环,switch语句,数组的使用

控制语句 for while if switch