代码有点长而且啰嗦,恳请各位大佬给点意见。
#include<bits/stdc++.h>
using namespace std;
#define equal equaltion
int n;
char p;
string equal;
int main(){
scanf("%d\n",&n);
for(int i=1;i<=n;i++)
{
getline(cin,equal);
if(equal[0]>='a'&&equal[0]<='z')
{
p=equal[0];
int sa=0,sb=0,j=0;
while(equal[j+2]!=' ')
{
sa=sa*10+equal[j+2]-'0';
j++;
}
int d=0;
while(d+j+3<equal.size())
{
sb=sb*10+equal[d+j+3]-'0';
d++;
}
int h=0,t;
switch(equal[0])
{
case 'a':
cout<<sa<<"+"<<sb<<"="<<sa+sb<<endl;
t=sa+sb;
while(t)
{
h++;
t/=10;
}
cout<<d+j+h+2<<endl;
break;
case 'b':
cout<<sa<<"-"<<sb<<"="<<sa-sb<<endl;
t=sa-sb;
while(t)
{
h++;
t/=10;
}
if(sa-sb<0)
h++;
cout<<d+j+h+2<<endl;
break;
case 'c':
cout<<sa<<"*"<<sb<<"="<<sa*sb<<endl;
t=sa*sb;
while(t)
{
h++;
t/=10;
}
cout<<d+j+h+2<<endl;
break;
}
}
else
{
int sa=0,sb=0,j=0;
while(equal[j]!=' ')
{
sa=sa*10+equal[j]-'0';
j++;
}
int d=0;
while(d+j+1<equal.size())
{
sb=sb*10+equal[d+j+1]-'0';
d++;
}
int h=0,t;
switch(p)
{
case 'a':
cout<<sa<<"+"<<sb<<"="<<sa+sb<<endl;
t=sa+sb;
while(t)
{
h++;
t/=10;
}
cout<<d+j+h+2<<endl;
break;
case 'b':
cout<<sa<<"-"<<sb<<"="<<sa-sb<<endl;
t=sa-sb;
while(t)
{
h++;
t/=10;
}
if(sa-sb<0)
h++;
cout<<d+j+h+2<<endl;
break;
case 'c':
cout<<sa<<"*"<<sb<<"="<<sa*sb<<endl;
t=sa*sb;
while(t)
{
h++;
t/=10;
}
cout<<d+j+h+2<<endl;
break;
}
}
}
return 0;
}
球球了