js入门(4)流程控制
条件语句
if语句的基本使用
if(测试条件){
/*语句块1*/
/*当条件为真执行这里*/
}else {
/*语句块2*/
/*当条件为假执行这里*/
}
if elseif多条件分支
if(测试条件1){
/*语句块1*/
/*当测试条件1为真执行这里*/
}else if(测试条件2){
/*语句块2*/
/*当测试条件2为真执行这里*/
}else if(测试条件3){
/*语句块2*/
/*当测试条件3为真执行这里*/
}
/*还可以有很多测试条件*/
else{
/*当所有测试条件都不符合的时候执行这里*/
}
if语句算法题
switch语句
- switch()中一般是一个变量名,这个变量将被分类讨论
- case表示“情况”,它后面没有括号,直接跟一个数值,程序会依次将case后面的的值和括号内变量的值进行对比,如果相同,就执行这条语句。
- default,如果case没有一个符合的则执行default
- 多条case可以公用同一个语句体
switch (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:
alert("这个月有28天");
break;
default:("请输入这个月正常的月份");
}
注意
- switch语句不像if,匹配一个之后会自动跳出,而是默认后面的case都是匹配的,如果不写break就不会跳出
三元运算符
条件表达式?表达式1:表达式2
- 条件表达式为真,执行表达式1
- 条件表达式为假,执行表达式2
循环语句
for循环语句
for (var i=0;i<=10;i++){
/*首先定义一个循环变量为0
然后判断i是否小于等于10,如果为真会执行语句,否则退出循环
最后i++
再去判断i是否小于等于10,循环往复*/
console.log(i);
}
while循环语句
- 是一种不定范围循环
- 事先不指定循环开始,结束的范围,只要条件满足,就会一直执行
while (测试条件){
}
注意
- 需要自己定义循环变量
- 必须使循环测试条件趋向不成立,否则会死循环
使用场景
- 没有限定范围的
break和continue
break
- 立即结束循环(只用于循环)
- 可以用于while(true)实现一个死循环
和if,break一起用
continue
- 只是跳过循环的某一环迭代,继续执行下一个迭代
- 经常在for循环中使用
do while语句
- 是一种后测试循环语句
- 先执行循环体,在测试条件是否满足,循环体至少会执行一次
do{
/*循环体*/
}
while (测试条件)
while语句算法题
随机生成两个变量dx,dy,他们均在[-4,4]区间随机取值,但要求dx和dy不能都为0
do{
var dx=parseInt(Math.random()*9)-4;
var dy=parseInt(Math.random()*9)-4;
}
while (dx===0&&dy===0)
随机生成一个2-99的数字,让用户输入这个数字,通过提示太大了和太小了,不断重复这个过程,直到用户准确猜到这个数字
var sjs=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;
}
if (n>sjs){
alert('太大了');
max=n;
}else if(n<sjs){
alert('太小了');
min=n;
}else {
alert('猜对了');
break;
}
}
初识算法
- 是指解题方案的准确而完整的描述,能够对一定规范的输入,在有限时间内获得有效输出
- 优秀的算法的要求
正确性
健壮性
可读性
累加器和累乘器
累加器题目
var n=Number(prompt('请输入一个大于2的数字'));
var sum=0;
for (var i=2;i<=n;i++){
sum+=(i+1)/i;
}
alert(sum);
累乘器题目
用户输入数字n,请计算n的阶乘
var n=Number(prompt('请输入一个正整数,将自动计算累乘'));
var cheng=1;
for (var i=1;i<=n;i++){
cheng *=i;
}
alert(cheng);
组合题目
<script>
var x=1;
var fenzi=1;
var fenmu=1;
var n=Number(prompt('请输入一个数'));
for(var i=1;i<=n;i++){
fenzi*=i;
fenmu*=(2*i)+1;
x+=fenzi/fenmu;
}
alert(2*x);
</script>
综合算法题目
循环的嵌套
鸡兔同笼
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了