输入:
1
a 99 999
输出:
99+999=1098
11
代码:
#include<bits/stdc++.h>
int getdigit(int a)//得到数字位数用的函数
{
int gd;
for(gd=0;a!=0;gd++)
{
a-=a%10;
a/=10;
}
return gd;
}
using namespace std;
int main()
{
int TiShu,num1,num2,ans,tens;
int i,j;
char c,v;
cin>>TiShu;//读入有几道题
getchar();//防止下一个读取字符出问题
for(i=1;i<=TiShu;i++)
{
c=getchar();//读取一个字符
cin>>num1>>num2;//输入两个数字
getchar();//防止下一个读取字符出问题
if((c=='a'||c=='b')||c=='c')//判断是不是abc
{
cout<<num1;
switch(c)
{
case 'a':
cout<<"+";
ans=num1+num2;
break;
case 'b':
cout<<"-";
ans=num1-num2;
break;
case 'c':
cout<<"*";
ans=num1*num2;
break;
}
cout<<num2<<"="<<ans<<endl;
if(ans<0)
cout<<getdigit(num1)+getdigit(num2)+getdigit(ans)+3<<endl;//如果是答案是负数,位数+1
else
cout<<getdigit(num1)+getdigit(num2)+getdigit(ans)+2<<endl;
v=c;//如果出现不是abc的情况,v为代替字符
}
else
{
for(j=1,tens=1;j<=getdigit(num1);j++)
tens*=10;
num1+=int(c-'0')*tens;//将第一个数字还原
cout<<num1;
switch(v)
{
case 'a':
cout<<"+";
ans=num1+num2;
break;
case 'b':
cout<<"-";
ans=num1-num2;
break;
case 'c':
cout<<"*";
ans=num1*num2;
break;
}
cout<<num2<<"="<<ans<<endl;
if(ans<0)
cout<<getdigit(num1)+getdigit(num2)+getdigit(ans)+3<<endl;//如果是答案是负数,位数+1
else
cout<<getdigit(num1)+getdigit(num2)+getdigit(ans)+2<<endl;
}
}
return 0;
}