这题大数包括负数的情况……代码还可以再简洁的,但是现在没时间去搞这个了,以后用到再让它简单点吧
#include<stdio.h>
#include<string.h>
void main()
{
int la,lb,i,j;
char a[45],b[45];
int c[150];
while(scanf("%s%s",a,b)!=EOF)
{
if(a[0]=='0'||b[0]=='0') printf("0\n");
else
{
la=strlen(a);
lb=strlen(b);
if(a[0]=='-'&&b[0]!='-')
{
i=0;
while(i<la)
{
a[i]=a[i+1];
i++;
}
la--;
printf("-");
}
else if(b[0]=='-'&&a[0]!='-')
{
i=0;
while(i<lb)
{
b[i]=b[i+1];
i++;
}
lb--;
printf("-");
}
else if(b[0]=='-'&&a[0]=='-')
{
i=0;
while(i<lb)
{
b[i]=b[i+1];
i++;
}
i=0;
while(i<la)
{
a[i]=a[i+1];
i++;
}
la--;
lb--;
}
else {la+=0;lb+=0;}
memset(c,0,100*sizeof(int));
for(j=lb-1;j>=0;j--)
for(i=la-1;i>=0;i--)
{
c[la+lb-i-j-2]+=(a[i]-'0')*(b[j]-'0');
if(c[la+lb-i-j-2]>9)
{
c[la+lb-i-j-1]+=(c[la+lb-i-j-2])/10;
c[la+lb-i-j-2]=(c[la+lb-i-j-2])%10;
}
}
for(i=la+lb-1;i>=0;i--)
{
if(c[i]==0) continue;
else
{
for(;i>=0;i--)
printf("%d",c[i]);
}
}
printf("\n");
}
}
}