前缀表达式

 

 1 #include<stdio.h>
 2 
 3 //函数声明 
 4 int Add(int x,int y); //
 5 int Subtract(int x,int y); //
 6 int Multiply(int x,int y);//
 7 int Divide(int x,int y); // 8 
 9 //主函数 
10 int main()
11 {
12     int i=0,j=0;
13     char pre_expr[8]; //用于存放前缀表达式字符串 
14     int x=0,y=0,result; //x,y: 用于记录运算对象1,2;result:用于记录运算结果 
15     int space_num=0; //用于在遍历前缀表达式的过程中记录找到的空格的个数 
16     
17     //输入前缀表达式字符串 
18     gets(pre_expr);
19     
20     //获得运算对象x和y 
21     while(pre_expr[++i]!=0) //遍历前缀表达式 
22     {
23         if(pre_expr[i]==' ') //找到空格 
24         {
25 
26             ++space_num; //记录当前找到的空格的个数 
27             if(space_num==1) //如果当前找到的空格的个数等于1 
28             {
29                 j=i++; //j指向当前找到的空格;i指向该空格后的第一个数字字符 
30                 while(pre_expr[++j]!=' '); //寻找下一个空格的位置 
31                 if((j-i)==1) //两空格之间有1个数字字符 
32                     x+=pre_expr[i]-'0';
33                 else if((j-i)==2) //两空格之间有2个数字字符 
34                     x+=(pre_expr[i]-'0')*10+(pre_expr[i+1]-'0');
35             }
36             else if(space_num==2) //如果当前找到的空格的个数等于2 
37             {
38                 j=i++; //j指向当前找到的空格;i指向该空格后的第一个数字字符 
39                 while(pre_expr[++j]!=0); //寻找下一个空格的位置 
40                 if((j-i)==1) //两空格之间有1个数字字符 
41                     y+=pre_expr[i]-'0';
42                 else if((j-i)==2) //两空格之间有2个数字字符 
43                     y+=(pre_expr[i]-'0')*10+(pre_expr[i+1]-'0');
44             }
45         }
46     }
47     
48     //根据运算符对运算对象做相应运算 
49     if(pre_expr[0]=='+')
50         result=Add(x,y);
51     else if(pre_expr[0]=='-')
52         result=Subtract(x,y);
53     else if(pre_expr[0]=='*')
54         result=Multiply(x,y);
55     else if(pre_expr[0]=='/')
56         result=Divide(x,y);
57     
58     //输出运算结果 
59     printf("%d\n",result);
60     
61     return 0;
62 }
63 
64 //
65 int Add(int x,int y)
66 {
67     return x+y;
68 }
69 
70 //
71 int Subtract(int x,int y)
72 {
73     return x-y;
74 }
75 
76 //
77 int Multiply(int x,int y)
78 {
79     return x*y;
80 }
81 
82 //
83 int Divide(int x,int y)
84 {
85     return x/y;
86 }

 

posted @ 2015-03-05 17:13  LeoFeng  阅读(954)  评论(0编辑  收藏  举报