1.利用堆栈操作函数pop 和push,编写一个能对包含+,-,*,/的表达式进行求值的程
序。如:输入“2+3*4”,输出14。
2,编程序求某一数的所有分解数,如输入7,则输出:(要求输出不能重复)
7=6+1 7=4+1+1+1 7=5+2 7=3+3+1 7=2+2+2+1
7=5+1+1 7=3+2+2 7=2+2+1+1+1
7=4+3 7=3+2+1+1 7=2+1+1+1+1+1
7=4+2+1 7=3+1+1+1+1 7=1+1+1+1+1+1+1

 
										
					
	这个需要改一下才能用
#include<string.h>
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#define EOFILE '`'
typedef char SElemType;
#include "stack.h"
Status visit(SElemType * e)
{
  printf("%c", *e);
}
char OP[10]={'+','-','*','/','(',')','#'};
int precede[7][7]={
      1,1,2,2,2,1,1,
      1,1,2,2,2,1,1,
      1,1,1,1,2,1,1,
      1,1,1,1,2,1,1,
      2,2,2,2,2,3,0,
      1,1,1,1,0,1,1,
      2,2,2,2,2,0,3};
int In(char c,char *op)
{
  int i=0;
  while(i<7)
     if(c==op[i++])
       return 1;
  return 0;
}
char Precede(char op,char c)
{
  int pos_op;
  int pos_c;
  int i;
  for(i=0;i<7;i++)
    {
      if(op==OP[i]) pos_op=i;
      if(c==OP[i]) pos_c=i;
    }
  switch(precede[pos_op][pos_c])
    {
      case 1:  return '>';
      case 2:  return '<';
      case 3:  return '=';
    }
}
char Operate(int a,char theta,int b)
{
  switch(theta)
    {
      case '+':return a+b-'0';
      case '-':return a-b+'0';
      case '*':return (a-'0')*(b-'0')+'0';
      case '/':return (a-'0')/(b-'0')+'0';
    }
}
char EvaluateExpression()
{
  SqStack *OPND,*OPTR;
  char c,x,theta;
  char a,b;
  InitStack(&OPTR);  Push(OPTR,'#');
  InitStack(&OPND);
  c=getchar();
  while(c!='#'||GetTop(OPTR)!='#')
    {
      if(!In(c,OP))
 {Push(OPND,c);c=getchar();}
      else
 switch(Precede(GetTop(OPTR),c))
   {
     case '<':
       Push(OPTR,c);
       c=getchar();
       break;
     case '=':
       Pop(OPTR,&x);
       c=getchar();
       break;
     case '>':
       Pop(OPTR,&theta);
       Pop(OPND,&b);  Pop(OPND,&a);
       Push(OPND,Operate(a,theta,b));
       break;
   }
    }
  c=GetTop(OPND);
  DestroyStack(OPTR);
  DestroyStack(OPND);
  return c;
}
main()
{
  char i;
  printf("\n\n\n\nOnly within 0..9 evaluation,input a expression end with symbol #:\n");
  i=EvaluateExpression();
  printf("\nThis expression's result is:   ");
  printf("%d\n\n\n\n",i-'0');
  
}
