自己想的测试样例:
99*99
23*3
#include<stdio.h>
#include<string.h>
#define MAX 100000
char c[MAX];
char a[MAX];
char b[MAX];
int main()
{
int i,temp,key=0,index=0,c_length=0, a_length,b_length,length=0,flag=0;
gets(a);
gets(b);
a_length = strlen(a);
b_length = strlen(b);
if((a_length==1&&a[0]=='0')||(b_length==1&&b[0]=='0'))
{
key=1;
goto free;
}
for(i=0;i<MAX;i++)
{
c[i]='0';
}
while(b_length)
{
for(i=a_length-1;i>=0;i--)
{
temp=(a[i]-'0')*(b[b_length-1]-'0');
if(temp+c[index]-'0'>=10)
{
c[index+1]+=(temp+c[index]-'0')/10;
}
c[index] = (temp+c[index]-'0')%10+'0';
++index;
}
c_length=index;
++flag;
index=flag;
--b_length;
}
if(c[c_length]!='0')
{
printf("%c",c[c_length]);
}
for(i=c_length-1;i>=0;--i)
{
printf("%c",c[i]);
}
free:if(key)
{
printf("0");
}
return 0;
}