if-else-if多分支语句
- 练习案例1
说明:输入学生的成绩并根据成绩给出相应的等级,
等级评定标准: 成绩在90–100(包含)之间,显示 A,成绩在80–90(包含)之间, 显示 B,成绩在70–80(包含)之间, 显示 C,成绩在60(包含)–70(包含)之间, 显示 D,成绩在0–60(不包含)之间, 显示 E。
var score = Number(prompt("请输入你的成绩:"));
if (!isNaN(score)){//如果为true,就说明用户输入的不是数字,就不会执行
if( score > 90 && score <= 100 ){
console.log('A级')
}else if ( score > 80 ){
console.log('B级')
}else if ( score > 70 ){
console.log('C级')
}else if ( score >= 60 ){
console.log('D级')
}else {
console.log('E级')
}
}else{
console.log('您输入有误,请重新输入!')
}
- 练习案例2 — 判断一个年份是不是闰年
说明:闰年指的是 公历 或者是 阳历 , 能被4整除但是不能被100整除,或者能被400整除的年份
var year = parseInt(prompt('请您输入一个年份:'));
if ( year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
console.log('闰年')
}else{
console.log('平年')
}
while循环
循环: 要有结束的条件; 要有计数器,用来记录循环的次数。
while循环代码: 先判断条件,满足条件,执行循环体
while(循环条件){
循环体;
计数器++;
}
练习1: 计算1-100之间的所有数字的和
var sum = 0;
var i = 1;
while(i <= 100){
sum += i;
i++;
}
console.log('1-100的和为:'+ sum);
案例1:求6的阶乘
var J = 1;
var i = 1;
while(i<=6){
J *= i;
i++;
}
console.log(J);
案例2: 求1-100之间所有偶数的和
var sum = 0;
var i = 0; //
while (i <= 100){
if (i % 2 == 0){
sum += i;
}
i++;
}
console.log(sum);
案例3: 求1-100之间所有奇数的和
var sum2 = 0;
var j = 0; //技术器
while (j <= 100){
if (j % 2 != 0){
sum2 += j;
}
j++;
}
console.log(sum2);
例4:请输出1-100之间能够被7整除的数字
var k = 0;
while(k<=100){
if (k%7==0){
console.log(k + ',')
}
k++;
}
案例5: 求账号和密码是否一致,登录的效果实现------- 账号:admin 密码:123 (密码是字符串类型)
提示用户输入账号,提示用户输入密码,如果账号和密码不对应,则一直提示用户输入账号和密码。
var userName = prompt('请您输入账号:'); //变量声明与初始化
var userPwd = prompt('请您输入密码:');
while(userName != 'admin' || userPwd != '123'){
userName = prompt('请您输入账号:'); //注意这里是变量的重新复制,没有声明
userPwd = prompt('请您输入密码:');
console.log('输入错误,请重新输入!')
}
console.log('登陆成功!')
do-while循环
do-while循环的语法格式:
var i=0;
do{
循环体
}while(条件); 注意,while条件后面的分号不要忘记
while 和 do-while 两种循环方式都能够实现某种功能,两种都可以选择,就看哪个用的比较熟练
练习1:输出10次 “欢迎来到JS的世界”
var i = 0;
do {
console.log('欢迎来到JS的世界!');
i++;
}while(i<10);
练习2:求100以内所有3的倍数的和
var sum = 0;
var j = 1;
do{
if (j % 3 == 0){
sum += j;
}
j++;
}while(j <= 100);
console.log(sum);
for循环
for循环语法:
for(表达式1;表达式2;表达式3){
循环体
}
执行过程:
- 先执行表达式1,判断表达式2,如果表达式2不成立,则直接跳出循环,
- 如果表达式2成立,执行循环体的代码,结束后,跳到表达式3执行,
- 然后再跳到表达式2判断是否成立,如果不成立,则跳出循环,
- 如果表达式成立,则执行循环体的代码,然后再跳到表达式3,
- 再跳到表达式2, ,,,,,,
案例1:求1-100之间所有数字的和
var sum = 0;
for (var i = 1; i <= 100; i++){
sum += i;
}
console.log(sum);
案例2:1-100之间所有偶数的和
var sum0 = 0;
for (var j = 1; j <= 100; j++){
if (j % 2 == 0){
sum0 += j;
}
}
console.log(sum0);
案例3:1-100之间所有奇数的和
var sum1 = 0;
for (var k = 1; k <= 100; k++){
if (k % 2 != 0){
sum1 += k;
}
}
console.log(sum1);
案例4:1-100之间所有能被3整除的数字的和
var sum2 = 0;
for (var l = 0; l <= 100; l++){
if (l % 3 == 0){
sum2 += l;
}
}
console.log(sum2);
switch-case
练习1:输入一个学生的成绩等级返回该学生对应的成绩范围。
成绩标准: 如果是 A ,则显示 90–100 的分数
如果是 B ,则显示 80–90 的分数
如果是 C ,则显示 70–80 的分数
如果是 D ,则显示 60–70之间的分数
如果是 E ,则显示 60以下的分数
var grade = prompt('请输入您的成绩等级:');
switch (grade){
case 'A':console.log('90到100之间');break;
case 'B':console.log('80到90之间');break;
case 'C':console.log('70到80之间');break;
case 'D':console.log('60到70之间');break;
default :console.log('0到60之间');
}
- 注意问题:
* 1. default后面的break可以省略
* 2. default语句可以省略
* 3. switch后面表达式的值与case的值进行比较时使用的是严格模式
* 4. break可以省略,但是他后面的代码会继续执行
练习2: 根据月份显示对应的天数。
1,3,5,7,8,10,12 ----- 31天
2 ----- 28天
4,6,9,11 ----- 30天
var month=parseInt(prompt('请输入月份:'));
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:console.log('31天');break;
case 4:
case 6:
case 9:
case 11:console.log('30天');break;
case 2:console.log('28天');
}
练习3: 根据数字,显示对应的星期。
var num = parseInt(prompt('请输入一个表示星期的数字'));
switch(num){
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('输入有误,请重新输入!')
}
- 分支语句总结:
* if语句:一个分支
* if-else语句:两个分支,最终只执行一个分支
* if-else if-else if语句: 多分支语句,但是最终也是只会执行一个语句
* switch-case语句: 多分支语句,最终也是只执行一个语句,注意一定要有break
* 三元表达式: 和if-else语句效果是一样的
* - 多分支语句:
* 什么时候使用if-else if-else if语句: 一般是对范围的判断
* 什么时候使用switch-case语句:一般是对具体的值的判断
流程控制语句案例练习
- 本金10000元存入银行,年利率是千分之三,每过一年,将本金和利息相加作为新的本金,计算:5年后,获得的本金是多少?
var money = 10000;
var rate = 0.003;
for (var i = 1; i <= 5; i++) {
money += money * rate;
}
document.write(money)
- 乘法口诀表 (一定要会写!!!)
分析:第i行有i个乘法表达式
使用i控制行数,放在外循环,使用j控制每行中显示的表达式的个数,放在内循环
for (var i=1; i<=9 ;i++){
// 控制每行中显示的个数
for (var j=1; j<=i; j++){
document.write(j + '*' + i + '=' + i*j);
document.write(' ');
}
document.write('<br />');
}
document.write('<hr color=#ccc />');
表格版的乘法口诀表
document.write('<table border="1" cellpadding="8" celspacing="5">');
for (var n=1; n<=9; n++){ //控制行数
document.write('<tr>'); //tr是表格的行
for (var m=1; m<=n; m++){
document.write('<td>'); //td是表格的单元格, 注意:表格里面没有列的概念
document.write(m + '*' + n + '=' + n*m);
document.write('</td>'); //一个单元格到这里结束,单元格之间放的是乘法表达式,一个单元格里面放一个
}
document.write('</tr>'); //一个表格的一行到这里结束
}
document.write('</table>');
- 画星星
document.write('<p>画出一个5行的三角形的星星:</p>');
for (var n = 0; n < 5; n++) {
for (var m = 0; m <= n; m++) {
document.write('☆');
}
document.write('<br/>');
}
- 兔子繁殖问题(黄金分割数列,** 斐波那契数列!!!**一定要会写)
-
有个人想知道一年之内一对兔子能繁殖多少对? 于是就建了一道围墙,把一对兔子关在里面,已知一对兔子每个月可以生一对小兔子,而一对小兔子从出生后第3个月起每月生一对小兔子,假设一年之内没有发生死亡事件,那么一对兔子一年内(12个月)能繁殖多少对?
兔子的规律为数列: 1,1,2,3,5,8,13,21,,,
var f1 = 1;
var f2 = 1;
var f = 0;
for (var i = 3; i <= 12; i++) {
f = f1 + f2;
f1 = f2;
f2 = f;
}
document.write(f);