![]()
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 }