这个出现了link错误,我尝试了去改但还是没有找到是哪里的问题,希望有大佬帮忙看看,拜托拜托
#include<stdio.h>
extern char stack[100];//当做一个栈使用,存储运算符
extern int rank[100];
void ranks();//确定优先级
void push(char a,int *top);//输入栈中
char pop(int *top);//从栈输出
int input(char a[]);//接受输入数据
void postexpression(char a[],int n,char res[],int *top,int *k);//转化为后缀表达式
void operation(char res[],int *top,int *k);//后缀表达式求值
int mian()
{ int x=-1,*top=&x;
int y=0,*k=&y;
char a[50],res[50];
int n;
n=input(a);ranks();
postexpression(a,n,res,top,k);
operation(res,top,k);return 0;}
void ranks()
{rank['(']=0; rank['+']=1;
rank['-']=1;rank['*']=2;rank['/']=2;}
void push(char a,int *top){*top++;stack[*top]=a;}
char pop(int *top)
{char ch;ch=stack[*top];*top--;return ch;}
int input(char a[])
{int i=0;char c;printf("简易计算器\n");
printf("请输入表达式:");c=getchar();
while(c!='\n')
{ a[i++]=c; c=getchar();}return i;}
void postexpression(char a[],int n,char res[],int *top,int *k)
{int i=0;char x;for(i=0;i<n;i++)
{ if(a[i]>='0'&&a[i]<='9')
{ res[*k++]=a[i]; }
else if(a[i]=='(')
{ push(a[i],top); }
else if(a[i]==')')
{ x=pop(top); while(x!='(')
{ res[*k++]=x; x=pop(top); } }
else { res[*k++]='#';
while(*top>-1&&rank[a[i]<=rank[stack[*top]])
{res[*k++]=pop(top);} push(a[i],top); } while(*top>-1)
{res[*k++]=pop(top); }}}
void operation(char res[],int *top,int *k)
{ int i=0;int t[10],z=-1;while(i<*k)
{ if(res[i]>='0'&&res[i]<='9')
{ z++; t[z]=res[i]-48; i++; while(res[i]>='0'&&res[i]<='9')
{ t[z]=t[z-1]*10+t[z]-48; i++; } }
else if(res[i]=='#') {i++;}
else { switch(res[i])
{ case '+': t[z-1]=t[z]+t[z-1];z--;break;
case '-': t[z-1]=t[z-1]-t[z];z--;break;
case '*': t[z-1]=t[z]*t[z-1];z--;break;
case '/': t[z-1]=t[z-1]/t[z];z--;break; } i++; }}printf("运行结果为:%d\n",t[z]);}
参考GPT和自己的思路:
在你提供的代码中,有一个函数名称拼写错误,应该修改为"main",而不是"mian"。你需要在此处做出修正,并重新编译代码,看一下是否还有其他错误出现。如果还有其他错误请及时反馈。