学习内容
- 选择结构
- 三目运算符
- 三元应用
- 单分支选择语句
- 单分支应用
- 双分支选择语句
- 双分支应用
- 多分支选择语句
- 多分支应用
- switch分支语句
- switch应用
选择结构
程序设置的三大结构:
顺序结构: 从上到下,依次执行每一条语句,不能跳过任何一条语句。
选择结构: 根据条件判断,选择执行某一个语句段。
循环结构: 在满足一定条件的时候,重复执行一个语句段。
实现选择结构的语句:
1.三元运算符
2.if
3.switch
三目运算符
条件 ? 语句 : 语句
规则: 如果条件为真,则执行 ? 后面的语句。如果条件为假,则执行 : 后面的语句。
//求一个三位数每位数的和
//1. 准备一个变量,接收一个三位的正整数
var i = prompt('请输入一个三位的正整数:');
//2. 分解三位数
var h = parseInt( i / 100 );
var t = parseInt( i % 100 / 10);
var a = i % 10;
//3. 求和
var sum = h + t + a;
//4. 输出结果
alert(i + '这个整数的和是:' + sum);
三元应用
//判断一个年份是闰年还是平年
//准备一个变量,用于接收用户输入的值
var i_year = prompt('请输入一个年份:');
//准备条件
alert(i_year % 4 === 0 && i_year % 100 || i_year % 400 === 0 ? '闰年' : '平年');
//判断一个数是偶数还是奇数
//准备一个变量,接收用户输入的值
var i = prompt('请输入一个整数:');
alert(i % 2 ? '奇数' : '偶数');
//判断一个数是正数还是负数
//准备一个变量,接收一个整数
var i = prompt('请输入一个整数:');
alert(i == 0 ? '既不是正数,也不是负数' : i > 0 ? '正数' : '负数');
// alert(i > 0 ? '正数' : i < 0 ? '负数' : '既不是正数,也不是负数');
//切记:JS中只要是从外部获取的数据,都是String类型
单分支选择语句
if(条件){
语句组;
}
当程序执行到if时,先计算表达式的值,如果值为true,则执行后面大括号中的语句;如果值为false时,执行if语句后面的其它语句
单分支应用
//根据成绩判断是否发放清华大学的通知书?
var i_score = prompt('请输入一个成绩:');
if( i_score >= 655 ){
alert('清华大学欢迎您 !');
}
//输入任意两个数,然后交换位置输出(如:a=4,b=5输出a=5,b=4)
//准备两个变量,接收两个数
var i = prompt('请输入一个整数:');
var j = prompt('请输入一个整数:');
console.log('交换前:\ni = ' + i + '\nj = ' + j);
//空变量
var t = i;
i = j;
j = t;
console.log('交换后:\ni = ' + i + '\nj = ' + j);
//输入任意三个数,由大到小输出
/*
三个数? prompt()
假设:i = 5,j = 3,k = 9
第一个放置最大值?
第一次 i < j 交换位置 确定前两个数中的最大值放到i中
第二次 i < k 交换位置 确定三个数中 的最大值放到i中
第二个放置第二大数?
第一次 j < k 交换位置
*/
var i = prompt('请输入一个整数:');
var j = prompt('请输入一个整数:');
var k = prompt('请输入一个整数:');
if(i < j){
var t = i;
i = j;
j = t;
}
if(i < k){
var t = i;
i = k;
k = t;
}
if(j < k){
var t = j;
j = k;
k = t;
}
console.log(i ,j ,k);
双分支选择语句
if(条件){
语句组;
}else{
语句组;
}
当程序执行到if时,先计算表达式的值,值为true时:执行if后面语句组;值为false时,执行else后的语句组。
双分支应用
// 求两个数中的最大值?
//声明变量,接收两个整数
var i = prompt('请输入第一个整数:');
var j = prompt('请输入第二个整数:');
//条件判断
if( i > j ){
alert(i);
}else{
alert(j);
}
alert(i > j ? i : j);
// 求三个数的最大值?
//准备三个变量,接收三个数
var i = prompt('请输入一个整数:');
var j = prompt('请输入一个整数:');
var k = prompt('请输入一个整数:');
var max = null; //赋值给null时,当我们不再使用max变量时,系统会自动将这个变量销毁,释放出内存空间。
if( i > j ){
max = i;
}else{
max = j;
}
if(max < k){
max = k;
}
alert('最大值:' + max);
// 输入一个成绩,判断是升班还是重修
/*
一个成绩? prompt()
分数线: 90
*/
var i = prompt('请输入一个成绩:');
if( i >= 90 ){
alert('升班');
}else{
alert('重修');
}
多分支选择语句
if(条件1){
语句组1;
}else if(条件2){
语句组2;
}
……
}else if(条件n){
语句组n;
}else{
语句组n + 1;
}
当程序执行到if时,先判断条件1的值,值为true时,执行语句组1;值为false时,再判断条件2的值,值为true时,执行语句组2;值为false时,再判断条件3的值,依此类推,直到判断条件n的值,值为true时,执行语句组n,值为false时,执行语句组n+1。
多分支应用
var i = prompt('请输入一个1~7中的整数:');
if(i == 1){
alert('周一');
}else if(i == 2){
alert('周二');
}else if(i == 3){
alert('周三');
}else if(i == 4){
alert('周四');
}else if(i == 5){
alert('周五');
}else if(i == 6){
alert('周六');
}else if(i == 7){
alert('周日');
}else{
alert('请输入1~7中的整数!');
}
//判断成绩优(90-100)良(80-89)中(70-79)差(60-69)不及格(<60)
/*
成绩
i >= 90 && i <= 100 优
i >= 80 && i <= 89 良
i >= 70 && i <= 79 中
i >= 60 && i <= 69 差
i < 60 不及格
*/
var i = prompt('请输入一个成绩:');
if(i < 0 || i > 100){
alert('回家玩去吧!');
}else{
if(i >= 90 && i <= 100){
alert('优');
}else if(i >= 80){
alert('良');
}else if(i >= 70){
alert('中');
}else if(i >= 60){
alert('差');
}else{
alert('不及格');
}
}
//设计一个具有+、-、*、/、%的简单计算器
/*
1 + 1
1. 需要几个变量,分别存储什么数据?
三个变量, i ch j
2. 有多少个条件,需要哪个语法的支撑?
+、-、*、/、% 多分支
*/
var i = parseInt(prompt('请输入一个整数:'));
var ch = prompt('请输入一个算术运算符:');
var j = parseInt(prompt('请输入另一个整数:'));
if(ch === '+'){
alert(i + j);
}else if(ch === '-'){
alert(i - j);
}else if(ch === '*'){
alert(i * j);
}else if(ch === '/'){
alert(j === 0 ? '除数不能为零!' : (i / j).toFixed(2));
}else if(ch === '%'){
alert(j === 0 ? '除数不能为零!' : (i % j));
}else{
alert('其它运算暂未开放,敬请期待!');
}
switch分支语句
switch(表达式){
case 表达式 : 语句组; [break;]
case 表达式 : 语句组; [break;]
……
case 表达式 : 语句组; [break;]
[default : 语句组;]
}
先计算switch后的表达式的值,如果这个值与 某个case后表达式的值 相同时,则执行这个case后面的语句组,如果语句组后有break,则直接跳出switch语句。如果没有break,则继续执行后面所有的语句组,直到遇到break或右大括号停止。
switch应用
//任意输入一个数字,判断是星期几?
//准备一个变量,接收一个数字
var i = parseInt(prompt('请输入一个1~7中的整数:'));
switch(i){
case 1 : console.log('周一'); break;
case 2 : console.log('周二'); break;
case 3 : console.log('周三'); break;
case 4 : console.log('周四'); break;
case 5 : console.log('周五'); break;
case 6 : console.log('周六'); break;
case 7 : console.log('周日'); break;
default : console.log('请输入1~7中的整数!');
}
//输入一个0-6的整数,判断哪一天是工作日,哪一天是休息日?
//准备一个变量,接收一个数字
var i = parseInt(prompt('请输入一个0~6中的整数:'));
switch(i){
case 1 :
case 2 :
case 3 :
case 4 :
case 5 : console.log('工作日'); break;
case 6 :
case 0 : console.log('休息日'); break;
default : console.log('请输入0~6中的整数!');
}
// 输入一个月份,输出这个月有多少天?
//准备一个变量,接收一个月份
var i_month = parseInt(prompt('请输入一个月份:'));
switch(i_month){
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 : alert('31天'); break;
case 4 :
case 6 :
case 9 :
case 11 : alert('30天');break;
case 2 :
//准备一个年份的变量
var i_year = parseInt(prompt('请输入一个年份:'));
alert(!(i_year % 4) && i_year % 100 || !(i_year % 400) ? '29天' : '28天');
}
//判断成绩优良中差不及格
/*
100
90 ~ 99 优
80 ~ 89 良
70 ~ 79
60 ~ 69
59 ~ 0
*/
var i = parseInt(prompt('请输入一个成绩:'));
switch(parseInt(i / 10)){
case 10 :
case 9 : alert('优');break;
case 8 : alert('良');break;
case 7 : alert('中');break;
case 6 : alert('差');break;
default : alert('不及格');
}
//计算某日是该年的第几天?
/*
1. 需要哪些变量? 年 月 日
2. 根据月份判断,从这个月的前一个月开始 加到 第一月的天数,然后再加上日
*/
var i_year = parseInt(prompt('请输入一个年份:'));
var i_month = parseInt(prompt('请输入一个月份:'));
var i_date = parseInt(prompt('请输入一个日:'));
var sum = 0; //只能0不会影响和的结果
switch(i_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 : sum += !(i_year % 4) && i_year % 100 || !(i_year % 400) ? 29 : 28;
case 2 : sum += 31;
case 1 : sum += i_date;
}
alert(i_year + '年' + i_month + '月' + i_date + '日是' + i_year + '年中的第' + sum + '天');
//用switch实现简单计算器
// 数字 符号 数字
// + - * / %
var i = parseInt(prompt('Please input a Int:'));
var ch = prompt('请输入一个算术运算符:');
var j = parseInt(prompt('请输入一个整数:'));
switch(ch){
case '+' : alert(i + j);break;
case '-' : alert(i - j);break;
case '*' : alert(i * j);break;
case '/' : alert(j === 0 ? '除数不能为零!' : (i / j).toFixed(2));break;
case '%' : alert(j === 0 ? '除数不能为零!' : i % j);break;
default : alert('运算符错误!');
}
//设计一个简单的猜拳游戏
//两个人:需要几个变量? 2
//每一个人可以有多少种出拳方式:石头、剪刀、布
//玩家一
var player1 = prompt('石头、剪刀、布,三种方式\n请出拳:');
var player2 = prompt('石头、剪刀、布,三种方式\n请出拳:');
switch(player1){
case '石头' :
switch(player2){
case '石头' : alert('平局');break;
case '剪刀' : alert('玩家一胜');break;
case '布' : alert('玩家二胜');break;
default : alert('耍赖');
}
break;
case '剪刀' :
switch(player2){
case '石头' : alert('玩家二胜');break;
case '剪刀' : alert('平局');break;
case '布' : alert('玩家一胜');break;
default : alert('耍赖');
}
break;
case '布' :
switch(player2){
case '石头' : alert('玩家一胜');break;
case '剪刀' : alert('玩家二胜');break;
case '布' : alert('平局');break;
default : alert('耍赖');
}
break;
default : alert('耍赖');
}