简单表达式的计算---用递归的方法

注意:把一个值赋给引用指针时,它必须是一个变量!!!

 1 #include<cstdio>
 2 #include<iostream>
 3 using namespace std;
 4 
 5 double statement(char* &p)
 6 {
 7     double a;
 8     a=*p-'0';
 9     p++;
10     while(*p=='*'||*p=='/')
11     {
12         if(*p=='/')
13         {
14             p++;
15             a/=*p-'0';         
16         }
17         else
18         {
19             p++;
20             a*=*p-'0';
21         }
22         p++;
23     }
24     return a;
25 }
26 
27 void expession(char* &p)
28 {
29     bool isMinux;//是否为减号
30     double value=0.0;
31     
32     if(*p=='-')
33     {
34         isMinux=true;
35         value=-statement(++p);
36     }
37     else if(*p=='+'){p++;value=*p-'0';p++;}
38     else {value=*p-'0';p++;}
39 
40     while(*p=='+'||*p=='-')
41     {
42         if(*p=='+')
43         {
44             value+=statement(++p);
45         }
46         else
47         {
48             value-=statement(++p);
49         }
50         p++;
51     }
52     if(*p=='\0')cout<<value;
53     else 
54     {
55         cout<<"式子不符合规范!"<<endl;
56     }
57 }
58 
59 int main()
60 {
61     char p[100];
62     cin>>p;
63     char *a=p;
64     expession(a);
65     cin>>p;
66 }

 

转载于:https://www.cnblogs.com/yihua/archive/2013/03/06/2947029.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值