HDU ACM 1002 什么数据都想了 答案是对的 但是总是AC不了,总是WA,求教~
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1002请看下我的程序,我很想知道我的哪里出错了~谢谢了~~~~~我的程序:...
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1002
请看下我的程序,我很想知道我的哪里出错了~谢谢了~~~~~
我的程序:
#include<stdio.h>
#include<string.h>
void main()
{
int n,i,j,l,l2,a,k,d,m;
char c;
char s[100000]={0};
char sr[100000]={0};
char g[100000]={0};
char sum[100000]={0};
char b[100000]={0};
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{
scanf("%s%s",&s,&sr);
l=strlen(s);
l2=strlen(sr);
j=l2>l?l2:l;
j=j-1;
c='0';
memset(sum,0,sizeof(sum));
memset(b,0,sizeof(b));
if(l!=l2)
{
if(l2>l)
{ d=l2-l;
strcpy(g,s);
strcpy(s,sr);
strcpy(sr,g);
}
else d=l-l2;
for(;j>d-1;j--)
{
a=s[j]-'0'+sr[j-d]-'0'+c-'0';
if(a>=10)
{
sum[j]=a%10+'0';
c=1+'0';
if(j==d)
{ sum[d-1]=s[d-1]-'0'+1+'0';
if(d-1==0) break;
else
{
for(m=d-2;m>=0;m--)
{
if(sum[m+1]-'0'+1-'0'>=10)
{
sum[m]=(sum[m-1]-'0'+1-'0')%10;
c=1+'0';
}
else
sum[m]=s[m];
}
}
}
}
else
{ sum[j]=a+'0';
c='0';
}
if(j==d&&a<10)
{ for(k=0;k<=d-1;k++)
sum[k]=s[k];
}
}
}
else
{
l=l-1;
for(;l>=0;l--)
{
a=s[l]-'0'+sr[l]-'0'+c-'0';
if(a>=10)
{
sum[l]=a%10+'0';
c=1+'0';
if(l==0)
{
strcpy(b,"1");
for(k=0;k<strlen(s);k++)
{ b[k+1]=sum[k];}
strcpy(sum,b);
}
}
else
{ sum[l]=a+'0';
c='0';
}
}
}
printf("Case %d:\n%s + %s = %s\n",i+1,s,sr,sum);
printf("\n");
}
}
} 展开
请看下我的程序,我很想知道我的哪里出错了~谢谢了~~~~~
我的程序:
#include<stdio.h>
#include<string.h>
void main()
{
int n,i,j,l,l2,a,k,d,m;
char c;
char s[100000]={0};
char sr[100000]={0};
char g[100000]={0};
char sum[100000]={0};
char b[100000]={0};
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{
scanf("%s%s",&s,&sr);
l=strlen(s);
l2=strlen(sr);
j=l2>l?l2:l;
j=j-1;
c='0';
memset(sum,0,sizeof(sum));
memset(b,0,sizeof(b));
if(l!=l2)
{
if(l2>l)
{ d=l2-l;
strcpy(g,s);
strcpy(s,sr);
strcpy(sr,g);
}
else d=l-l2;
for(;j>d-1;j--)
{
a=s[j]-'0'+sr[j-d]-'0'+c-'0';
if(a>=10)
{
sum[j]=a%10+'0';
c=1+'0';
if(j==d)
{ sum[d-1]=s[d-1]-'0'+1+'0';
if(d-1==0) break;
else
{
for(m=d-2;m>=0;m--)
{
if(sum[m+1]-'0'+1-'0'>=10)
{
sum[m]=(sum[m-1]-'0'+1-'0')%10;
c=1+'0';
}
else
sum[m]=s[m];
}
}
}
}
else
{ sum[j]=a+'0';
c='0';
}
if(j==d&&a<10)
{ for(k=0;k<=d-1;k++)
sum[k]=s[k];
}
}
}
else
{
l=l-1;
for(;l>=0;l--)
{
a=s[l]-'0'+sr[l]-'0'+c-'0';
if(a>=10)
{
sum[l]=a%10+'0';
c=1+'0';
if(l==0)
{
strcpy(b,"1");
for(k=0;k<strlen(s);k++)
{ b[k+1]=sum[k];}
strcpy(sum,b);
}
}
else
{ sum[l]=a+'0';
c='0';
}
}
}
printf("Case %d:\n%s + %s = %s\n",i+1,s,sr,sum);
printf("\n");
}
}
} 展开
1个回答
展开全部
#include<stdio.h>
#include<string.h>
int main()
{
int n,i,j,l,l2,a,k,d,m;
char c;
char s[100000]={0};
char sr[100000]={0};
char g[100000]={0};
char s1[100000]={0};
char s2[100000]={0};
char sum[100000]={0};
char b[100000]={0};
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{
scanf("%s%s",&s,&sr);
strcpy(s1,s); // 存下来s1
strcpy(s2,sr); // 存下来s2
l=strlen(s);
l2=strlen(sr);
j=l2>l?l2:l;
j=j-1;
c='0';
memset(sum,0,sizeof(sum));
memset(b,0,sizeof(b));
if(l!=l2)
{
if(l2>l)
{
d=l2-l;
strcpy(g,s);
strcpy(s,sr);
strcpy(sr,g);
}
else d=l-l2;
for(;j>d-1;j--)
{
a=s[j]-'0'+sr[j-d]-'0'+c-'0';
if(a>=10)
{
sum[j]=a%10+'0';
c=1+'0';
if(j==d)
{
sum[d-1]=s[d-1]-'0'+1+'0';
if(d-1==0) break;
else
{
for(m=d-2;m>=0;m--)
{
if(sum[m+1]-'0'+1-'0'>=10)
{
sum[m]=(sum[m-1]-'0'+1-'0')%10;
c=1+'0';
}
else
sum[m]=s[m];
}
}
}
}
else
{
sum[j]=a+'0';
c='0';
}
if(j==d&&a<10)
{
for(k=0;k<=d-1;k++)
sum[k]=s[k];
}
}
}
else
{
l=l-1;
for(;l>=0;l--)
{
a=s[l]-'0'+sr[l]-'0'+c-'0';
if(a>=10)
{
sum[l]=a%10+'0';
c=1+'0';
if(l==0)
{
strcpy(b,"1");
for(k=0;k<strlen(s);k++)
{ b[k+1]=sum[k];}
strcpy(sum,b);
}
}
else
{
sum[l]=a+'0';
c='0';
}
}
}
printf("Case %d:\n%s + %s = %s\n",i+1,s1,s2,sum); // 注意s1和s2
if(i!=n-1) printf("\n"); // 注意最后一个case不输出空行
}
}
}
#include<string.h>
int main()
{
int n,i,j,l,l2,a,k,d,m;
char c;
char s[100000]={0};
char sr[100000]={0};
char g[100000]={0};
char s1[100000]={0};
char s2[100000]={0};
char sum[100000]={0};
char b[100000]={0};
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{
scanf("%s%s",&s,&sr);
strcpy(s1,s); // 存下来s1
strcpy(s2,sr); // 存下来s2
l=strlen(s);
l2=strlen(sr);
j=l2>l?l2:l;
j=j-1;
c='0';
memset(sum,0,sizeof(sum));
memset(b,0,sizeof(b));
if(l!=l2)
{
if(l2>l)
{
d=l2-l;
strcpy(g,s);
strcpy(s,sr);
strcpy(sr,g);
}
else d=l-l2;
for(;j>d-1;j--)
{
a=s[j]-'0'+sr[j-d]-'0'+c-'0';
if(a>=10)
{
sum[j]=a%10+'0';
c=1+'0';
if(j==d)
{
sum[d-1]=s[d-1]-'0'+1+'0';
if(d-1==0) break;
else
{
for(m=d-2;m>=0;m--)
{
if(sum[m+1]-'0'+1-'0'>=10)
{
sum[m]=(sum[m-1]-'0'+1-'0')%10;
c=1+'0';
}
else
sum[m]=s[m];
}
}
}
}
else
{
sum[j]=a+'0';
c='0';
}
if(j==d&&a<10)
{
for(k=0;k<=d-1;k++)
sum[k]=s[k];
}
}
}
else
{
l=l-1;
for(;l>=0;l--)
{
a=s[l]-'0'+sr[l]-'0'+c-'0';
if(a>=10)
{
sum[l]=a%10+'0';
c=1+'0';
if(l==0)
{
strcpy(b,"1");
for(k=0;k<strlen(s);k++)
{ b[k+1]=sum[k];}
strcpy(sum,b);
}
}
else
{
sum[l]=a+'0';
c='0';
}
}
}
printf("Case %d:\n%s + %s = %s\n",i+1,s1,s2,sum); // 注意s1和s2
if(i!=n-1) printf("\n"); // 注意最后一个case不输出空行
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询