1、本题WA两次,第一次因为没考虑到其中一个为0的情况,消前导0时进入无限循环。
2、交后仍WA,第二次修改发现加了一句多余的话if(p【i】==0) break;去掉后就AC。
#include <stdio.h>
#include <string.h>int main(void)
{
char a[260]="",b[260]="";
int c[260]={0},d[260]={0},p[510]={0},lena=0,lenb=0,i,j;
while(scanf("%s%s",a,b)==2)
{
lena=strlen(a);
for(i=0;i<lena;i++)
c[i]=a[lena-1-i]-'0';
lenb=strlen(b);
for(i=0;i<lenb;i++)
d[i]=b[lenb-1-i]-'0';
for(i=0;i<lena;i++)
for(j=0;j<lenb;j++)
p[i+j]+=c[i]*d[j];
for(i=0;i<lena+lenb;i++)
{
p[i+1]+=p[i]/10;
p[i]=p[i]%10;
}
i=lena+lenb-1;
while(p[i]==0&&i>=0) i--;
if(i==-1)
printf("%d",0);
else
for(j=i;j>=0;j--)
printf("%d",p[j]);
printf("\n");
memset(a,'\0',sizeof(a));
memset(b,'\0',sizeof(b));
memset(c,0,sizeof(c));
memset(d,0,sizeof(d));
memset(p,0,sizeof(p));
}
return 0;
}