今天的学习内容主要以循环为主,主要锻炼以计算机角度出发来帮助解决一些典型的数学问题,做到锻炼个人逻辑思维能力。
1.判断知识点补充
1. ,(英文逗号)
var a , b;
打印多个值 console.log(a , b)
2. . (点)
对象才有
3. ()
函数
优先级
if()
switch()
4. {}
代码块
5.关于if和switch中的简写
代码块中只有一句话的时候,可以省略大括号
if() 只有一条语句,可以省略大括号
switch case 只有一条语句,可以省略大括号
var a = 2 ;
var b = 10;
var c;
//if(a>b) {
// c = a ;
// }
// else {
// c = b ;
// }
a > b ? c = a : c = b ;
console.log(c);
2.三目运算符
三目运算符:
条件?表达式1:表达式2
条件成立就执行表达式1,条件不成立就 执行表达式2
三目运算符是双分支的简易写法
var a = 2 ;
var b = 10;
var c;
//if(a>b) {
// c = a ;
// }
// else {
// c = b ;
// }
a > b ? c = a : c = b ;
console.log(c);
3.循环语句
变量初始值
while(条件){
循环做的事情
变量产生的变化
}
初始值只读一次
判断条件,循环,变量变化
.......
for(变量初始值;循环的条件;变量变化){
循环要做的事情
}
do while 先做后判断
do {
}while(条件)
//while有可能一次也不会执行
var i = 0 ;
while(i < 0) {
console.log(666);
i++;
}
//do while 至少会执行一次
var i = 0 ;
do {
console.log(666);
i++;
} while(i < 0)
4.闰年加换行
// 1000-2000之间的闰年
// 每10个换行 计数
var count = 0;
for(var y = 1000; y <= 2000 ; y++){
if(y % 4 === 0 && y % 100 !== 0 || y % 400 === 0) {
document.write(y);
count++;
if( count % 10 === 0 ){
document.write('<br>');
}
}
}
将count计数换一种判断加换行
var count = 0;
for(var y = 1000; y <= 2000 ; y++){
if(y % 4 === 0 && y % 100 !== 0 || y % 400 === 0) {
document.write(y);
count++;
//当要统计的数量发生变化时,才做判断
if( count == 10 ){
document.write('<br>');
count = 0 ;
}
}
}
5.质数的判断
质数:只能被1和自己整除
合数: 除了1和自己以外还能被其它数整除
121
121 % 2
121 % 3
121 % 4
...
121 % 120
var n = 121 ;
// if(n % 2 !== 0 && n % 3 !== 0 &&)
// 只要能被整除,一定不是质数
// 但是要除完了才知道是不是质数
// for(var i = 2 ; i < 121 ; i++) {
// if(n % i === 0) {
// alert('不是质数')
// }
// else {
// alert('是质数')
// }
// }
// 假设法
// 假设是一个质数
var flag = true ;
for(var i = 2 ; i < 12 ; i++) {
if(12 % i === 0) {
flag = false ;
}
}
if(flag === true) {
alert('是质数')
}
else {
alert('不是质数')
}
7.break 和 continue
优化性能
break 结束整个循环
continue 结束本次循环,下次循环继续
// for(var i = 0 ; i < 10 ; i++) {
// console.log(i);
// if(i === 3) {
// break;
// }
// }
// for(var i = 0 ; i < 10 ; i++) {
// if(i === 3) {
// continue;
// }
// console.log(i);
// }
var n = 12 ;
//假设是一个质数
var flag = true ;
//找到他不是的证据
for(var i = 2 ; i<= n / 2 ; i++ ){
if(n % i === 0 ) {
flag = false ;
// 如果找到了一个能被整除的数,表示这个数已经不是质数了,也就是知道了最终的结果,就不需要继续循环了
break ;
}
}
// if(flag) {
// alert('是一个质数');
// }
// else{
// alert('不是一个质数');
// }
flag ? alert('是') : alert('不是') ;
8.质数的判断(优化break)
for(var i = 0 ; i < 10 ; i++) {
document.write('*');
if(i === 3) {
break; // 直接结束整个循环,i = 3
}
}
console.log(i);
如果循环提前结束,是因为找到了能被整除的数 -- 说明不是质数
如果循环正常结束,因为没有找到被整除的数 -- 说明是质数
var n = 7 ;
for(var i = 2 ; i < n ; i++) {
if(n % i === 0) {
break ;
}
}
console.log(i);
if(i === n) {
alert('是')
}
else {
alert('不是')
}
var count = 0;
for(var i = 2 ; i < n ; i++) {
if(n % i === 0) {
count++ ;
break ;
}
}
9.循环的嵌套
外层循环走一下,内层循环走一圈 时针和分针的关系
// ****
// ****
// ****
// ****
// 外层 i 控制打印的行数
for(var i = 0 ; i < 4 ; i++) {
// 内层j控制打印*的个数
for(var j = 0 ; j < 4 ; j++) {
document.write('*');
}
document.write('<br>');
}
// i = 0 ;
// j = 0
// j = 1
// j = 2
// j = 3
// i = 1 ;
// j = 0
// j = 1
// j = 2
// j = 3
// i = 2 ;
// j = 0
// j = 1
// j = 2
// j = 3
// i = 3 ;
// j = 0
// j = 1
// j = 2
// j = 3
10.打印三角形
// *
// **
// ***
// ****
// *****
// i 控制行数
for(var i = 0 ; i < 5 ; i++) {
// 打印星星,星星的个数跟行数一样
for(var j = 0 ; j <= i ; j++) {
document.write('*')
}
// 打印换行
document.write('<br>')
}
//倒三角
// *****
// ****
// ***
// **
// *
for(var i = 0 ; i < 5 ; i++) {
for(var j = 0 ; j < 5 - i ; j++){
// for(var j = 5 - i ; j > 0 ; j--) {
document.write('*')
}
document.write('<br>')
}
// *****
// ****
// ***
// **
// *
// 11111
// 21111
// 22111
// 22211
// 22221
for(var i = 0 ; i < 5 ; i++) {
for(var j = 0 ; j < i ; j++) {
document.write(' ');
}
for(var k = 0 ; k < 5 - i ; k++) {
document.write('*');
}
document.write('<br>')
}
12.循环的练习
// 100-200之间被3和7整除
var count = 0 ;
for(var i = 100 ; i <= 200 ; i++) {
// console.log(i);
// 找到满足条件的数
if(i % 3 === 0 || i % 7 === 0) {
document.write(i + ' ');
count++ ;
if(count % 5 === 0) {
document.write('<br>') ;
}
}
}
// 10的阶乘 1*2*3*4*5...*10
// 1*2=2
// 2*3=6
// 6*4=24
// 24*5=120
// ...
var jc = 1 ;
for(var i = 1 ; i <= 100 ; i++) {
// jc = jc * i ;
jc *= i ;
}
console.log(jc);
// 100以内所有的数求和 1+2+3+4+5+...+100
var sum = 0 ;
for(var i = 1 ; i <= 100 ; i++) {
sum += i ;
}
console.log(sum);
13.循环的特殊语法
// while
// var i = 0 ;
// while(i < 10) {
// console.log(666);
// i++ ;
// }
// for(;;)
// for(;;) {
// console.log(666); // 最简单的死循环
// }
// 把for语句改写成while的形式,但是注意分号不能省
var i = 0 ;
for( ; i < 10 ; ) {
console.log(666);
i++ ;
}
// for 第一个分号前面的代码只会执行一次,因此可以声明多个变量
for(var i = 0 , count = 0 ; i < 100 ; i++) {
if(i % 2) {
document.write(i + ' ')
count++;
if(count % 10 === 0) {
document.write('<br>')
}
}
}
14.死循环
for 执行的效率更高一点,一般情况都使用for
for 倾向于已知循环次数 for(;;)
while 一般条件复杂(死循环) while(true)
do while 至少执行一次
// for(;;){}
// for(var i = 0 ; ; i++) {
// console.log(i);
// if(i === 9) {
// break;
// }
// }
// var i = 0 ;
// while(true) {
// console.log(666);
// i++ ;
// if(i === 10) {
// break;
// }
// }
// 产生100以内的随机整数,要多少次才能生成0
var count = 0
for(; ;) {
var n = Math.round(Math.random() * 100) ;
count++ ;
if(n === 0) {
break;
}
}
console.log(count);
var count = 0 ;
while(true) {
var n = Math.round(Math.random() * 100) ;
count++ ;
if(n === 0) {
break;
}
}
console.log(count);
15.100以内的奇数
100以内满足条件的数
遍历100以内所有的数
找到满足条件的那一个
找到奇数
for(var i = 0 ; i <= 100 ; i++) {
if(i % 2) {
console.log(i);
}
}
// 同时被3和7整除
for(var i = 1 ; i <= 100 ; i++) {
if(i % 3 === 0 && i % 7 === 0) {
console.log(i);
}
}
16.100以内的质数
输出100以内所有的质数
2 3 5 7 ...
var count = 0 ;
for(var i = 2 ; i <= 100 ; i++) {
// 判断i是不是质数
// 假设法
var flag = true ;
for(var j = 2 ; j < i ; j++) {
if(i % j === 0) {
flag = false ;
break ;
}
}
// 根据flag判断是不是质数
if(flag) {
document.write(i + ' ');
count++ ;
if(count % 5 === 0) {
document.write('<br>')
}
}
}
本文深入探讨了编程中的循环语句,包括while、for、do...while等,以及三目运算符的使用。通过实例展示了如何判断闰年、质数,并讲解了break和continue在优化循环性能中的作用。此外,还介绍了循环的嵌套、打印图形(如三角形)的技巧,并提供了循环的特殊语法和死循环的实现。最后,通过实际问题如找出100以内的奇数和质数,进一步巩固了循环和条件判断的知识应用。
4835

被折叠的 条评论
为什么被折叠?



