只在C-Free上运行过,其它的一概不知道。
#include "stdio.h"
#include "math.h"
#include "iostream"
main()
{
system("time/T");
printf("欢迎使用计算器,本计算器可识别运算法的优先级,暂时只能识别+-*/^=这6种算法,后续算法还在更新中\n");
while(1){
char a[1000];
static double shu[100];
static int fa[100],youxianji[100];
int i=0,sw=0,fw=0,zhuangtai=0,xsw=1,cd=0,shuchu=0,max=0,maxwei=0;
double s=0;
gets(a);
while(a[i]!='\0')
i++;
cd=i;
i=0;
while(i<=cd){
switch(a[i]){
case'0':if(zhuangtai==1){xsw++;}else s=s*10;break;
case'1':if(zhuangtai==1){s=s+pow(10,-xsw);xsw++;}else s=s*10+1;break;
case'2':if(zhuangtai==1){s=s+2*pow(10,-xsw);xsw++;}else s=s*10+2;break;
case'3':if(zhuangtai==1){s=s+3*pow(10,-xsw);xsw++;}else s=s*10+3;break;
case'4':if(zhuangtai==1){s=s+4*pow(10,-xsw);xsw++;}else s=s*10+4;break;
case'5':if(zhuangtai==1){s=s+5*pow(10,-xsw);xsw++;}else s=s*10+5;break;
case'6':if(zhuangtai==1){s=s+6*pow(10,-xsw);xsw++;}else s=s*10+6;break;
case'7':if(zhuangtai==1){s=s+7*pow(10,-xsw);xsw++;}else s=s*10+7;break;
case'8':if(zhuangtai==1){s=s+8*pow(10,-xsw);xsw++;}else s=s*10+8;break;
case'9':if(zhuangtai==1){s=s+9*pow(10,-xsw);xsw++;}else s=s*10+9;break;
case'.':zhuangtai=1;break;
case'+':shu[sw]=s;fa[fw]=1;youxianji[fw]=1;zhuangtai=0;xsw=1;sw++;fw++;s=0;break;
case'-':shu[sw]=s;fa[fw]=2;youxianji[fw]=1;zhuangtai=0;xsw=1;sw++;fw++;s=0;break;
case'*':shu[sw]=s;fa[fw]=3;youxianji[fw]=2;zhuangtai=0;xsw=1;sw++;fw++;s=0;break;
case'/':shu[sw]=s;fa[fw]=4;youxianji[fw]=2;zhuangtai=0;xsw=1;sw++;fw++;s=0;break;
case'^':shu[sw]=s;fa[fw]=5;youxianji[fw]=3;zhuangtai=0;xsw=1;sw++;fw++;s=0;break;
case'(':shu[sw]=s;fa[fw]=6;youxianji[fw]=5;zhuangtai=0;xsw=1;sw++;fw++;s=0;break;
case')':shu[sw]=s;fa[fw]=7;youxianji[fw]=4;zhuangtai=0;xsw=1;sw++;fw++;s=0;break;
case'=':shu[sw]=s;fa[fw]=0;youxianji[fw]=0;zhuangtai=0;xsw=1;sw=0;fw=0;s=0;break;
case'\0':break;
default:printf("请勿输入笨程序无法解读的字符!\n");shuchu=1;
}
i++;
}
while(shuchu==0)
{
max=0,maxwei=0;
for(fw=0;fw<=cd;fw++)
{
if (youxianji[fw]>=max)
{
max = youxianji[fw];
maxwei=fw;
}
}
sw=maxwei;
fw=maxwei;
if(fa[maxwei]==0){printf("%f\n",shu[0]);shuchu=1;}
if(fa[maxwei]==4&&shu[sw+1]==0){printf("WANGNING!:/0\n");shuchu=1;}
if(fa[maxwei]==1){shu[sw]=shu[sw]+shu[sw+1];for(fw=maxwei;fw<cd;fw++){shu[fw+1]=shu[fw+2];fa[fw]=fa[fw+1];youxianji[fw]=youxianji[fw+1];}}
if(fa[maxwei]==2){shu[sw]=shu[sw]-shu[sw+1];for(fw=maxwei;fw<cd;fw++){shu[fw+1]=shu[fw+2];fa[fw]=fa[fw+1];youxianji[fw]=youxianji[fw+1];}}
if(fa[maxwei]==3){shu[sw]=shu[sw]*shu[sw+1];for(fw=maxwei;fw<cd;fw++){shu[fw+1]=shu[fw+2];fa[fw]=fa[fw+1];youxianji[fw]=youxianji[fw+1];}}
if(fa[maxwei]==4&&shu[sw+1]!=0){shu[sw]=shu[sw]/shu[sw+1];for(fw=maxwei;fw<cd;fw++){shu[fw+1]=shu[fw+2];fa[fw]=fa[fw+1];youxianji[fw]=youxianji[fw+1];}}
if(fa[maxwei]==5){shu[sw]=pow(shu[sw],shu[sw+1]);for(fw=maxwei;fw<cd;fw++){shu[fw+1]=shu[fw+2];fa[fw]=fa[fw+1];youxianji[fw]=youxianji[fw+1];}}
}
}
}