javascript基础/流程控制语句/循环语句

一,流程控制语句

js 中执行顺序是从上到下。我们可以通过流程控制语句改变js语句的执行顺序,让某些语句先执行,某语句不执行。
通过条件来控制语句的执行顺序。
条件分支语句分类:if语句,三元表达式,switch语句。
⦁1.1 if语句
语法:if 如果…… else否则

1.	if (条件表达式) {
2.	    当满足条件表达式,执行结构体1;
3.	}
4.	else {
5.	     当不满条件表达式,执行结构体2;
6.	}

条件表达式:结果一定是布尔值,结果如果是true,满足条件;结果如果是false,不满足条件

结构体:用大括号包裹js语句。

1.	// 当用户输入分数,告诉用户是否及格
2.	// 的到用户输入的分数
3.	var score = parseInt(prompt("请输入该次考试分数",100));
4.	// if 如果 else 否则
5.	if (score >= 60) {
6.		// 及格,该大括号结构体执行的条件  score>=60结果是true
7.		console.log("恭喜及格");
8.		console.log("该次你的考试分数是" + score);
9.	}else {
10.		// 否则,对上面条件否定
11.		// 结构体:不满足条件表达式才执行该结构体
12.		// 隐含条件 score < 60 
13.		console.log("加把劲,努力");
14.	}

⦁ else 语句可以省略,当不满足条件,直接跳出if语句,执行后面其他的语句。

1.	// 请输入输入
2.	var score = parseInt(prompt("请输入分数"));
3.	
4.	// if语句
5.	if (score >= 60) {
6.		console.log("及格");
7.	}
8.	
9.	// 后面语句
10.	console.log("查询结束");

⦁ 当结构体里面只有一条语句时,可以省略大括号

1.	// 请输入天气,晴朗,有风
2.	var w = prompt("请输入天气");
3.	// 如果晴朗,出去玩 不晴朗学习
4.	if (w == "晴朗") 
5.		console.log("出去玩耍");
6.	else 
7.		console.log("踏实学习");
8.		console.log("天气查询完毕");
9.	

举例:输入晴朗 条件满足,执行if后面的结构体,输出“玩耍”,if语句跳出,执行后面的语句,输出“天气查询完毕”

. 在这里插入图片描述

举例:输入有风
不满足条件,执行else后面的结构体,输出“踏实学习”,跳出if语句,执行后面的语句输出“天气查询完毕”

在这里插入图片描述
多分支的if语句

1.	if (条件1) {
2.	      满足条件1,执行结构体13.	}else if (条件2) {
4.	      不满足条件1,满足条件2执行结构体2
5.	}else if (条件3) {
6.	      不满足条件12,满足条件3执行结构体37.	}……
8.	else {
9.	      以上条件都不满足,执行该结构体
10.	}

多分支的if语句,结构体只会执行一个,执行完成,立即跳出if语句。

⦁ 多分支的if语句else语句也可以省略,以上条件都不满足,直接跳出if,执行后面其他语句

1.	var score = parseInt(prompt("请输入分数"));
2.	if (score >= 90) {
3.		console.log("优秀");
4.	}else if (score >= 80) {
5.		console.log("良好");
6.	}else if (score >= 70) {
7.		console.log("还行");
8.	}else if (score >= 60) {
9.		console.log("及格");
10.	}
11.	
12.	// 后面语句的语句
13.	console.log("查询结束");

⦁ “殊途同归”,不管if语句执行哪一个结构体,if语句后面的其他语句都会执行
⦁ “跳楼现象”多分支的if语句只会执行一个结构体,然后立即跳出if语句

if语句嵌套

1.	/*
2.	男性大于等于22岁可以结婚;女性大于等于20可以结婚
3.	用户输入年龄,性别判断是否可以结婚
4.	*/
5.	// 性别
6.	var sex = prompt("请输入性别");
7.	// 年龄
8.	var age = parseInt(prompt("请输入年龄"));
9.	
10.	// 外层使用性别
11.	if (sex === "男性") {
12.		if (age >= 22) {
13.			// 该结构体执行: 同时满足两个条件 sex===男性 age >= 22
14.			console.log("该男性可以结婚");
15.		}else {
16.			// age <22
17.			console.log("该男性不可以结婚");
18.		}
19.		console.log("该用户是男性");
20.	}else if (sex === "女性") {
21.		if (age >= 20) {
22.			console.log("女性可以结婚");
23.		}else {
24.			console.log("女性不可以结婚");
25.		}
26.		console.log("女性查询完毕");
27.	}
28.	
29.	console.log("查询结束");

1.2 三元表达式
三元表达式(三元运算符):

语法:条件表达式 ? 值1 : 值2;
规则:
当条件表达式为真时,三元表达式结果是值1;
当条件表达式为假时,三元表达式结果是值2;

1.	var sum = false ? 1 : 0;

案例:
当结果是二选一时使用三元表达式更简单。
当工作年限不满1年,工资小于8000,年终奖为工资的1倍,否则是1.2倍;
当工作年限不满2年,工资小于10000,年终奖为工资的1.5倍,否则是1.7倍;
当工作年限等于超过2年,工资小于13000,年终奖为工资的2.3倍,否则是3倍;

用户输入年限和工资,告诉他对应的年终奖

1.	// 的得到年限,0。9年 取整0
2.	var year = parseInt(prompt("请输入工作年限"));
3.	// 工资
4.	var salary = parseInt(prompt("请输入工资"));
5.	// 倍数
6.	var beishu = 0;
7.	
8.	// 外层 使用多分支if语句,根据年限划分条件
9.	if (year === 0) {
10.		// 倍数1,1.2
11.		if (salary < 8000) {
12.			beishu = 1;
13.		}else {
14.			beishu = 1.2
15.		}
16.	}else if (year === 1) {
17.		beishu = salary < 10000 ? 1.5 : 1.7;
18.	}else if (year >= 2) {
19.		beishu = salary >= 13000 ? 3 : 2.3 ;
20.	}
21.	
22.	
23.	// 输出,字符串拼接
24.	console.log("该用户工作年限是" + year + "年,工资是" + salary + "元,对应的年终奖是" + (beishu * salary)  + "元。");

1.3 switch语句
开头语句,允许程序去计算一个表示式的值,然后让这个值去匹配case标签。匹配成功执行该case标签的执行体。

1.	switch (表达式){
2.	   case13.	        执行体1;
4.	        break;
5.	   case26.	        执行体2;
7.	        break;
8.	   case39.	       执行体;
10.	       break;
11.	    ……
12.	    default:
13.	       执行体;
14.	        break; 
15.	}
1.	// 用户输入星座,输出对应的运势
2.	// 获取星座
3.	var xingzuo = prompt("请输入星座");
4.	switch (xingzuo) {
5.		case "白羊座":
6.			console.log("白羊座");
7.			console.log("白羊座今日运势普通,注意处理好自己的负面情绪,不要让它影响你的生活、工作。感情方面运势一般,你可能会希望得到伴侣更多地关注和关心,但你传递给他/她很大地压力感让人");
8.			break;
9.		case "金牛座":
10.			console.log("金牛座");
11.			console.log("金牛座今日运势稍弱,遇事不要慌张,越紧张头脑越不清楚,会影响你的判断力。感情方面运势一般,伴侣的一个无心举动都可能会惹得你不高兴,情绪不佳时不妨独处一会儿。");
12.			break;
13.		case "双子座":
14.			console.log("双子座");
15.			console.log("双子座今日运势较好,抗压能力强,面对困难不会轻易气馁的你适合尝试完成高难度的事情。");
16.			break;
17.		default:
18.			console.log("没有你输入的星座换一个吧");
19.			break;
20.	}
21.	
22.	console.log("查询结束");

break: 匹配case执行后面的break语句,不再继续向下执行后面的语句,立即跳出switch语句,执行switch后面其他语句。
default: 当以上case都没有匹配时,执行default后面的语句。(无匹配执行)
default语句中的break可以省略,当执行default后面的语句结束,也会跳出switch语句

1.	// 获取数字
2.	var num = parseInt(prompt("请输入数字"));
3.	switch (num) {
4.		case 1:
5.			console.log(num);
6.			break;
7.		case 2:
8.			console.log(++ num);
9.		case 3:
10.			console.log(num ++);
11.		case 4:
12.			console.log(num *= 2);
13.			break;
14.		default:
15.			console.log(num + "没有匹配结果");
16.	}
17.	/*
18.	num = 2;
19.	匹配case 2执行后面的语句
20.		console.log(3); num=3
21.		没有break,语句不会结束,继续向下执行,虽然不匹配case 3,也会执行,
22.		输出console.log(3) num=4
23.		没有Break继续执行
24.		console.log(8)
25.		执行break,立即跳出switch语句
26.	*/

利用break案例:

1.	/*
2.	1,3,5,7,8,10,12   31天
3.	4,6,9,11          30天
4.	2				  28天
5.	*/
6.	// 获取月份
7.	var month = parseInt(prompt("请输入月份"));
8.	switch (month) {
9.		case 2:
10.			console.log(month + "月有28天");
11.			break;
12.		case 4:
13.		case 6:
14.		case 9:
15.		case 11:
16.			console.log(month + "月有30天");
17.			break;
18.		default:
19.			console.log(month + "月有31天");
20.	}
21.	console.log("查询结束");

其他写法:
switch后面直接书写true,匹配case 后面书写的条件表达式

1.	//分数案例
2.	// 的到分数
3.	var score = parseInt(prompt("请输入分数"));
4.	// 计算机遇到所有的表达式,都是先计算
5.	switch (true) {
6.		case score >= 90:
7.			console.log("优秀");
8.			break;
9.		case score >= 80:
10.			console.log("良好");
11.			break;
12.		case score >= 70:
13.			console.log("还行");
14.			break;
15.		default: 
16.			console.log("加油,超越自己");
17.	}
18.	console.log("查询结束");

总结:if语句是使用最广泛。
三元表达式当结果是二选一时,使用较简单
switch语句当值有多种可能性时。

二、循环语句

循环语句就是重复执行一段代码直到遇见某个指令时结束该循环。
直白解释:就是重复执行一段代码直到,条件为假时跳出循环。
for循环,do while,while 。

2.1 for循环
for循环,前测试循环语句。先判断是否满足循环条件,当满足条件,循环语句才会执行。
for语句不固定

1.	for (循环变量初始值; 循环条件; 步长) {
2.	     循环语句;
3.	}

for机理:for循环判断条件表达式,当条件表达式为真时执行循环语句,直到条件为假时跳出循环。结束循环后再执行for循环后面的语句。

在这里插入图片描述
for循环的过程:
for循环第一次执行时,首先执行一次语句1,然后执行语句2,判断是否满足条件,当结果为真,向内执行循环语句3;如果为假,直接跳出for循环,执行语句5。
如果能进入语句3,然后执行语句4之后。再执行语句2,判断是否满足条件,当条件为真是继续向内执行语句3;如果条件为假时,跳出for循环。执行语句5.……
当条件为真时,重复执行语句2,语句3,语句4.直到条件为假时,跳出for循环,执行语句5.

我们了解for循环的过程可以宏观看for循环,可以不用输出直接根据过程得出for循环的结果。

**for语句中,循环变量i是全局变量。**可以书写在for语句外面。一般循环变量i,j,k

1.	// i全局变量,可以书写在for语句外面
2.	var i = 3;
3.	for (; i < 8 ; i += 2) {
4.		console.log(i);
5.	}

循环条件可以书写成任何形式,结果一定是布尔值。

步长可以自加,可以自减

1.	// 4步长,可以自加可以自减
2.	for (var i = 15; i > 5; i -= 4) {
3.		console.log(i);
4.	}

循环语句有可能一次都不执行

1.	// 循环语句有可能一次都不执行
2.	var i = 3;
3.	for (console.log(++ i); i < 1 ; i ++) {
4.		console.log(i + "输出");
5.	}
6.	console.log(i + "结束");

在这里插入图片描述
循环语句可以一直做,条件一直为真,死循环

1.	for (var i = 1; i > 0 ; i ++) {
2.		console.log("输出");
3.	}
4.	console.log("结束");

for语句可以嵌套if语句

1.	for (var i = 3; i < 20 ; i += 4) {
2.		// 当i能够被5整除才输出i
3.		if (i % 5 === 0) {
4.			console.log(i + "能被5整除");
5.		}
6.	}
7.	console.log("for循环结束");

for循环可以嵌套for循环,循环变量不能相同

1.	for (var i = 1; i <= 3 ; i ++) {
2.		for (var j = 1; j <= 3 ; j ++) {
3.			console.log(i,j);
4.		}
5.		console.log(j);
6.	}
7.	console.log(i);
8.	console.log(j);

2.2 穷举思想
概念:我们经常想得到一组数据,有一些特定的要求,计算机没法自己帮我们输出这些数据。我们人为的需要编写一段程序,让计算机去帮我们实现程序。将所有的可能情况,一一的列举出来,然后我们人为限定判断条件,把符合条件的数据就给它输出,不满足的就跳过,继续验证下一个数据是否满足条件,直到把所有可能情况都验证一个遍。这个方法就叫做全举法,也叫穷举法。
外层:一一列举,for循环。
内层:进行判断,if语句。
案例1:在控制台输出一个数的所有约数。
约数概念:a %b ==0,那么a叫做b的倍数,b叫做a的约数或者因数。
一个数的约数,最小是1,最大是它本身。

1.	var num = parseInt(prompt("请输入数字"));
2.	for (var i = 1 ; i <= num ; i ++) {
3.		// 控制台只想要num约数
4.		// 判断i如果是num的约数,才输出i
5.		if (num % i === 0) {
6.			console.log(i);
7.		}
8.	}
9.	console.log(i + "结束");

案例2:找三位数里的“水仙花数”,在控制台输出。
条件1:三位数,得全部列举出来100,~999
条件2:水仙花数,每一个位数的三次方,他们的和,还等于原来的三位数通过判断找到符合条件的水仙花数

1.	// 声明变量
2.	var ge;
3.	var shi;
4.	var bai;
5.	// 求和
6.	var sum;
7.	for (var i = 100 ; i < 1000; i ++) {
8.		// 限制i = 134
9.		ge = i % 10;
10.		shi = parseInt(i / 10) % 10;
11.		bai = parseInt(i / 100);
12.		sum = Math.pow(ge, 3) + Math.pow(shi, 3) + Math.pow(bai, 3);
13.		if (sum === i) {
14.			console.log(i + "是水仙花数");
15.		}
16.	}

2.3 累加器和累乘器
累加器:我们不想输出所有的可能值,只想输出一个最后满足条件的总数。
1 累加器是变量,初始值0,累加器变量声明必须书写在for循环外面,防止被重置为0
2 累加器可以自加,有一个满足条件的结果就+1
3 最终结果在for循环外面输出

用户输入一个数字,输出该数字约数总个数。

1.	// 1的到用户输入的数字6
2.	var num = parseInt(prompt("请输入数字"));
3.	// 1声明累加器,必须书写在for循环外面,初始值0
4.	var sum = 0;
5.	// 穷举思想一一列举
6.	// 约数1-本身
7.	for (var i = 1; i <= num ; i ++) {
8.		
9.		// 找到一个满足条件的数据累加器就自加1
10.		// 2如果i是num的约数,累加器自加1
11.		if (num % i === 0) {
12.			sum ++;
13.		}
14.	}
15.	
16.	// 3累加器在for循环外面输出
17.	console.log(num + "约数总个数是" + sum);

累乘器:保存我们前面乘数的积。
阶乘:8!= 8 * 7 * 6 * 5 * 4 * 3 *2 *1
注意:
①累乘器的变量必须写在循环外面。
②初始值必须是1.
③输出也必须是在for循环完毕之后。

1.	// 的到用户输入的数字5
2.	var num = parseInt(prompt("请输入数字"));
3.	// 阶乘5! = 5*4*3*2*1
4.	// 注意1:累乘器声明书写在for循环外,初始值1
5.	var cheng = 1;
6.	for (var i = num ; i >= 1 ; i --) {
7.		// 注意2 累乘器使用赋值语句
8.		cheng *= i;
9.	}
10.	// 注意3结果在for循环外输出
11.	console.log(num + "阶乘是" + cheng);

用户输入一个数字,判断是不是质数。
质数:一个数除了1和他本身之外没有其他的约数
1不是质数;2是质数;7是质数

1.	// 的到用户输入的数字
2.	var num = parseInt(prompt("请输入数字"));
3.	// 判断该数是不是质数,该数约数总个数是2就是质数
4.	// 注意1声明必须书写在for外面
5.	var sum = 0;
6.	// 找约数一定是穷举思想
7.	// 一一列举1-本身之间所有的数
8.	for (var i = num ; i >= 1 ; i --) {
9.		// 如果i是num的约数,sum累加器自加1
10.		if (num % i === 0) {
11.			// i是num的约数
12.			sum ++;
13.		}
14.	}
15.	// 注意sum累加器输出也是在for循环结束
16.	if (sum === 2) {
17.		console.log(num + "是质数");
18.	}

⦁ 2.4do while
do while:后测试循环语句。直接执行循环语句,然后再进行出口判断,满足条件继续循环;如果条件为假跳出do while,执行后面其他的语句。
循环变量必须书写在循环语句外面。

1.	do {
2.	   循环语句;
3.	}while (条件表达式)
1.	// 后测试循环语句。先执行循环语句
2.	// 注意循环变量必须声明在循环语句外面
3.	var i = 3;
4.	do {
5.		console.log(i);
6.		i += 4;
7.	}while (i < 15)
8.	
9.	console.log("结束");
10.	/*
11.	i=3;直接就执行循环语句输出3;i+=4出口判断
12.	i=7;i<15真,继续执行循环语句输出7;i+=4
13.	i=11;i<15真,继续执行循环语句输出11;i+=4
14.	i=15;i<15假立即跳出do while语句
15.	执行后面其他的
16.	输出“结束”
17.	*/

注意:do while循环语句至少会执行一次。

1.	// do while循环语句至少会执行一次
2.	// 循环变量必须书写在外面
3.	var i = 3;
4.	do {
5.		console.log(++ i);
6.		i += 4;
7.	}while (i < 4);
8.	
9.	/*
10.	i=3;直接执行循环语句输出4;i+=4
11.	i=8;出口判断i<4假立即跳出do while语句
12.	*/

⦁ while
while语句:前测试循环语句。先判断条件,为真才执行循环语句
注意:循环变量必须书写在循环语句外面

1.	// 注意:循环变量必须书写在外面
2.	var i = 1;
3.	while (i < 10) {
4.		console.log(i);
5.		i += 4;
6.	}
7.	console.log("结束");

while语句都可以改为for语句

1.	// 改为for
2.	for (var i = 1; i < 10; i += 4 ) {
3.		console.log(i);
4.	}
5.	console.log("结束");

while语句中输出语句位置非常重要。

1.	// 注意:循环变量必须书写在外面
2.	var i = 1;
3.	while (i < 10) {
4.		i += 4;
5.		console.log(i);
6.	}
7.	console.log(i + "结束");
8.	/*
9.	i=1;i<10真;i+=4;输出5
10.	i=5;i<10真;i+=4;输出9
11.	i=9;i<10真;i+=4;输出13
12.	i=13;i<10假立即跳出
13.	输出13结束
14.	*/

⦁2.5 break
break: 我已经找到了一个满足条件的结果,不再继续往下执行

1.	// break:执行break立即跳出循环语句
2.	for (var i = 1 ; i < 200 ; i += 2) {
3.		// 能被3整除
4.		if (i % 3 === 0) {
5.			console.log(i);
6.			break;
7.		}
8.	}
9.	console.log("结束");
10.	/*
11.	i=1;i<200真;i%3===0假;i+=2
12.	i=3;i<200真;i%3===0真输出3;执行break立即跳出当前所在层的for语句
13.	输出”结束“
 
15.	
16.	*/

作用:在循环语句for,do while,while中遇见break,只能结束break所在层的循环不能控制外层循环。

1.	for (var i = 1; i <= 3 ; i ++ ) {
2.		for (var j = 1; j <= 3; j ++) {
3.			// 进行限制
4.			if (j == 2) {
5.				console.log(i,j);
6.				// break只能控制j不能控制i
7.				break;
8.			}
9.		}
10.	}
11.	console.log(j + "结束");

break控制外层循环:给外层循环添加标签,break引用

1.	waiceng: for (var i = 1; i <= 3 ; i ++ ) {
2.		for (var j = 1; j <= 3; j ++) {
3.			// 进行限制
4.			if (j == 2) {
5.				console.log(i,j);
6.				// break只能控制i不能控制j
7.				break waiceng;
8.			}
9.		}
10.	}
11.	console.log(i + "结束");
12.	console.log(j + "结束");
13.	/*
14.	vari=1;i<=3真;varj=1;j<=3真;j==2假;j++
15.					  j=2;j<=3真;j==2真;输出1,2执行break waiceng;跳出i循环
16.	输出1结束
17.	输出2结束
18.	*/

2.7continue
continue(继续):这个结果不是我想要的,赶快测试下一个。

1.	// continue结束该次循环,立即执行变量改变
2.	for (var i = 1; i < 10 ; i += 2) {
3.		if (i % 3 === 0) {
4.			continue;
5.		}
6.		console.log(i);
7.	}
8.	console.log(i + "结束");
9.	/*
10.	var i=1;i<10真;执行i=1这次循环i%3===0假输出1;
11.	   i=3;i<10真;执行i=3这次循环i%3===0真;执行continue,立即结束i=3这次循环
12.	   i=5;i<10真;执行i=5这次循环i%3===0假输出5;
13.	   i=7;i<10真;执行i=7这次循环i%3===0假输出7;
14.	   i=9;i<10真;执行i=9这次循环i%3===0真执行continue;立即结束该次循环
15.	   i=11;i<10假立即跳出i循环
16.	输出11结束
17.	*/

continue:遇见continue结束该次循环,立即进入下一次循环
continue也是只能结束所在层的这次循环,不能控制外层循环

1.	for (var i = 1; i <= 3; i ++) {
2.		for (var j = 1; j <= 3; j ++) {
3.			if (j == 2) {
4.				// continue只能控制j
5.				continue;
6.			}
7.			console.log(i,j);
8.		}
9.	}
10.	console.log(j);
11.	/*
12.	vari=1;i<=3真;varj=1;j<=3真;j==2假;输出1,1;j++
13.					  j=2;j<=3真;j==2真遇见continue结束该次循环;j++
14.					  j=3;j<=3真;j==2假;输出1,3;j++
15.					  j=4;j<=3假立即跳出j循环
16.	i=2;i<=3真;varj=1;j<=3真;j==2假;输出2,1;j++
17.					  j=2;j<=3真;j==2真遇见continue结束该次循环;j++
18.					  j=3;j<=3真;j==2假;输出2,3;j++
19.					  j=4;j<=3假立即跳出j循环
20.	i=3;i<=3真;varj=1;j<=3真;j==2假;输出3,1;j++
21.					  j=2;j<=3真;j==2真遇见continue结束该次循环;j++
22.					  j=3;j<=3真;j==2假;输出2,3;j++
23.					  j=4;j<=3假立即跳出j循环
24.	i=4;i<=3假立即跳出i循环
25.	输出4
26.	
27.	*/

continue想控制外层,也是通过标签绑定

1.	waiceng: for (var i = 1; i <= 3; i ++) {
2.		for (var j = 1; j <= 3; j ++) {
3.			if (j == 2) {
4.				// continue只能控制i
5.				continue waiceng;
6.			}
7.			console.log(i,j);
8.		}
9.	}
10.	console.log(i);

break 和 continue可以简化我们的计算过程(指的是计算机的计算过程)
案例:用户输入数字,判断该数是不是质数

1.	// 的到数字8
2.	var num = parseInt(prompt("请输入数字"));
3.	for (var i = 2; i < num ; i ++) {
4.		// 如果找到了一个约数循环就结束
5.		if (num % i === 0) {
6.			console.log(num + "不是质数");
7.			break;
8.		}
9.	}

案例:输出2-100以内所有的质数。

1.	// 一一列举2-100以内所有的数字
2.	waiceng: for (var i = 2; i <= 100 ; i ++) {
3.		// i=20,判断i是不是质数,是输出;不是赶快测试i++
4.		// 一旦找到i除了1和本身之外的一个约数,断定i不是质数
5.		for (var j = 2; j < i; j ++) {
6.			// 判断j是不是i的约数
7.			if (i % j === 0) {
8.				// 找到了一个约数,断定i不是我们想要的质数,赶快测试i++
9.				continue waiceng;
10.			}
11.		}
12.		console.log(i + "是质数");
13.	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值