一、分支结构
(一)if
1.条件成立,执行语句,否则啥也不做
if(条件){
语句
}
<script>
if(5>3){
console.log("正确");
}
if(5<3){
console.log("错误");
}
</script>
2.条件成立,执行语句1,否则执行语句2
if(条件){
语句1;
}else{
语句2;
}
<script>
if(5<3){
console.log("正确");
}else{
console.log("错误");
}
</script>
3.条件1成立,执行语句1,不成立的情况有多种
if(条件1){
语句1;
}else if(条件2){
语句2;
}else{
语句3;
}
<script>
var num = 190;
if (num > 200) {
console.log("11111");
} else if (num > 100) {
console.log("222");
} else {
console.log("333");
}
</script>
(二)if案例
判断奇数偶数
能整除2就是偶数,否则就是奇数
n%2==0 偶数
n%2==1 奇数
注:n是一个数字
//方法一
<script>
var n=5;
if(n%2==0){
console.log("是偶数");
}else{
console.log("是奇数")
}
</script>
//方法二 布尔类型中 1为true 0为false
<script>
var n=6;
if(n%2){
console.log("是奇数");
}else{
console.log("是偶数")
}
</script>
//方法三 取反 1为false 0为true
<script>
var n=35;
if(!(n%2)){
console.log("是偶数");
}else{
console.log("是奇数")
}
</script>
输出成绩等级
<script>
var score=66;
if(score>=90){
console.log("优秀");
}else if(score>=80&&score<90){
console.log("良好");
}else if(score>=60){
console.log("及格");
}else{
console.log("不及格");
}
</script>
<script>
//键盘手动输入
var score=+prompt("请输入成绩:");
if(score>=90){
console.log("优秀");
}else if(score>=80&&score<90){
console.log("良好");
}else if(score>=60){
console.log("及格");
}else{
console.log("不及格");
}
</script>
判断闰年
能被4整除并且不能被100整除,或者能被400整除
<script>
var year = +prompt("请输入年份:");
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
console.log("该年是闰年");
console.log(`${year}是闰年`);//模板字符串
} else {
console.log("该年是平年");
console.log(`${year}是平年`);//模板字符串
}
</script>
(三)switch
switch(变量){
case 情况1:语句1;break;
case 情况2:语句2;break;
...
default:其它语句;
}
default:case没有列举到的其它情况
break:跳出它所在的switch和循环代码块
<script>
var day=+prompt("请输入数字(1-7):");
switch(day){
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("请输入正确的数字");
}
</script>
如果不加break
<script>
var day=+prompt("请输入数字(1-7):");
switch(day){
case 1:console.log("星期一");
case 2:console.log("星期二");
case 3:console.log("星期三");
case 4:console.log("星期四");
case 5:console.log("星期五");
case 6:console.log("星期六");
case 7:console.log("星期日");
default:console.log("请输入正确的数字");
}
</script>
(四)switch案例
超市优惠,满200减30,满100减20,满50减10
<script>
var money = +prompt("请输入商品总金额:");
var youhuimoney;//优惠后的金额
switch (true) {
case money >= 200: console.log(youhuimoney = money - 30); break;
case money >= 100 && money < 200: console.log(youhuimoney = money - 20); break;
case money >= 50 && money < 100: console.log(youhuimoney = money - 10); break;
default: console.log("无优惠");
}
</script>
输出每个月有多少天,不考虑闰年
遇到break才会跳出switch
<script>
// 输出每个月有多少天,不考虑闰年
var month=+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 22:console.log("该月有28天");break;
default:console.log("请输入正确的月份");
}
</script>
成绩的等级
<script>
var score=+prompt("请输入成绩(0-100)");
var score1=parseInt(score/10);//得到成绩的十位数
switch(score1){
case 9:console.log("优秀");break;
case 8:
case 7:console.log("良好");break;
case 6:console.log("及格");break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:console.log("不及格");break;
case 10:console.log("满分");break;
default:console.log("请输入正确的成绩");
}
</script>
二、循环结构
(一)while
当条件满足时,就执行代码,一旦不满足了就不执行了
while(条件){
满足条件时执行的代码;
}
<script>
var num=0;
while(num<10){
console.log(num);
num++;
}
//如果num>=10跳出循环
</script>
(二)while案例
1到100的和
<script>
var num=1;
var sum=0;
while(num<=100){
sum+=num; //sum=sum+num
num++;
}
console.log("1~100的和为",sum);
</script>
求一个数的阶乘
<script>
var n=5;
var sum=1;
while(n>0){
sum*=n;
n--;
}
console.log("n的阶乘为",sum);
</script>
(三)do...while
先不管条件,先执行一次代码,再考虑条件是不是满足,如果满足,继续循环,否则跳出循环
do{
执行的代码;
}while(条件)
<script>
do{
console.log("你好你好");
}while(false)//false怎样都不成立
</script>
(四)do...while案例
1到100的和
<script>
var n = 1;
var sum = 0;
do {
sum += n;
n++
} while (n <= 100)
console.log(sum);
</script>
(五)for
for(1. 准备工作;2. 条件判断;4. 收尾工作){
//3. 做事
}
先执行准备工作,然后执行条件判断,如果条件成立,就做事,再执行收尾工作;接着再判断条件是否成立 ;如果成立,继续循环,否则退出循环
<script>
for(var i=0;i<10;i++){
console.log(i);
}
</script>
(六)for案例
打印1000~2000的闰年
<script>
for(var n=1000;n<=2000;n++){
if(n%4==0&&n%100!=0||n%400==0){
document.write(`${n} `);
}
}
</script>
(七)案例
求质数
质数:又称为素数,一个大于1的自然数,除了1和它本身不能被其它数整除
<script>
var n=+prompt("请输入一个自然数");
var flag=true;//假设所有数都是质数
//通过循环找到除了1和它本身之外可能出现的因子
for(var i=2;i<=n/2;i++){
//判断n是否为质数
if(n%i==0){
flag=false;//能进到当前位置,说明不是质数
break;
}
}
if(flag){//if(flag==true)
console.log(`${n}是质数`);
}else{
console.log(`${n}不是质数`);
}
</script>
水仙数
水仙是指一个 3位数,它的每个位上的数字的3次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)
<script>
var n=+prompt("请输入一个三位数");
var bai=parseInt(n/100);//百位 153/100=1
var shi=parseInt(n/10%10);//十位 153/10=15 15%10=5
var ge=parseInt(n%10);//个位 153%10=3
var sum=bai*bai*bai+shi*shi*shi+ge*ge*ge;
if(sum==n){
console.log(`${n}是水仙数`);
}else{
console.log(`${n}不是水仙数`);
}
</script>
九九乘法表
<style>
span{
display: inline-block;
width: 80px;
height: 20px;
}
</style>
<script>
for(var i=1;i<=9;i++){//行
for(var j=1;j<=i;j++){//列
document.write(`<span>${i}x${j}=${i*j}</span>`);
}
document.write("<br>");//换行
}
</script>
直角三角形
第一行1个*,第二行2个*,第三行3个*,...,第i行i个*
<script>
var n=+prompt("请输入总行数:");
for(var i=1;i<=n;i++){
for(var j=1;j<=i;j++){
document.write(`*`);
}
document.write(`<br>`);
}
</script>
等腰三角形
一共n=5行
第一行4个空,第二行3个空,第三行2个空,...,第i行(n-i)个空
第一行1个*,第二行3个*,第三行5个*,...,第i行(2 * i-1)个*
<style>
span{
display: inline-block;
width: 20px;
height: 20px;
}
</style>
<script>
var n=+prompt("请输入总行数:");
for(var i=1;i<=n;i++){
for(var j=1;j<=n-i;j++){
document.write(`<span></span>`);
}
for(var j=1;j<=2*i-1;j++){
document.write(`<span>*</span>`);
}
document.write(`<br>`);
}
</script>
菱形
菱形由正三角和倒三角组成,最长的只有一行
<style>
span{
display: inline-block;
width: 20px;
height: 20px;
}
</style>
<script>
var n=+prompt("请输入一个数:");
//上半部分
for(var i=1;i<=n;i++){
for(var j=1;j<=n-i;j++){
document.write(`<span></span>`);
}
for(var j=1;j<=2*i-1;j++){
document.write(`<span>*</span>`);
}
document.write("<br>");
}
//下半部分 因为最长的只有一行,所以从第n-1开始
for(var i=n-1;i>=1;i--){
for(var j=1;j<=n-i;j++){
document.write(`<span></span>`);
}
for(var j=1;j<=2*i-1;j++){
document.write(`<span>*</span>`);
}
document.write("<br>");
}
</script>