条件语句
1)if语句的基本使用
if语句举例1
if语句执行流程图
if语句举例2
else可以省略
看清楚哪些语句是if语句体中的语句
单行if语句
2)if elseif多条件分支
必须注意“否则如果“
BMI肥胖指数计算
3)if语句算法题
判断水仙花数
如何拆位
实现1
//要求用户输入一个三位数var n = Number(prompt('输入一个三位数'))//对用户输入的数值,进行合法性的验证if (!isNaN(n) && 100 <= n && n <= 999) {//当用户输入的数字是合法//数学方法//百位方法var a = Math.floor(n / 100);//十位var b = Math.floor(n / 10) % 10;//个位var c = n % 10;//根据水仙花数进行判断if (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == n) {console.log('水仙花数')} else {console.log('不是水仙花数')}} else {//输入是不合法的alert('您输入的数字是不合法的')}
实现2
//要求用户输入一个三位数var n = Number(prompt('输入一个三位数'))//对用户输入的数值,进行合法性的验证if (!isNaN(n) && 100 <= n && n <= 999) {//当用户输入的数字是合法//字符串方法//把数字n变为字符串var n_str = n.toString();//百位var a = Number(n_str.charAt(0));//十位var b = Number(n_str.charAt(1));//个位var c = Number(n_str.charAt(2));//根据水仙花数进行判断if (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == n) {console.log('水仙花数')} else {console.log('不是水仙花数')}} else {//输入是不合法的alert('您输入的数字是不合法的')}
游乐园门票计算
if语句的嵌套

//让用户输入星期几var week = Number(prompt('请输入星期几'));//再让用户输入年龄var age = Number(prompt('请输入年龄'));//让星期几作为大前提条件if (week == 0 || week == 6) {//周末if (age >= 10) {a = 500;}else {a = 210;}} else {//平日if (age >= 10) {a = 300;}else {a = 140;}}console.log(a)
4)switchi语句
switchi语句

//让用户输入月份var month = Number(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或者29天')break;default:console.log('您输入的月份有误')}
Break语句非常重要
5)三元运算符


var age = Number(prompt('请输入'));var type = age >= 18? '成年人' : '未成年人';console.log(type);
循环语句
1)for循环语句
从一个例子了解循环语句的功能


//输出1、2、3、4.....10for (var i = 1; i <= 10; i++) {console.log(i)}
for语句的语法
for语句的执行机理
准确遍历for循环
2)for循环算法题
for循环算法题1
for循环算法题2

//寻找1~100的符合条件的数字;除以3余1,除以4余2,除以5余3for (var i = 1;i <=100;i++){if(i % 3 == 1 && i % 4 == 2 && i % 5 == 3 ){console.log(i);}}
3)while循环语句
while循环的语法
注意事项

用while实现之前的案例

//输出1、2、3、4、....100var i = 1;while (i <= 100) {console.log(i)i++;}

//累加1+2+3+4+....100//累加器var sum = 0; i = 0;while (i <= 100) {sum += i;i++;}console.log(sum)
更适合while循环的场景

//寻找满足n的平方大于456789的最小整数//穷举法,从1开始试验var n = 1;while (n * n <= 456789) {n++;}console.log(n)

//寻找满足n的平方大于456789的最小整数//穷举法,从1开始试验var n = 0; i = 1;while (n < 500) {n = n + i;i++;}//一定要注意这里有一个“出一”错误console.log(i - 1)
更适合while循环的场景
4)break和continue
break
continue
5)do while语句
随机数函数
do while小案例
//随机两个变量,dy和dx,他们都在[-4,4]之间随机取值,但是不都能为0parseInt(Math.random() * 10);do {var dx = parseInt(Math.random() * 9) - 4;var dy = parseInt(Math.random() * 9) - 4;}while (dx == 0 && dy == 0)//只要出了循环,就保证 dx 和 dy不都是0console.log(dx, dy)
6)while语句算法题
while (true)
//随机一个数字,2~99之间var answer = parseInt(Math.random() * 98) + 2;//此时范围最小值和最大值var min = 1;var max = 100;//为了能够不断执行的执行询问,此时就必须使用死循环while (true) {//询问用户猜测的数字var n = Number(prompt('请猜测数字' + min + '~' + max));//验证用户输入的数字是否在范围内if (n <= min || n >= max) {alert('你输入的数字不在范围内');//不在区间时,直接放弃这次循环,就开启下一次迭代continue;}//判断用户输入的数字和answer的关系if (n > answer) {alert('你输入的数字太大了')//因为用户输入的数字较大,所以可以让此时的最大范围数字变为用户输入的数字max = n;} else if (n < answer) {alert('你输入的数字太小了')//因为用户输入的数字较小,所以可以让此时的最小范围数字变为用户输入的数字min = n;} else {alert('你猜对了!');//结束循环break;}}
do while
//随机一个数字,2~99之间var answer = parseInt(Math.random() * 98) + 2;//此时范围最小值和最大值var min = 1;var max = 100;do{//询问用户猜测的数字var n = Number(prompt('请猜测数字' + min + '~' + max));//验证用户输入的数字是否在范围内if (n <= min || n >= max) {alert('你输入的数字不在范围内');//不在区间时,直接放弃这次循环,就开启下一次迭代continue;}//判断用户输入的数字和answer的关系if (n > answer) {alert('你输入的数字太大了')//因为用户输入的数字较大,所以可以让此时的最大范围数字变为用户输入的数字max = n;} else if (n < answer) {alert('你输入的数字太小了')//因为用户输入的数字较小,所以可以让此时的最小范围数字变为用户输入的数字min = n;}}while( n !=answer)//出了do while循环,就说明n和answer相等了,因为只有相等才能出循环alert('你猜对了!');
初识算法
1)什么是算法
优质算法的要求
伪代码
算法如何培养
2)累加器和累乘器
累加器题目

//由用户输入数字n,计算3/2+4/3+5/4+.....+(n+1)/n的结果//用户输入nvar n = Number(prompt('请输入数字n'))//累加器var sum = 0;//遍历分母就可以了,因为分母就是分子加1有关系for (var i = 2; i <= n; i++) {sum += (1 + i) / n;}alert(sum.toFixed(2));
累乘器

//计算阶乘//用户输入nvar n = Number(prompt('请输入数字n'))//累乘器var result = 1;//倒着遍历,计算阶乘for (var i = n; i >= 1; i--) {result *= i;}alert(result);
同时用到累加器和累乘器的题目

//用莱布尼茨级数估算圆周率//π = 2 * (1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+(1*2*3*4)/(3*5*7*9)+(1*....n)/(3*5*....2n+1)//累加器,就是最后的答案var sum = 0;//累乘器,用来制作每一项;制作出来的这个项,要往累加器中累加var item = 1;//用户输入nvar n = Number(prompt('请输入数字n'));for (var i = 1; i <= n; i++) {//要先制作成这一项item *= i / (2 * i + 1);// console.log(item);//累加器中累加sum += item;}//显示结果alert((1 + sum) * 2);
3)穷举法
穷举法是什么



//寻找既能被3整除,也能被5整除的数字//穷举法,从1开始试验for (var i = 1; i <= 100; i++) {if (i % 3 == 0 && i % 5 == 0) {console.log(i);}}

//寻找约数//让用户输入数字nvar n = Number(prompt('请输入数字'));//穷举法for(var i = 1;i<= n;i++){if (n %i ==0){console.log(i);}}

//寻找水仙花数for(var i = 100;i<1000;i++){//水仙花数要拆数位//a、b、c分别表示百位、十位、个位var i_str = i.toString();var a = i_str.charAt(0);var b = i_str.charAt(1);var c = i_str.charAt(2);if(Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3)==i){console.log(i)}}
4)综合算法题目
循环的嵌套
for (var i = 0; i < 3; i++) {for (var j = 0; j <3; j++) {console.log(i,j)}}
循环嵌套题目

//寻找100以内的质数//穷举法outer: for (var i = 2; i <= 100; i++) {//内层循环开始从2开始尝试除i,如果能够整除,说明它不是质数,就可以筛选下一个数字了for (var j = 2; j < i; j++) {if (i % j == 0) {//说明数字i不是质数,因为它找到了除1和它本身之外的约数了,测试下一个数字//continue表示放弃这个数字//要给外层for循环加上label,然后在continue的后面加上这个label//这样表示立即开始迭代外层for循环的下一个数字了,而不是内层for循环continue outer;}}//能够遇见这条语句的数字i,一定是质数,否则就被continue略过了console.log(i);

//鸡兔同笼的问题//假设小鸡有a只,兔子有b只for (var a = 0; a <= 35; a++) {for (var b = 0; b <= 35; b++) {if (a + b == 35 && 2 * a + 4 * b == 94) {console.log('小鸡有' + a + '只,兔子有' + b + '只')}}}

var sum_1 = 0;var sum_2 = 0;var x = 0;outer: for (var a = 0; a <= 15; a++) {if (a < 11) {sum_1 = a * 4.5} else {sum_1 = 45 + 8 * (a - 10)}for (var b = 0; b <= 15; b++) {if (b < 11) {sum_1 = b * 4.5} else {sum_2 = 45 + 8 * (b - 10)}x = sum_1 - sum_2;console.log(x)}}














