📄 mwyy2.cpp
字号:
#include "stdio.h"
#include "string.h"
#include "conio.h"
#include "stdlib.h"
#define MAX 256
/*入栈*/
void pushstack(char s[],char x,int flag,int *top) /*flag表示入栈种类:1表示翻译入栈。0表示直接入栈*/
{
char k[20];
int m,i;
if(flag==1)
{
if(x=='A')
{
strcpy(k,"sae");
m=strlen(k);
for(i=0;i<m;i++)
{
if(*top>MAX-1)
{
printf("上溢!");
exit(0);
}
else
s[++(*top)]=k[m-1-i];
}
}
else if(x=='B')
{
strcpy(k,"tsaedsae");
m=strlen(k);
for(i=0;i<m;i++)
{
if(*top>MAX-1)
{
printf("上溢!");
exit(0);
}
else
s[++(*top)]=k[m-1-i];
}
}
else
s[++(*top)]=x;
}
else
s[++(*top)]=x;
}
/*字典*/
void charmap(char x)
{
switch(x)
{
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 'i': printf("恨"); break;
default : break;
}
}
void main (void)
{
char s1[MAX],s2[MAX],d[MAX];
int flag=0,i,t;
int top1=-1,top2=-1,front=-1,rear=-1;
printf("请输入魔王语言:\n");
scanf("%s",s2);
t=strlen(s2);
for(i=0;i<t;i++)
pushstack(s1,s2[t-1-i],0,&top1);
while(top1!=-1)
{
if(s1[top1]=='(')
{
t=s1[--top1];
d[++rear]=s1[top1--];
while(s1[top1]!=')')
{
d[++rear]=s1[top1--];
d[++rear]=t;
}
top1--; /*让‘)’不入栈*/
flag=0; /*初始计数标志,记录括号后面的字母的个数*/
}
pushstack(s2,s1[top1--],0,&top2); /*将括号外面的字母入栈*/
flag++;
}
while((flag--)!=0)
pushstack(s1,s2[top2--],1,&top1);
while(rear!=front)
pushstack(s1,d[++front],1,&top1); /*出队入栈*/
while(top2!=-1)
pushstack(s1,s2[top2--],1,&top1);
printf("魔王语言翻译成人的语言是:\n");
while(top1!=-1) /*最终栈s1中存着翻译好的字母*/
{
charmap(s1[top1--]);
/*printf("%c",s1[top1--]); */
}
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -