GodUseVPN @ 2023-07-25 16:04:59
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,sum=0,b,c,d,f;
cin>>n;
string x,y,a;
for(int i=1;i<=n;i++){
cin>>a;
if(a[0]=='a'){
f=1;
cin>>x>>y;
b=0;c=0;
sum=0;
sum+=x.size()+y.size()+3;
cout<<x<<"+"<<y<<"=";
for(int i=0;i<x.size();i++)b=b*10+int(x[i]-'0');
for(int i=0;i<y.size();i++)c=c*10+int(y[i]-'0');
cout<<b+c<<endl;
if(c<0)sum++;
if(b<0)sum++;
d=b+c;
if(d<0){
sum++;
}
while(d/10!=0){
sum++;
d/=10;
}
cout<<sum<<endl;
}else if(a[0]=='b'){
f=2;
cin>>x>>y;
b=0;c=0;
sum=0;
sum+=x.size()+y.size()+3;
cout<<x<<"-"<<y<<"=";
for(int i=0;i<x.size();i++)b=b*10+int(x[i]-'0');
for(int i=0;i<y.size();i++)c=c*10+int(y[i]-'0');
cout<<b-c<<endl;
if(c<0)sum++;
if(b<0)sum++;
d=b-c;
if(d<0){
sum++;
}
while(d/10!=0){
sum++;
d/=10;
}
cout<<sum<<endl;
}else if(a[0]=='c'){
f=3;
cin>>x>>y;
b=0;c=0;
sum=0;
sum+=x.size()+y.size()+3;
cout<<x<<"*"<<y<<"=";
for(int i=0;i<x.size();i++)b=b*10+int(x[i]-'0');
for(int i=0;i<y.size();i++)c=c*10+int(y[i]-'0');
cout<<b*c<<endl;
if(c<0)sum++;
if(b<0)sum++;
d=b*c;
if(d<0){
sum++;
}
while(d/10!=0){
sum++;
d/=10;
}
cout<<sum<<endl;
}else{
b=0;c=0;sum=0;
for(int i=0;i<a.size();i++)b=b*10+int(a[i]-'0');
cin>>y;
for(int i=0;i<y.size();i++)c=c*10+int(y[i]-'0');
cout<<b;
sum+=a.size()+y.size()+3;
if(f==1){
cout<<"+"<<y<<"=";
cout<<b+c<<endl;
if(c<0)sum++;
if(b<0)sum++;
d=b+c;
if(d<0){
sum++;
}
while(d/10!=0){
sum++;
d/=10;
}
cout<<sum<<endl;
}else if(f==2){
b=0;c=0;sum=0;
cout<<"-"<<y<<"=";
cout<<b-c<<endl;
if(c<0)sum++;
if(b<0)sum++;
d=b-c;
if(d<0){
sum++;
}
while(d/10!=0){
sum++;
d/=10;
}
cout<<sum<<endl;
}else if(f==3){
b=0;c=0;sum=0;
cout<<"*"<<y<<"=";
cout<<b*c<<endl;
if(c<0)sum++;
if(b<0)sum++;
d=b*c;
if(d<0){
sum++;
}
while(d/10!=0){
sum++;
d/=10;
}
cout<<sum<<endl;
}
}
}
}
by sxjsxj @ 2023-07-27 11:12:39
哇,代码真的长,改了好久,终于AC了·-·,可以给个关注嘛·-·
AC代码(精华48行):
#include<bits/stdc++.h>
using namespace std;
int changdu(int x)//增加一个运算数字长度的子程序,更方便一点
{
int ans=0;
if(x<=0) ans++;//这里是小于等于而不是小于是因为下面的循环改为判断d是否大于0,如果是小于的话sum会小1,也可以不用小于等于,但下面得while要改为do-while
while(x)
{
x/=10;
ans++;
}
return ans;
}
int main(){
int n,sum=0,b,c,d,f,x,y;
cin>>n;
string a;
while(n--){//用while会比for效率高
cin>>a;
if(a[0]>='a' && a[0]<='c'){//整合修改一下,源代码效率有点低
cin>>x>>y; //将类型从string改为int,第一个是字母,接下来两个输入就一定是数字
sum=0;
sum+=changdu(x)+changdu(y)+2;//这里应该是加2不是加3,算式内只要加运算符与等号
if(a[0]=='a')
d=x+y,f=1,cout<<x<<"+"<<y<<"="<<d<<endl;
if(a[0]=='b')
d=x-y,f=2,cout<<x<<"-"<<y<<"="<<d<<endl;
if(a[0]=='c')
d=x*y,f=3,cout<<x<<"*"<<y<<"="<<d<<endl;//这里也做了部分整合
cout<<sum+changdu(d)<<endl;
}
else
{
b=0;sum=0;
for(int i=0;i<a.size();i++)b=b*10+a[i]-'0';//不需要加int
cin>>x;//修改类型,与上同
cout<<b;
sum+=changdu(b)+changdu(x)+2;// 同上
if(f==1)
c=b+x,cout<<"+"<<x<<"="<<c<<endl;
else if(f==2)
c=b-x,cout<<"-"<<x<<"="<<c<<endl;
else if(f==3)
c=b*x,cout<<"*"<<x<<"="<<c<<endl;//又是一个小小的整合
cout<<sum+changdu(c)<<endl;
}
}
}
by GodUseVPN @ 2023-08-01 16:14:07
@sxjsxj 栓Q,已关注;