js选择结构与循环结构

选择结构

程序中有三大结构,顺序选择循环
顺序:代码从上到下一行一行的执行
选择:代码有分支,有选择的
循环:重复执行某一段代码

基本if语法

If:如果
else:否则

if (条件) {
    条件为 true 时执行的代码块
} else { 
    条件为 false 时执行的代码块
}

alert() 弹出提示框
confirm() 弹出确认框
prompt() 弹出输入框

案例:绝对值
输入一个数,如果这个数是正数,那么输出它本身
如果这个数是负数,那么输出它的相反数

var num=Number(prompt("请输入一个数字"))//Number() 函数把对象的值转换为数字
			if(num<0){
				num*=-1
			}
			alert(num)

案例:计算三角形面积(改)
要求能够判断出三条边是否能构成三角形
如果不能,输出“请正确输入“

<script type="text/javascript">
			var a=Number(prompt("请输入边长a"))
			var b=Number(prompt("请输入边长b"))
			var c=Number(prompt("请输入边长c"))
			var p=((a+b+c)/2)
			var s=Math.sqrt(p*(p-a)*(p-b)*(p-c))//海伦公式;sqrt()返回数的平方根。
			alert(p)
			if(a+b>c&&a+c>b&&b+c>a){
			alert(s)
			} else{
				alert("请正确输入")
			}
		</script>

案例:判断一个数是否为水仙花数
水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身
水仙花数:1^3 + 5^3+ 3^3 = 153

<script type="text/javascript">
			var num=prompt("请输入一个三位数")
			var h=Math.floor(num/100)//百位
			var t=Math.floor((num%100)/10)//十位
			var i=Math.floor(num%10)//个位
			if ((h*h*h+t*t*t+i*i*i)==num) {
				alert("是")
			} else{
				alert("不是")
			}
		</script>

If语句嵌套

案例:献血
根据性别和体重计算输血量女性体重不超过50kg的输血量为
200毫升,否则的话就250毫升
男性不超过60kg的献血为250毫升,否则300毫升
1获取性别 sex
2 获取体重 kg

<script type="text/javascript">
			var sex=(prompt("请输入性别"))
			var kg=prompt("请输入体重")
			if (sex=="woman") {
				if (kg<50) {
					alert("200毫升")
				} else{
					alert("250毫升")
				}
			}
			else{
				if (kg<60) {
					alert("250毫升")
				} else{
					alert("300毫升")
				}
			}
		</script>

Else if

if (条件 1) {
    条件 1true 时执行的代码块
} else if (条件 2) {
    条件 1false 而条件 2true 时执行的代码块
 } else {
    条件 1 和条件 2 同时为 false 时执行的代码块
}

案例:成绩评语
输入一个零到一百的成绩
90-100:666,真厉害
80-90:还不错了
70-80:还有很大的进步空间
60-70:要小心,马上就快挂了
<60:孩子多半是废了。。。。。

<script type="text/javascript">
			var cj=prompt("请输入成绩")
			if (cj>=90&&cj<=100) {
				alert("666,真厉害")
			}
			else if(cj>=80&&cj<90){
				alert("还不错了")
			}
			else if(cj>=70&&cj<80){
				alert("还有很大的进步空间")
			}
			else if(cj>=60&&cj<70){
				alert("要小心,马上就要挂了")
			}
			else if(cj<60&&cj>0){
				alert("孩子多半是废了。。。。")
			}
			else{
				alert("请输入正确的成绩")
			}
		</script>

Switch

Switch:开关
如果是if选择的分支比较多的时候,就需要一个一个分支的从上往下执行
,这样执行的效率是非常低的,需要对选择结构进行一个改进
使用switch就可以解决这个问题

Switch基本语法

switch(表达式) {
     case n:
        代码块
        break;
     case n:
        代码块
        break;
     default:
        默认代码块
} 

在执行的过程中,a 的值与哪个分支后面的值一样就运行哪个分支的代码
Case后面的值可以立即为标号(程序中指令的地址)
如果运行完一个分支后,不想继续运行的话
可以用break来跳出选择结构,但break不是必须要写的
如果a 的值与case后面标号都对应不上,则运行default(默认)
里面的代码

Switch的好处:
(1) 执行速度比else if更快,效率更高
(2) 选择结构更加清晰,一目了然

案例:判断季节
要求输入月份(1,2,3,。。。,12)判断该月所处的季节
假定12,1,2是冬季,以此类推 月份:month

<script type="text/javascript">
			var m=Number(prompt("请输入月份"));
			switch(m){
				case 12:case 1:case 2:
				alert("冬");
				break;
				case 3:case 4:case 5:
				alert("春");
				break;
				case 6:case 7:case 8:
				alert("夏");
				break;
				case 9:case 10:case 11:
				alert("秋");
				break;
				default:
				alert("输入有误");
				break;
			}
		</script>

循环结构

循环结构的基本概念

循环:重复干一件事情
重复执行一块代码

While循环

While:当……则……当什么条件成立时,一直重复做,不成立时停止

while (条件) {
    要执行的代码块
}

案例:找出所有水仙花数

<script type="text/javascript">
			var num = 100;//初始条件
			while (num >= 100 && num < 1000) {//循环条件
				var h = Math.floor(num / 100)
				var t = Math.floor((num % 100) / 10)
				var i = Math.floor(num % 10)
				if ((h * h * h + t * t * t + i * i * i) == num) {
					alert(num)
				} 
				num++;
			}
		</script>

案例:GDP预测
2009年美国的GDP是142562.75亿美元,而中国是49089.82亿美元,
假设美国经济增长率为2%,而中国为8%,预测中国GDP何时能超过美国

<script type="text/javascript">
			var a=Number(142562.75)
			var c=Number(49089.82)
			var y=Number(2009)
			while(c<a){//循环条件
				a*=(1+0.02);
				c*=(1+0.08);
				y+=1;
				}
				alert(y)
		</script>

循环的套路
(1) 初始条件
(2) 循环条件
(3) 循环体(重复执行的代码)
(4) 为下一次循环做准备
当我们遇到问题的时候我们先想四个问题
(1) 初始状态是什么样的
(2) 重复的条件是什么(在什么条件下才会重复)
(3) 重复要做什么
(4) 怎么过度到下一次循环

Do…while循环

while循环的变种,和while差不多,至少换了一种写法

do {
    要执行的代码块
}
while (条件);

从语法来看,循环体在循环条件的前面,之前while循环的循环体在循环条件的后面
,如果说循环条件一次都不成立,do…while循环的循环体在前面,可以运行一次
但是while循环一次都不运行
Do…while循环和while循环的区别
Do…while循环至少是运行一次的,而while循环可能一次都不执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值