前缀表达式
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 }