主题:A+B problem II
#include<iostream>
#include<string>
using namespace std;
int main(void)
{
int n,i,length1,length2,k=0,temp,x,y;
scanf("%d",&n);
if (n<1 || n>20)
{
return -1;
}
i=1;
while(i<=n)
{
k=0;
char str1[1200]={'\0'},str2[1200]={'\0'},str3[1200]={'\0'};
scanf("%s %s",str1,str2);
length1=strlen(str1);
length2=strlen(str2);
while(length1>=1 && length2>=1)
{
if(str3[k]!='\0')
{
temp=str1[--length1]+str2[--length2]+str3[k]-3*'0';
if (temp>=10)
{
str3[k]=temp%10+'0';
str3[k+1]=temp/10+'0';
}
else
{
str3[k]=temp+'0';
}
}
else
{
temp=str1[--length1]+str2[--length2]-2*'0';
if (temp>=10)
{
str3[k]=temp%10+'0';
str3[k+1]=temp/10+'0';
}
else
{
str3[k]=temp+'0';
}
}
k++;
}
while(length1>=1)
{
if(str3[k]!='0')
{
temp=str1[--length1]+str3[k]-2*'0';
if (temp>=10)
{
str3[k]=temp%10+'0';
str3[k+1]=temp/10+'0';
}
else
{
str3[k]=temp+'0';
}
}
else
{
str3[k]=str1[--length1];
}
k++;
}
while(length2>=1)
{
if(str3[k]!='0')
{
temp=str2[--length2]+str3[k]-2*'0';
if (temp>=10)
{
str3[k]=temp%10+'0';
str3[k+1]=temp/10+'0';
}
else
{
str3[k]=temp+'0';
}
}
else
{
str3[k]=str2[--length2];
}
k++;
}
k=strlen(str3);
for(x=0,y=k-1;x<y;x++,y--)
{
temp=str3[x];
str3[x]=str3[y];
str3[y]=temp;
}
printf("case %d:\n%s+%s=%s\n",i,str1,str2,str3);
if (i!=n)
printf("\n");
i++;
}
return 0;
}
怎么这样写A+B problemII(http://acm.hdu.edu.cn/showproblem.php?pid=1002)放入ACM编译器中显示错误答案,但是我在vc++6.0是完全正确的,求解!
#include<string>
using namespace std;
int main(void)
{
int n,i,length1,length2,k=0,temp,x,y;
scanf("%d",&n);
if (n<1 || n>20)
{
return -1;
}
i=1;
while(i<=n)
{
k=0;
char str1[1200]={'\0'},str2[1200]={'\0'},str3[1200]={'\0'};
scanf("%s %s",str1,str2);
length1=strlen(str1);
length2=strlen(str2);
while(length1>=1 && length2>=1)
{
if(str3[k]!='\0')
{
temp=str1[--length1]+str2[--length2]+str3[k]-3*'0';
if (temp>=10)
{
str3[k]=temp%10+'0';
str3[k+1]=temp/10+'0';
}
else
{
str3[k]=temp+'0';
}
}
else
{
temp=str1[--length1]+str2[--length2]-2*'0';
if (temp>=10)
{
str3[k]=temp%10+'0';
str3[k+1]=temp/10+'0';
}
else
{
str3[k]=temp+'0';
}
}
k++;
}
while(length1>=1)
{
if(str3[k]!='0')
{
temp=str1[--length1]+str3[k]-2*'0';
if (temp>=10)
{
str3[k]=temp%10+'0';
str3[k+1]=temp/10+'0';
}
else
{
str3[k]=temp+'0';
}
}
else
{
str3[k]=str1[--length1];
}
k++;
}
while(length2>=1)
{
if(str3[k]!='0')
{
temp=str2[--length2]+str3[k]-2*'0';
if (temp>=10)
{
str3[k]=temp%10+'0';
str3[k+1]=temp/10+'0';
}
else
{
str3[k]=temp+'0';
}
}
else
{
str3[k]=str2[--length2];
}
k++;
}
k=strlen(str3);
for(x=0,y=k-1;x<y;x++,y--)
{
temp=str3[x];
str3[x]=str3[y];
str3[y]=temp;
}
printf("case %d:\n%s+%s=%s\n",i,str1,str2,str3);
if (i!=n)
printf("\n");
i++;
}
return 0;
}
怎么这样写A+B problemII(http://acm.hdu.edu.cn/showproblem.php?pid=1002)放入ACM编译器中显示错误答案,但是我在vc++6.0是完全正确的,求解!