博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
四则运算
阅读量:5348 次
发布时间:2019-06-15

本文共 1848 字,大约阅读时间需要 6 分钟。

#include<stdio.h>

#include<stdlib.h>
#include<math.h>
#define ADD1 sizeof(kuohao)
#define ADD2 50
typedef struct kuohao{char a;struct kuohao *pre;}kuohao;
char *creat()
{
char *a;
a=(char*)malloc(ADD2*sizeof(char));
gets(a);
return a;
}
int judgekuohao(char *a)
{
kuohao *top,*tail,*t;
top=tail=(kuohao*)malloc(ADD1);
while(*a!='\0')
{
  if(*a=='(')
  {
   t=top;
   top=(kuohao*)malloc(ADD1);
   t->a='(';
   top->pre=t;
  }
  else if(*a==')')
  {
   if(top==tail)
      return -1;
   else
   {
    t=top;
    top=top->pre;
    free(t);
   }
  }
  a++;
}
if(top==tail)
  return 1;
else return -1;
}
char precede(char a,char b)
{
int i,j;
char compare[8][8]={' ','+','-','*','/','(',')','\0',
                       '+','>','>','<','<','<','>','>',
        '-','>','>','<','<','<','>','>',
        '*','>','>','>','>','<','>','>',
        '/','>','>','>','>','<','>','>',
        '(','<','<','<','<','<','=',' ',
        ')','>','>','>','>',' ','>','>',
        '\0','<','<','<','<','<',' ','='};
    for(i=0;i<8;i++)
       if(compare[0][i]==a)
       break;
    for(j=0;j<8;j++)
       if(compare[j][0]==b)
       break;
    return compare[j][i];
}
void run(char *a)
{
int b[50]={0},count;char c[50],t;
int i=0,j=0;char *d;c[0]='\0';
while(*a!='\0'||c[j]!='\0')
{
  count=0;
  if(*a<='9'&&*a>='0')
  {
   d=a;
   while(*d<='9'&&*d>='0')
   {
    d++;
    count++;
   }
   while(count>0)
   {
    b[i]+=(int)((*a-'0')*pow(10,count-1));
    count--;
    a++;
   }
   i++;
  }
  else
  {
   switch(precede(*a,c[j]))
   {
   case'<':
    j++;c[j]=*a;a++;break;
   case'=':
    j--;a++;break;
   case'>':
     t=c[j];
     j--;i--;
     if(t=='-')
     {
      b[i-1]=b[i-1]-b[i];
         b[i]=0;
     }
     else if(t=='+')
     {
      b[i-1]=b[i-1]+b[i];
         b[i]=0;
     }
     else if(t=='*')
     {
      b[i-1]=b[i-1]*b[i];
         b[i]=0;
     }
     else if(t=='/')
     {
      b[i-1]=b[i-1]/b[i];
         b[i]=0;
     }
     else break;
   }
  }
}
printf("%d\n",b[i-1]);
}
void main()
{
int i,n,s;
char *a[10],*t;
scanf("%d",&n);
for(i=0;i<=n;i++)
  a[i]=creat();
for(i=1;i<=n;i++)
{
  t=a[i];
  s=judgekuohao(t);
  if(s==-1)
  {
   printf("False\n");
   continue;
  }
  else
   run(a[i]);
}

转载于:https://www.cnblogs.com/mac54321/p/4370360.html

你可能感兴趣的文章
2018/12/18 JS会像Linux一样改变编程
查看>>
php环境搭建脚本
查看>>
FTP主动模式与被动模式说明
查看>>
php 编译常见错误
查看>>
MES架构
查看>>
【Python3 爬虫】15_Fiddler抓包分析
查看>>
高性能JavaScript-JS脚本加载与执行对性能的影响
查看>>
关于标签之间因为换行等问题造成的空白间距问题处理
查看>>
hdu 2767(tarjan)
查看>>
sklearn之分类模型混淆矩阵和分类报告
查看>>
MySQL各存储引擎
查看>>
项目--简单导出CSV文件
查看>>
Oracle session相关数据字典(一)
查看>>
织梦文章内容提取第一张或者多张图片输出
查看>>
C#用正则表达式 获取网页源代码标签的属性或值
查看>>
BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡(贪心)
查看>>
WCF(一) 简单的认知
查看>>
[MFC][DShow]简单例子
查看>>
降序排列
查看>>
十一、类型转换
查看>>