if+switch+for应用以及假设法的使用
Posted 傻fufu的小陶
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(" ");
}
// 打印 *
for (var k = 1; k <= n - 2 * Math.abs(i); k++) {
document.write("锋");
}
// 打印空格
for (var j = 1; j <= Math.abs(i); j++) {
document.write(" ");
}
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来进行循环
编写函数求两个整数 a 和 b 之间的较大值。要求不能使用if, while, switch, for, ?: 以 及任何的比较语句。