check_stack.c
上传用户:janny_wxd
上传日期:2010-02-03
资源大小:261k
文件大小:1k
源码类别:

控制台编程

开发平台:

C/C++

  1. #include<stdio.h>
  2. #include<string.h>
  3. #define OPSETSIZE 7
  4. unsigned char Prior[7][7] = {     // 表3.1  算符间的优先关系
  5.      '>','>','<','<','<','>','>',
  6.   '>','>','<','<','<','>','>',
  7.   '>','>','>','>','<','>','>',
  8.   '>','>','>','>','<','>','>',
  9.   '<','<','<','<','<','=',' ',
  10.   '>','>','>','>',' ','>','>',
  11.   '<','<','<','<','<',' ','='
  12. };
  13. char OPSET[OPSETSIZE]={'+' , '-' , '*' , '/' ,'(' , ')' , '#'};
  14. int Operate(int a,unsigned char theta, int b) {
  15.    switch(theta) {
  16.       case '+': return a+b;
  17.       case '-': return a-b;
  18.       case '*': return a*b;
  19.       case '/':
  20.   {if(b==0){
  21.   printf("除数不能为0!n");
  22.   return 0;
  23.   }
  24. else return a/b;
  25.   }
  26.       default : return 0;
  27.    } 
  28. }
  29. /*Status In(char Test,char* TestOp) {
  30.    bool Find=false;
  31.    for (int i=0; i< OPSETSIZE; i++) {
  32.       if (Test == TestOp[i]) Find= true;
  33.    }
  34.    return Find;
  35. }
  36. */
  37. int ReturnOpOrd(char op,char* TestOp) {
  38.    int i;
  39.    for(i=0; i< OPSETSIZE; i++) {
  40.       if (op == TestOp[i]) return i;
  41.    }
  42.    return 0;
  43. }
  44. char precede(char Aop, char Bop) {
  45.    return Prior[ReturnOpOrd(Aop,OPSET)][ReturnOpOrd(Bop,OPSET)];
  46. }
  47. void main(){
  48. int a=3,b=4,c=0,result,d=43;
  49. char ch='*',ch4;
  50. char ch2='/';
  51. char ch3='+';
  52. result=Operate(a,d,c);
  53. ch4=precede(ch2,ch);
  54. printf("%d,%cn",result,ch4);
  55. }