希望有大佬能详细讲下题目中提到的问题
我知道我下面这份代码 本地全过 而洛谷全WA是由这个原因引起的 但我不太清楚为什么 和 怎么 改
#include<iostream>
#include<cstdio>
using namespace std;
int read()
{
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
return x*f;
}
int num;
int work1(int t) // 这个函数将t转换成整形输出
{
int k=0;
string s;
while(t)
{
k++;
s+=(t%10+'0');
t/=10;
}
for(int i=s.size()-1;i>=0;i--) printf("%c",s[i]);
return k;
}
int main()
{
int n=read(),x,y;
char pre;
for(int i=1;i<=n;i++)
{
char c=getchar();
x=read(),y=read();
num=2;
if(c=='a')
{
num+=work1(x);
printf("+");
num+=work1(y);
printf("=");
num+=work1(x+y);
printf("\n%d\n",num);
pre=c;
}
else if(c=='c')
{
num+=work1(x);
printf("*");
num+=work1(y);
printf("=");
num+=work1(x*y);
printf("\n%d\n",num);
pre=c;
}
else if(c=='b')
{
num+=work1(x);
printf("-");
num+=work1(y);
printf("=");
int m=x-y;
if(m<0)
{
num++;
printf("-");
m=-m;
}
num+=work1(m);
printf("\n%d\n",num);
pre=c;
}
else
{
int t=x,num2=0,p=1;
while(t) // 计算录的x有多少位
{
num2++;
t/=10;
}
for(int i=1;i<=num2;i++) p*=10;
x=x+(c-'0')*p;
if(pre=='a')
{
num+=work1(x);
printf("+");
num+=work1(y);
printf("=");
num+=work1(x+y);
printf("\n%d\n",num);
}
else if(pre=='c')
{
num+=work1(x);
printf("*");
num+=work1(y);
printf("=");
num+=work1(x*y);
printf("\n%d\n",num);
}
else if(pre=='b')
{
num+=work1(x);
printf("-");
num+=work1(y);
printf("=");
int m=x-y;
if(m<0)
{
num++;
printf("-");
m=-m;
}
num+=work1(m);
printf("\n%d\n",num);
}
}
}
return 0;
}
/*
1
a 64 46
275 125
c 11 99
b 46 64
46 64
c 11 99
11 99
*/
来个daloa救救我