简单赋值语句

来源:互联网 发布:linux 套接字文件 编辑:程序博客网 时间:2024/05/20 16:41
#include<stdio.h>  #include<stdlib.h>    #define MAX 100  void SET_Mul_Div(int i,int m); void SET_Add_Sub(int j,int m); void print();int m=0; int count=0; char tempvar='A'; char string[MAX];   //用于存放表达式 //用于更改计算后数组中的值void change(int e){int f=e+2;char ch=string[f];if(ch>='A'&&ch<='Z'){for(int l=0;l<m+10;l++){if(string[l]==ch)string[l]=tempvar;}}if(string[e]>='A'&&string[e]<='Z'){for(int i=0;i<m;i++){if(string[i]==string[e])string[i]=tempvar;}}}void SET_Mul_Div(int i,int m) //处理乘除运算 {       for(i++;i<=m-1;i++)    {           if(string[i]=='*'||string[i]=='/')        {              printf("(%c   %c   %c   %c)\n",string[i],string[i-1],string[i+1], tempvar);                change(i-1);string[i-1]=string[i]=string[i+1]=tempvar;              count--;                       tempvar=(char)(int)tempvar++;        }     }  }  void SET_Add_Sub(int j,int m) //处理加减运算{     j++;       for(;j<=m-1;j++)     {           if(string[j]=='+'||string[j]=='-')      {              printf("(%c  %c  %c  %c)\n",string[j],string[j-1],string[j+1],tempvar);change(j-1);string[j-1]=string[j]=string[j+1]=tempvar;             count--;               tempvar=(char)(int)tempvar++;         }    }  }  /*打印*/  void print()  {     int i,j,k;       for(i=0;i<=m-1;i++)//处理乘除运算   { if(string[i]=='*'||string[i]=='/')      {              printf("(%c  %c  %c  %c)\n",string[i],string[i-1],string[i+1],tempvar);    change(i-1);string[i-1]=string[i]=string[i+1]=tempvar;          count--;              tempvar=(char)(int)tempvar++;}}    //int j;    for(j=0;j<=m-1;j++)//处理加减运算    {          if(string[j]=='+'||string[j]=='-')         {             printf("(%c  %c  %c  %c)\n",string[j],string[j-1],string[j+1],tempvar);               change(j-1);string[j-1]=string[j]=string[j+1]=tempvar;  count--;               tempvar=(char)(int)tempvar++;       }     }    //int k;      for(k=0;k<=m-1;k++)  //处理赋值运算   {          if(string[k]=='=')       {                      tempvar=(char)(int)--tempvar;           printf("(%c  %c     %c)  \n",string[k],string[k+1], string[k-1],tempvar);           count--;      change(k+1);string[k-1]=tempvar;     }  } }int main(){     int p[MAX];         char ch;        int c=-1,q=0;              printf("请输入赋值语句:\n");           while((ch = getchar())!='\n')     {          string[m++]=ch;         if(ch=='='||ch=='+'||ch=='-'||ch=='*'||ch=='/')               count++;          else if(ch=='(')         {  p[++c]=m-1;         }          else if(ch==')')          {               q=m-1;              SET_Mul_Div(p[c],q);    //从左括号处理到又括号          SET_Add_Sub(p[c],q);                          tempvar=(char)(int)tempvar--;           string[p[c]]=string[m-1]=tempvar;            c--;              tempvar=(char)(int)tempvar++;         }   }       /********调用生成四元式的函数********/      print();       /*********判断是否成功**********/     if(count==0)          printf("Successful!\n");      else           printf("Wrong!");         printf("\n");         system("pause");  }   

1 0
原创粉丝点击