选择结构
程序中有三大结构,顺序,选择,循环
顺序:代码从上到下一行一行的执行
选择:代码有分支,有选择的
循环:重复执行某一段代码
基本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) {
条件 1 为 true 时执行的代码块
} else if (条件 2) {
条件 1 为 false 而条件 2 为 true 时执行的代码块
} 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循环可能一次都不执行