您的位置:首页 > 其它

hdu--1002 大数相加 (连起来相加很容易,分开为啥错了?)

2011-06-03 18:37 302 查看
#include "stdio.h"
#include "string.h"
int main()
{

int lena,lenb,i,j,n,t,temp,k,num,count;
int c[1002]={0};
int a[1002]={0},b[1002]={0};
char a1[1002],b1[1002];
scanf("%d",&num);count=1;
while(num--)
{
scanf("%s %s",&a1,&b1);

lena=strlen(a1);
lenb=strlen(b1);
if(lena<lenb) k=lenb;
else k=lena;
for(i=0;i<lena;i++) a[i]=a1[lena-i-1]-'0';
for(i=0;i<lenb;i++) b[i]=b1[lenb-i-1]-'0';
for(i=0;i<k;i++)
{
c[i]=a[i]+b[i]+c[i];
c[i+1]=c[i+1]+c[i]/10;
c[i]=c[i]%10;
}
if(c[k]) k++;
printf("Case %d:/n",count++);
printf("%s + %s = ",a1,b1);
for(i=k-1;i>=0;i--) printf("%d",c[i]);
if(num>=1) printf("/n/n");
else printf("/n");
memset(c,0,sizeof(c));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));

/*
for(i=0;i<lena;i++) a[i]=a1[i]-'0';
for(i=0;i<lenb;i++) b[i]=b1[i]-'0';
i=lena-1;j=lenb-1;
t=0;temp=0;k=0;
while(i>=0&&j>=0)
{
temp=a[i]+b[j]+t;
c[k++]=temp%10;
t=temp/10;
i--;j--;
}
if(i>=0)
{
while(i>=0)
{
temp=a[i]+t;
c[k++]=temp%10;
t=temp/10;
i--;
}
if(t>0) c[k]=t;
else k--;
}
else
{
while(j>=0)
{
temp=a[j]+t;
c[k++]=temp%10;
t=temp/10;
j--;
}
if(t>0) c[k]=t;
else k--;
}

printf("Case %d:/n",count++);
printf("%s + %s = ",a1,b1);
for(i=k;i>=0;i--) printf("%d",c[i]);
if(num>=1) printf("/n/n");
else printf("/n");
memset(c,0,sizeof(c));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));*/
}
return 0;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c include