逆波兰计算器 中缀转化后缀

逆波兰计算器 进阶版(可以直接计算中缀表达式,支持 小数,负数) 2020年 4-27号 ,我发表了这篇文章, 然后这篇文章的代码不支持 小数,负数,然后于今天 21点07分 我把这个问题解决了(不是从四月份开始解决的,是因为 之前上网课没时间弄,然后这个学期学数据结构,所以就搞一波,没有看网上的博客,然后全都是自己一个人解决的) 直接上代码! #include<iostream> #include<cstring> #include<math.h> #include<ctype.h>//isdigit()头文件 #in 阅读详情

一.中缀转化后缀

1.具体转换方式

①从左到右进行遍历

②运算数 直接输出.

③左括号直接压入堆栈(括号是最高优先级,无需比较)(入栈后优先级降到最低,确保其他符号正常入栈)

④右括号(意味着括号已结束)不断弹出栈顶运算符并输出直到遇到左括号(弹出但不输出)

⑤运算符将该运算符与栈顶运算符进行比较
如果优先级高于栈顶运算符则压入堆栈(该部分运算还不能进行),
如果优先级低于等于栈顶运算符则将栈顶运算符弹出并输出,然后比较新的栈顶运算符.
(低于弹出意味着前面部分可以运算,先输出的一定是高优先级运算符,等于弹出是因为同等优先级,从左到右运算)
直到优先级大于栈顶运算符或者栈空,再将该运算符入栈.

⑥如果对象处理完毕,则按顺序弹出并输出栈中所有运算符.

2.例子

中缀:1+(2-3)*4+10/5
后缀:1 2 3 - 4 * + 10 5 / +

3.代码实现

栈的基本操作

在这里插入代码片#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define INITSIZE  20
#define INCREMENT 10
#define MAXBUFFER 20
#define LEN  sizeof(ElemType)

typedef char ElemType;

typedef struct{
	ElemType *base;
	ElemType *top;
	int StackSize;
}SqStack;

//初始化 
void InitStack(SqStack *s)
{
	s -> base = (ElemType*)malloc(INITSIZE * LEN);
	if(!s -> base)
	{
		exit(0);
	}
	s -> top = s -> base;
	s -> StackSize = INITSIZE;
}

//压栈 
void Push(SqStack *s, ElemType c)
{
	if(s -> top - s -> base >= s -> StackSize)
	{
		s -> base = (ElemType*)realloc(s -> base, LEN * (s -> StackSize + INCREMENT));
		s -> top = s -> base + s -> StackSize;
		s -> StackSize += INCREMENT;
	}
	*s -> top++ = c;
}

//求栈长 
int StackLength(SqStack *s)
{
	return (s -> top - s -> base);
}

//出栈 
void Pop(SqStack *s, ElemType *c)
{
	if(StackLength(s))
	{
		*c = *--s -> top;
	}
}

  • 字符串实现
void Change(SqStack *s, ElemType str[])
{
	int i = 0;
	ElemType e;
	InitStack(s);
	while(str[i] != '\0')
	{
		while(isdigit(str[i])) //过滤数字字符 直接输出 直到下一位不是数字字符打印空格跳出循环
		{
			printf("%c", str[i++]);
			if(!isdigit(str[i]))
			{
				printf(" ");
			}
		}
		
		/*加减运算符优先级最低,如果栈顶元素为空则直接入栈,否则将栈中存储
		的运算符全部弹栈,如果遇到左括号则停止,将弹出的左括号从新压栈,因为左
		括号要和右括号匹配时弹出,这个后面单独讨论。弹出后将优先级低的运算符压入栈中*/ 
		if(str[i] == '+' || '-' == str[i])
		{
			if(!StackLength(s))
			{
				Push(s, str[i]);
			}
			else
			{
				do
				{
					Pop(s, &e);
					if('(' == e)
					{
						Push(s, e);
					}
					else
					{
						printf("%c ", e);
					}
				}while(StackLength(s) && '(' != e);
				Push(s, str[i]);
			}
		}
		
		/*当遇到右括号是,把括号里剩余的运算符弹出,直到匹配到左括号为止
		左括号只弹出不打印(右括号也不压栈)*/
		else if(')' == str[i])
		{
			Pop(s, &e);
			while('(' != e)
			{
				printf("%c ", e);
				Pop(s, &e);
			}
		}
		
		/*乘、除、左括号都是优先级高的,直接压栈*/
		else if('*' == str[i] || '/' == str[i] || '(' == str[i])
		{
			Push(s, str[i]);
		}
		
		else if('\0' == str[i])
		{
			break;
		}
		
		else
		{
			printf("\n输入格式错误!\n");
			return ;
		}
		i++;
	}
	
	//最后把栈中剩余的运算符依次弹栈打印 
	while(StackLength(s))
	{
		Pop(s, &e);
		printf("%c ", e);
	}
}
  • #来表示结束
scanf("%c", &c);
    	
    	while ('#' != c)
    	{
    		while(isdigit(c))
    		{
    			printf("%c", c);
    			scanf("%c", &c);
    			if(!isdigit(c))
    			{
    				printf(" ");
				}
			}
			
			if('+' == c || '-' == c)
			{
				if(!StackLength(&s))
				{
					Push(&s, c);
				}
				else
				{
					do
					{
						Pop(&s, &e);
						if('(' == e)
						{
							Push(&s, e); 
						}
						else
						{
							printf("%c ", e);
						}
					}while(StackLength(&s) && '(' != e);
					Push(&s, c);
				}
			}
			
			else if(')' == c)
			{
				Pop(&s, &e);
				while('(' != e)
				{
					printf("%c ", e);
					Pop(&s, &e);
				}
			}
			
			else if('*' == c || '/' == c || '(' == c)
			{
				Push(&s, c);
			}
		
			else if('#' == c)
			{
				break;
			}
			
			else
			{
				printf("\n输入错误!\n");
			}
			
			scanf("%c", &c);
	    }
	    
	    while(StackLength(&s))
			{
				Pop(&s, &e);
				printf("%c ", e);
			}
	    
	    return 0; 
	}

4.结果

①在这里插入图片描述
②
在这里插入图片描述

二.逆波兰计算器

将输入的后缀表达式输出计算结果

1.代码实现

用栈的链式存储结构

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

typedef double ElemType;

typedef struct StackNode{
	ElemType data;   //存放栈的数据 
	struct StackNode *next;
}StackNode, *LinkStackPtr;

typedef struct LinkStack{
	LinkStackPtr top;
	int count;
}LinkStack;
//入栈
void Push(LinkStack *s, ElemType e)
{
	LinkStackPtr p = (LinkStackPtr) malloc (sizeof(StackNode));
	p -> data = e;
	p -> next = s -> top;
	s -> top = p;
	s -> count++;
} 

//判断栈是否为空
int StackEmpty(LinkStack s)
{
	if(s.top == NULL)
	{
		printf("空栈");
		return 0;
	}
	return 1;
} 

//出栈
void Pop(LinkStack *s, ElemType *e)
{
	LinkStackPtr p; //存储要出栈的数据 
	if(StackEmpty(*s))
	{
		*e = s -> top -> data;
		p = s -> top;
		s -> top = s -> top -> next;
		free(p);
		s -> count--;
	}
}

关键部分

int main()
    {
    	LinkStack s;
    	InitLinkStack(&s);
    	char c;
    	double d, e;
    	char str[10];
    	int i = 0;
    	printf("请按输入逆波兰表达式输入待计算数据,数据与运算符之间用空格隔开,以#作为结束标志\n");
	    scanf("%c",&c);
	    while(c != '#')
	    {
	    	while(isdigit(c) || '.' == c) //isdigit(c)判断c是否为数字
	    	{
	    		str[i++] = c;
	    		str[i] = '\0';
	    		if(i >= 10)
	    		{
	    			printf("输入的数据过大\n");
	    			return -1;
				}
				scanf("%c", &c);
				if(' ' == c)
				{
					d = atof(str); //将字符串转换为double型数据 
					Push(&s, d);
					i = 0;
					break;
				}
			}
			
			switch(c)
			{
				case'+':
					{
						Pop(&s, &e);
						Pop(&s, &d);
						Push(&s, d + e);
						break; 
					}
				case'-':
					{
						Pop(&s, &e);
						Pop(&s, &d);
						Push(&s, d - e);
						break;
					}
				case'*':
					{
						Pop(&s, &e);
						Pop(&s, &d);
						Push(&s, d * e);
						break;
					}
				case'/':
					{
						Pop(&s, &e);
						Pop(&s, &d);
						if(0 == e)
						{
							printf("除数为0 错误!");
							return -1;
						}
						Push(&s, d / e);
						break;
					}
			}
			scanf("%c", &c);
		}
		Pop(&s, &d);
		printf("运算结果为:%f\n",d);
	    return 0;
	} 

2.计算结果

在这里插入图片描述

逆波兰式计算器 逆波兰式完整代码计算器,带注释可直接运行VS2013,测试数据"1.0+3/2-tan(45)/(1+1)", 立即下载

相关推荐

ADS 2024实战:手把手教你搞定CGH40010F的Doherty功放仿真与版图(附避坑指南)

本文详细介绍了使用ADS 2024进行CGH40010F Doherty功放从仿真到版图的全流程设计,涵盖器件建模、稳定性分析、负载牵引匹配和版图联合仿真等关键步骤。特别针对新手常见问题提供避坑指南,帮助工程师高效完成射频功放设计,提升5G基站和雷达系统的性能。

weixin_42528191的博客 221

逆波兰计算器(中缀表达式转换后缀表达式)

原理:从左到右遍历表达式的每个数字和符号,遇到是数字就进栈,遇到是符号,就将处于栈顶两个数字出栈,进行运算,运算结果进栈,—直到最终获得结果。 举例:9 3 1-3*+ 10 2/+ #include <iostream> #include <stack> #include <vector> #include <deque> using namespace std; char str[100][20]; int len = 0; //记录输入

m0_53110330的博客 847

通达信股本变迁文件(gbbq)解密方法

近年来A股市场跌宕起伏真特么精彩,本人愚钝,被整爆仓,损失惨重 痛定思痛,认为交易这种对纪律要求极高,且必须完全排除情绪影响的勾当,还是应该交给程序来干 数据哪里来呢?当然是拿来主义。。。问券商的交易软件要呗 到处查资料,得知通达信的权息文件数据齐全,不仅含有除权除息数据,还含有限售解禁、增发、可转债上市等股本变化数据 ——这对于某些对成交量变化敏感的交易模型是非常重要的

不甘碌碌老,结庐铸宝刀 2万+

完整版逆波兰计算器(中缀转后缀,多位数运算)的解析和代码

2.遇到符号做判断,当前的和栈顶(之后的和过去的)那个优先级更大,如果过去的(栈顶的)更大,那就把过去(栈顶)的加入数栈,再把当前的符号加到符号栈,如果当前的大就直接入符号栈。(虽然这里说明用的是栈,但是数栈既不需要peek,也不需要pop,只用往里面加,所以用Arraylist也是一样的)3如果遇到括号,左括号直接进符号栈,遇到右括号时,不停把符号栈的符号提取出来加到数栈里。原来:1((2+3)*4)-5,之后:1, 2, 3, +, 4, *, 5, -有两个栈,数栈和符号栈,1,遇到数字直接加,

weixin_74457859的博客 377

用Python玩转Milvus:从安装SDK到完成第一个向量搜索Demo

本文为Python开发者提供了一份详细的Milvus向量数据库实战指南。文章重点讲解了如何规避版本兼容性陷阱,正确部署Milvus服务端并安装匹配的Python SDK。通过一个电影推荐系统的完整案例,演示了从数据建模、集合创建、向量插入、索引构建到执行混合搜索的全流程,帮助开发者快速上手并完成第一个向量搜索Demo。

weixin_29239279的博客 192

Pattern Recognition 投稿过程记录,含Elsevier Latex模板使用

Pattern Recognition 投稿过程记录,含Elsevier Latex模板使用 最近在Pattern Recognition投出了一个文章,纯纯属于是第一次投稿,感觉自己写了一坨屎,事实是这确实也是一坨屎,现在是投了之后在等待一个拒稿的状态。 但是还是记录一下一些流程 1. 下载模板 在出版商Elsevier的栏目里有对于稿件的结构要求,也提供了Latex模板。同时,也给作者提供了Guides, 可以仔细阅读。下面这个连接咱们可以下载到Guides以及看到一些文章的要求。 https://ww

weixin_44153180的博客 3万+

逆波兰(后缀)表达式简易计算器,暂只支持整数

后缀表达式 中缀表达式转化后缀表达式 中缀表达式就是我们人类所熟知的表达式,但是计算机不好识别,所以要计算还是用后缀表达式 这个转换和计算方法都是别人设计的,我们拿来学习使用即可 代码 //逆波兰表达式(后缀) public class PolandNotation { public static void main(String[] args) { String expression = "1+((2+3)*4)-5"; List<String> list2 = parseSu

VanGotoBilibili的博客 1978

Response Instance 详解:在 ABAP OData Client Proxy 中读懂每一次响应

ABAP OData Client Proxy中的Response Instance是关键信息载体,封装了业务数据及调用上下文(如分页、delta link等)。响应实例在执行请求后自动生成,根据请求类型返回特定接口(如READ返回/IWBEP/IF_CP_RESPONSE_READ)。响应抽象与OData版本解耦,支持统一处理V2/V4服务。常见响应类型包括单实体读取、列表读取(支持分页和增量同步)、创建/更新/删除响应等。开发时可通过响应对象的安全类型方法获取数据,如get_business_data获

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 138

逆波兰计算器(后缀表达式和中缀转后缀两个版本的代码)

注意:这个逆波兰计算器是用栈(后缀表达式)实现的,功能比较简单。计算器的实现首先要了解 前缀表达式、中缀表达式和后缀表达式。关于这三种表达式请参考我之前的文章。请点击连接【前缀、中缀、后缀表达式链接】 中缀表达式转后缀表达式的逆波兰计算器代码在最下方,我们一步一步来,不捉急。 5.6 逆波兰计算器 我们完成一个逆波兰计算器,要求完成如下任务: 输入一个逆波兰表达式(后缀表达式),使用栈(Stack), 计算其结果。 支持小括号和多位数整数,因为这里我们主要讲的是数据结构,因此计算器进行简化,只支持.

当一个合格的软件工程师 2177

Android面试指南及参考答案

【摘要】LesPark招聘Android开发工程师,要求3年以上经验,负责客户端功能开发与优化。岗位需掌握Java、多线程、网络编程(TCP/UDP/HTTP)及性能调试工具。面试重点考察:1)核心技术如网络协议选择(TCP可靠消息/UDP实时音视频)、内存泄漏分析;2)业务能力如图片懒加载三级缓存设计、启动速度优化案例;3)高阶系统原理如插件化框架设计;4)行为问题应对策略。建议候选人准备并发编程、JVM差异等深度知识,并量化项目优化成果,尤其关注社交应用相关的图片处理、实时通信等场景题。

郑伟强dev的专栏 806

WPF 上位机可视化天花板:HandyControl 搭建 SCADA 系统

HandyControl 凭借「丰富的工业级控件、灵活的主题定制、优异的性能」,成为 WPF 开发 SCADA 系统的首选 UI 库。本文搭建的 SCADA 系统涵盖实时监控、设备控制、报警管理、趋势分析四大核心功能,通过 HandyControl 实现了工业级可视化效果,开发效率提升 60% 以上。控件开箱即用:无需自定义仪表盘、趋势图、指示灯等 SCADA 核心控件;可视化效果专业:工业风主题、动态颜色切换、清晰的状态呈现,契合工业场景需求;

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1126

逆波兰计算器与中缀表达式向后缀表达式的转化实例

在本篇博文中,博主通过运用栈这一数据结构首先实现中缀表达式到后缀表达式的转换,而后通过结果运用逆波兰计算器得出计算结果。 具体代码如下: #include #include #include using namespace std; typedef char ElemType; typedef enum{TRUE,FALSE} Status; #define STACK_INIT_S

罗小黑の窝 1059

Wsl/InstallDistro/Service/RegisterDistro/CreateVm/HCS/E_INVALIDARG

摘要:安装WSL2时遇到E_INVALIDARG错误(多核CPU问题),可通过创建.wslconfig配置文件解决。配置内容包括:渐进式内存回收、自动代理、模拟虚拟系统调用、限制内存为4GB和处理器核心数为4。需确保已启用虚拟机平台和Linux子系统功能。 (98字)

猿小白的博客 1048

Java实现中缀转化为后缀表达式(逆波兰表达式)并计算;中缀、后缀表达式计算器

实现思路 将一个普通的中缀表达式转换为逆波兰表达式的一般算法是: 首先需要分配2个栈,一个作为临时存储运算符的栈S1(含一个结束符号),一个作为存放结果(逆波兰式)的栈S2(空栈),S1栈可先放入优先级最低的运算符#,可指定其他字符,不一定非#不可。从中缀式的左端开始取字符,逐序进行如下步骤: (1)若取出的字符是数字,则分析出完整的数字(如:10、100,而非仅0-9的个位数字),该操作数直接送入S2栈。 (2) 如果是运算符,则与栈顶元素比较, 如果优先级高于栈顶运算符(包括左括号)优先级,则进S1栈;

博客 564

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

七、前缀、中缀、后缀表达式规则——逆波兰计算器分析与实现

一、前缀、中缀、后缀表达式规则       1.前缀表达式(波兰表达式)       前缀表达式又称波兰式,前缀表达式的运算符位于操作数之前       举例说明: (3+4)×5-6 对应的前缀表达式就是 - × + 3 4 5 6       **前缀表达式的计算机求

陈大大的博客 364

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

对栈的学习(前缀、中缀、后缀表达式)超详细!由计算器的实现哦

栈 栈的概念 1)栈的英文为(stack) 2)栈是一个先入后出(FILO-First In Last Out)的有序列表。 3)栈(stack)是限制线 性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另中一端为固定的一 端,称为栈底(Bottom)。 4)根据栈的走义可知,最先放入栈中元素在栈底,最后放入的元素在栈项,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除 栈的应用场景 1)子程序的调用:在跳往子程序前,

zhao_to的博客 587

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

计算器中的表达式 是如何 运算的?

文章目录计算器中的表达式 是如何 运算的?什么是 前缀表达式什么是中缀表达式什么是后缀表达式为啥需要前缀表达式,后缀表达式 ?如何将中缀表达式转化为 后缀表达式呢?后缀表达式如何计算的 ?[150. 逆波兰表达式求值](https://leetcode-cn.com/problems/evaluate-reverse-polish-notation/) 计算器中的表达式 是如何 运算的? 前缀表达式 中缀表达式 后缀表达式 这些基础概念 什么是 前缀表达式 前序表达式就是前缀表达式,不含括号的算术表达式

阿常呓语的专栏 3432

c++中高阶计算器的代码实现

c++高阶计算器实现实现原理算法思想算法了解什么是后缀表达式中缀表达式如何后缀表达式代码实现Calendar.h 头文件Calendar.cpp 主体部分代码实现main.cpp完整代码 实现原理 算法思想 算法了解 在在高阶计算器的代码实现中体现了逆波兰算法和中缀表达式转化为后缀表达式,在这个过程,很多人难以理解的是表达式的转化。首先我们应该先去了解对于我们人类来说,中缀表达式是十分好理解的,它对我们人类来说具有很强的可读性,但是对于机器来说就不是了,机器是看不懂中缀表达式的。但是后缀表达式对于机器来说

Aeagen01的博客 995

逆波兰式计算器 java,09 - 逆波兰计算器(示例代码)

1. 前缀表达式 (波兰表达式)前缀表达式的运算符位于操作数之前【举例说明】 (3+4)×5-6 对应的前缀表达式就是 - × + 3 4 5 6前缀表达式的计算机求值从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(栈顶元素 和 次顶元素),并将结果入栈;重复上述过程直到表达式最左端,最后运算得出的值即为表达式的结果【举例说明】针对上例的...

weixin_36179777的博客 431

C语言实现逆波兰计算器

一:大致思路: 1:将输入的中缀表达式转换为后缀表达式 2:将后缀表达式求值输出 二:规则 1:中缀表达式->后缀表达式 如果字符为数字,直接输出 如果字符为+或-,若栈为空或者栈顶为’(’,将字符压入栈中;若栈非空或者栈顶非’(’,将元素全部弹出并输出,再将字符压入栈中 * 如果字符为*或/,若栈为空或者栈顶为’(’,将字符压入栈中;若栈非空或者栈顶非’(’,判断与栈顶字符优先级,若等...

超人不会飞 2080

中缀转后缀表达式(代码实现) [数据结构][Java]

/编写一个测试方法: public static void main(String [ ] args) {//定义一个后缀表达式 //中缀表达式: (3 + 4) * 5 - 6 转化为后缀表达式: 3 4 + 5 * 6 - String suffix = "3 4 + 5 * 6 -";//这里是对我们的将后缀表达式放到ArrayList实例中的方法进行的一个测试 List < String > listString = getListString(suffix);

m0_57001006的博客 363

数据结构-逆波兰计算器以及中缀表达式转后缀表达式(Java实现)

1.逆波兰计算器 public class PolandNotation { public static void main(String[] args) { /* 我们完成一个逆波兰计算器,要求完成如下任务: 1)输入一个逆波兰表达式(后缀表达式),使用栈(Stack),计算其结果 2)支持小括号和多位数整数,因为这里我们主要讲的是数据结构,因此计算器进行简化,只支持对整数的计算。 3)思路分析 */

weixin_51951233的博客 193

Python重现数据结构--栈类的实现,以及计算器的应用

简介 近期看了学长的字节跳动面试,收益匪浅,特别是在其中对算法题的考查。因此,打算重新用Python实现几种数据结构,并且进行相关的应用。 栈 栈的定义,就不重复了。直接上代码 class Stack(object): def __init__(self,limit=10): self.stack = [] #存放元素 self.limit = limit #栈容量极限 def push(self,data): #进栈,将元素放在栈顶 #判断

Hanzoe的博客 324

中缀表达式、前缀表达式(波兰表达式)、后缀表达式(逆波兰表达式)算法分析与Java实现

在计算器中输入表达式,然后得出计算结果,是一个比较常见的过程,对于含有括号的运算表达式的运算顺序计算机需要自动识别,这里就涉及到表达式的转换。我们手写或者输入的都是中缀表达式,比如“1+(2-3)*45+41/(2*10)”,“1+(2-3)*45+41/2*10”。当然也可以支持其它函数表达式比如exp()等。 通常要转化为波兰表达式或者逆波兰表达式,方便计算机进行运算。也就是说第一步是中缀表...

To_be_thinking的博客 573

Java数据结构与算法--day04

一、栈 1. 栈的介绍 (1)栈的功能测试 1️⃣ 思路 2️⃣ 代码 package com.atguigu.stack; import java.awt.List; import java.util.Scanner; public class ArrayStackDemo { public static void main(String[] args) { //测试一下ArrayStack 是否正确 //先创建一个ArrayStack对象->表示栈 ArrayStack

weixin_56706590的博客 126

stack 中缀表达式求值

利用栈来进行表达式求值

曾几何时的博客 563
上一篇: 内存分配
下一篇: 树 二叉树 森林 相互转换
ZoeLandia
博客等级 码龄6年 734粉丝 183原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值