📄 2.cpp
字号:
/* Note:Your choice is C IDE */
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define length 11
#define STACK_INIT_SIZE 31
#define OK 1
#define ERROR 0
#define OVERFLOW 0
#define STACKINCREMENT 10
typedef struct SqStack{
char *base;
char *top;
int stacksize;
}SqStack;
int InitStack(SqStack &S){
S.base = (char *)malloc(STACK_INIT_SIZE * sizeof(char));
if(!S.base) exit (OVERFLOW);
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
return OK;
}
int push(SqStack &S,char e){
if (S.top - S.base>=S.stacksize){
S.base = (char *) realloc (S.base,(S.stacksize + STACKINCREMENT) * sizeof (char));
if (!S.base) return OVERFLOW;
S.top = S.base + S.stacksize;
S.stacksize += STACKINCREMENT;
}
*S.top++ = e;
return OK;
}//push
int pop(SqStack &S,char &e) {
if (S.top == S.base) return ERROR;
e = * --S.top;
return OK;
}//Pop
main()// ?aêí?§1íó???
{
char *p,t,y;
char str[length];
printf("请输入魔王语言?");
gets(str);
p=str;
SqStack s1,s2;
InitStack(s1);
while(*p!='\n')
{
switch(*p)
{
case'A':{
t='s';
push(s1,t);
t='a';
push(s1,t);
t='e';
push(s1,t);
} break;
case'B':{
t='t';
push(s1,t);
t='s';
push(s1,t);
t='a';
push(s1,t);
t='e';
push(s1,t);
t='d';
push(s1,t);
t='s';
push(s1,t);
t='a';
push(s1,t);
t='e';
push(s1,t);
} break;
case'(':{
char *q,x;
q=p;
while(q!=")")
{
q++;
}
x=*(++p);
++p;
while(p!=q)
{
push(s1,x);
push(s1,*p);
p++;
}
push(s1,x);
p=++q;
} break;
default:push(s1,*p); break;
p++;
}
}
InitStack(s2);
while(s1.top!=s1.base)
{
pop(s1,y);
push(s2,y);
}
while(s2.top!=s2.base)
{
pop(s2,y);
switch(y)
{
case't':printf("天"); break;
case'd':printf("地"); break;
case's':printf("上"); break;
case'a':printf("一只"); break;
case'e':printf("鹅"); break;
case'z':printf("追"); break;
case'g':printf("赶"); break;
case'x':printf("下"); break;
case'n':printf("蛋"); break;
case'h':printf("恨"); break;
}
}
return OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -