P1022 计算器的改良

题面哦

毒瘤模拟题。。我tm卡在奇怪的点上了。。

我读入的时候老是停不下来(其实就是我怕麻烦。。结果后来调程序更麻烦。。)

那那那就直接上代码了啊

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cmath>
 6 #include<queue>
 7 #include<stack>
 8 using namespace std;
 9 const int oo=0x3f3f3f3f;
10 
11 int z=1;
12 double zm,sz;
13 char zy,a;
14 
15 int Min(int a,int b){return a<b?a:b;}
16 int Max(int a,int b){return a>b?a:b;}
17 
18 int main(){
19     //freopen("a.in","r",stdin);
20     //freopen("a.out","w",stdout);
21     zy=getchar();
22     while((zy>'9'||zy<'0')&&zy!='-'&&(zy>'z'||zy<'a')) zy=getchar();
23     while(zy!='='){
24         z=1;
25         if(zy=='-') z=-1;
26         if(zy=='-'||zy=='+') zy=getchar();
27         int y=0;
28         while(zy>='0'&&zy<='9'){
29             y=(y<<1)+(y<<3)+zy-'0';
30             zy=getchar();
31         }
32         if(zy>='a'&&zy<='z'){
33             if(y==0) y=1;
34             zm+=y*z;
35             a=zy;
36             zy=getchar();
37         }
38         else{
39             sz+=y*z*-1;
40         }
41     }
42     zy=getchar();
43     while(zy!=EOF){
44         z=-1;
45         if(zy=='-') z=1;
46         if(zy=='-'||zy=='+') zy=getchar();
47         int y=0;
48         while(zy>='0'&&zy<='9'){
49             y=(y<<1)+(y<<3)+zy-'0';
50             zy=getchar();
51         }
52         if(zy>='a'&&zy<='z'){
53             zm+=y*z;
54             a=zy;
55             zy=getchar();
56             continue;
57         }
58         else{
59             sz+=y*z*-1;
60         }
61         if(y==0) zy=getchar();
62     }
63     //printf("%.lf,%.lf
",sz,zm);
64     if(sz==0||zm==0){
65         printf("%c=0.000
",a);
66         return 0;
67     }
68     printf("%c=%.3lf
",a,double(sz/zm));
69     return 0;
70 }
原文地址:https://www.cnblogs.com/hahaha2124652975/p/11485334.html