#include<stdio.h>
#include<string.h>
int lenth(int ans) //计算运算结果的长度
{
int i,la=0;
if(ans==0)
{
return 1;
}
if(ans<0)
{
la++;
ans=ans*(-1);
}
for(i=1;ans>0;i++)
{
ans/=10;
la++;
}
return la;
}
int main()
{
int n,i,j,sym=0,num1,num2,l,ans,l1,l2;
char a[20005],ch;
scanf("%d",&n);
getchar(); //处理掉n后面的回车
for(i=1;i<=n;i++)
{
j=0;
while(scanf("%c",&ch)&&ch!='\n')
//输入一行数据
{
a[j++]=ch;
}
a[j]='\0'; //最后一位补'\0'
num1=0;
num2=0;
l1=0;l2=0;
l=strlen(a);
if(a[0]=='a')
{
sym = 1;
}
else if(a[0]=='b')
{
sym = 2;
}
else if(a[0]=='c')
{
sym = 3;
}
else
{
for(j=l;j>=0;j--)
//将没有字母开头的那行数据整体向后移两个单位,方便后面处理
{
a[j+2]=a[j];
}
a[l+3]='\0';
}
for(j=2;a[j]!=' ';j++)
//处理第一个数,求长度l1(从a[2]开始)
{
num1=num1*10+(a[j]-'0');
l1++;
}
j++;
for(;a[j]!='\0';j++)
//处理第二个数,求长度l2
{
num2=num2*10+(a[j]-'0');
l2++;
}
if(sym==1)
{
ans=num1+num2;
printf("%d+%d=%d\n",num1,num2,ans);
}
if(sym==2)
{
ans=num1-num2;
printf("%d-%d=%d\n",num1,num2,ans);
}
if(sym==3)
{
ans=num1*num2;
printf("%d*%d=%d\n",num1,num2,ans);
}
printf("%d",lenth(ans)+l1+l2+2);
if(i<n) //最后一组数据最后不换行
{
printf("\n");
}
}
return 0;
}
所以究竟犯了什么问题啊!!