杭电1002题,求大神帮忙觅错啊
杭电1002题,求大神帮忙找错啊!
#include<iostream>
#include<string>
using namespace std;
int main()
{
int n,m,t,s,i,j,k,p;
char a[1005],b[1005],c[1005];
cin>>n;
for(p=1;p<=n;p++)
{
if(p!=1)
cout<<endl;
cin>>a>>b;
cout<<"Case "<<p<<":"<<endl;
cout<<a<<" + "<<b<<" = ";
m=strlen(a);
t=strlen(b);
if(m>t)
s=m;
else
s=t;
for(i=0;i<m;i++)
a[i]=a[i]-'0';
for(i=0;i<t;i++)
b[i]=b[i]-'0';
for(i=0;i<=s;i++)
c[i]=0;
i=m-1;j=t-1;k=s;
for(;(i>=0)&&(j>=0);k--)
{
if(a[i]+b[j]<=9)
c[k]+=a[i]+b[j]+'0';
else
{
c[k]=c[k]+(a[i]+b[j])%10+'0';
c[k-1]++;
}
i--;
j--;
}
while(i>=0)
{
if(c[k]+a[i]>9)
{c[k]=(c[k]+a[i])%10+'0';c[k-1]++;}
else
c[k]=c[k]+a[i]+'0';
k--;i--;
}
while(j>=0)
{
if(c[k]+b[j]>9)
{c[k]=(c[k]+b[j])%10+'0';c[k-1]++;}
else
c[k]='0'+c[k]+b[j];
k--;j--;
}
if(c[0]!=0)
cout<<"1";
for(i=1;i<=s;i++)
cout<<c[i];
cout<<endl;
}
return 0;
}
------解决方案--------------------
dev上随便输入一组数据:
5
1234354354656 45464576767676789548965689
结果是45464576767677:238:331:345
问题显然了吧,
你的程序是有bug的。。。
#include<iostream>
#include<string>
using namespace std;
int main()
{
int n,m,t,s,i,j,k,p;
char a[1005],b[1005],c[1005];
cin>>n;
for(p=1;p<=n;p++)
{
if(p!=1)
cout<<endl;
cin>>a>>b;
cout<<"Case "<<p<<":"<<endl;
cout<<a<<" + "<<b<<" = ";
m=strlen(a);
t=strlen(b);
if(m>t)
s=m;
else
s=t;
for(i=0;i<m;i++)
a[i]=a[i]-'0';
for(i=0;i<t;i++)
b[i]=b[i]-'0';
for(i=0;i<=s;i++)
c[i]=0;
i=m-1;j=t-1;k=s;
for(;(i>=0)&&(j>=0);k--)
{
if(a[i]+b[j]<=9)
c[k]+=a[i]+b[j]+'0';
else
{
c[k]=c[k]+(a[i]+b[j])%10+'0';
c[k-1]++;
}
i--;
j--;
}
while(i>=0)
{
if(c[k]+a[i]>9)
{c[k]=(c[k]+a[i])%10+'0';c[k-1]++;}
else
c[k]=c[k]+a[i]+'0';
k--;i--;
}
while(j>=0)
{
if(c[k]+b[j]>9)
{c[k]=(c[k]+b[j])%10+'0';c[k-1]++;}
else
c[k]='0'+c[k]+b[j];
k--;j--;
}
if(c[0]!=0)
cout<<"1";
for(i=1;i<=s;i++)
cout<<c[i];
cout<<endl;
}
return 0;
}
------解决方案--------------------
dev上随便输入一组数据:
5
1234354354656 45464576767676789548965689
结果是45464576767677:238:331:345
问题显然了吧,
你的程序是有bug的。。。