全WA,不知道哪出问题

P1957 口算练习题

```cpp #include<bits/stdc++.h> using namespace std; long long n,x,y,s1,s2,s3,k1,k2,s4,s5,k3,s6,s7; string s; int main(){ cin>>n; getline(cin,s); for(int i=1;i<=n;i++) { getline(cin,s); if(s[0]=='a')s1=1; else if(s[0]=='b')s1=2; else if(s[0]=='c')s1=3; for(int i=0;i<s.size();i++) { if(s[i]>='0'&&s[i]<='9') { s2=s2*10+(s[i]-'0'); } else if(s[i]==' ') { x=s2; s4=x; s2=0; } } y=s2; s5=y; s2=0; if(x==0)k1++; for(;x>0;x=x/10)k1++; if(y==0)k2++; for(;y>0;y=y/10)k2++; if(s1==1) { s3=s4+s5; s6=s3; cout<<s4<<"+"<<s5<<"="<<s4+s5; s7+=2; } if(s1==2) { s3=s4-s5; if(s3<0) { s3=abs(s3); s7+=1; } s6=s3; cout<<s4<<"-"<<s5<<"="<<s4-s5; s7+=2; } if(s1==3) { s3=s4*s5; s6=s3; cout<<s4<<"*"<<s5<<"="<<s4*s5; s7+=2; } if(s3==0)k3++; for(;s6>0;s6=s6/10)k3++; cout<<endl<<s7+k1+k2+k3; cout<<endl; k1=k2=k3=s2=s3=s4=s5=s6=s7=0; } return 0; } ``` 可以试试这样写
by james2333 @ 2024-03-14 13:43:58


@[99wwww](/user/839309) 行数更少 ```cpp #include <bits/stdc++.h> using namespace std; int n,a,b,c,o,l; string s; int main(){ cin>>n;getline(cin,s); while(n--){ getline(cin,s); stringstream ss<<s; if('a'<=s[0]&&s[0]<='z'){ switch(s[0]){ case 'a':o=1;break; case 'b':o=2;break; case 'c':o=3;break; }char t;ss>>t; } ss>>a;ss>>b; if(o==1){ c=a+b;string p; p=to_string(a)+'+'+to_string(b)+'='+to_string(c); cout<<p<<'\n'<<p.size()<<'\n'; }else if(o==2){ c=a-b;string p; p=to_string(a)+'-'+to_string(b)+'='+to_string(c); cout<<p<<'\n'<<p.size()<<'\n'; }else if(o==3){ c=a*b;string p; p=to_string(a)+'*'+to_string(b)+'='+to_string(c); cout<<p<<'\n'<<p.size()<<'\n'; } } return 0; } ```
by mlemtion @ 2024-03-14 13:46:29


@[mlemtion](/user/946696) @[james2333](/user/363062) 屑屑
by 99wwww @ 2024-03-15 13:01:16


不要用 ```cpp getline(cin,s); 可以用先输入,如果不是a~c 再转成int
by cpp_xhq @ 2024-03-16 09:25:08


@[cpp_xhq](/user/1233382) 豪德
by 99wwww @ 2024-03-18 12:52:23


|