大数的乘法,通过数组,有异常,高手帮忙啊

大数的乘法,通过数组,有错误,高手帮忙啊~~~
void   cheng(int   *number1,int   *number2,int   *number,int   strlen1,int   strlen2,int   strlen)
{
                  /*number1和number2是两个需要乘法运算的数组,将结果存在number中,strlen1是number1的长度,strlen2是number2的长度,strlen是number的长度,并且strlen=strlen1+strlen2*/
int   *num_temp1=new   int[strlen]();       //这是开辟两个临时的空间把number1上的数存起来
int   *num_temp2=new   int[strlen]();       //同理    
                //将临时开辟的数组赋初值0,number   这个数组已经赋初值0了
for(int   i=0;i <strlen;i++)
{
num_temp1[i]=0;
}
for(i=0;i <strlen;i++)
{
num_temp2[i]=0;
}
//将number1和number2存到临时数组中去,是按右对齐的,
for(   i=0;i <strlen1;i++)
{
num_temp1[strlen-1-i]=number1[strlen1-1-i];
}
for(i=0;i <strlen2;i++)
{
num_temp2[strlen-1-i]=number2[strlen2-1-i];
}
int   temp;//这个变量的作用是最后计算一共有多少位并且从哪位开始输的
int   icounter=0;
for(int   j=0;j <strlen1;j++)
{
icounter=j;
for(i=0;i <strlen2;i++)
{
if((number[strlen-1-icounter]+num_temp1[strlen-1-i]*num_temp2[strlen-1-j])> =10)
{
temp=number[strlen-icounter];
number[strlen-2-icounter]=(number[strlen-1-icounter]+num_temp1[strlen-1-i]*num_temp2[strlen-1-j])/10;
}
number[strlen-icounter-1]=(number[strlen-icounter-1]+num_temp1[strlen-i-1]*num_temp2[strlen-1-j])%10;
icounter++;
}
}
int   flag=(temp+num_temp1[strlen-i]*num_temp2[strlen-j])> =10?0:1;
for(i=0+flag;i <strlen;i++)
{
cout < <number[i] < < "   ";
}
}        
高手们帮帮忙啊,我是真看不出来,应该是算法的问题,反正结果是一点都不对

------解决方案--------------------
用Python语言更简单
------解决方案--------------------
[code=C/C++][/code]
char *BigMul(char *p1,char *p2)
{

int ilen1=strlen(p1);
int ilen2=strlen(p2);
char *p=new char[ilen1+ilen2+1];
for (int i=0;i<ilen1+ilen2;i++)
{
p[i]=0x30;
}
p[ilen1+ilen2]=0;
int jinzhi=0,inextjinzhi=0;
for (int j=1;j<=ilen2;j++)
{
for (int m=1;m<=ilen1;m++)
{
jinzhi = inextjinzhi;
inextjinzhi=((p[ilen1+ilen2-j-m+1]-0x30)+(p2[ilen2-j]-0x30)*(p1[ilen1-m]-0x30)+jinzhi)/10;
p[ilen1+ilen2-j-m+1]=((p[ilen1+ilen2-j-m+1]-0x30)+(p2[ilen2-j]-0x30)*(p1[ilen1-m]-0x30)+jinzhi)%10+0x30;
if (m==ilen1 && jinzhi)
{
p[ilen1+ilen2-j-m]=inextjinzhi+0x30;
}
}
}
if (p[0]==0x30)
{
if (p[1]==0x30)
{
p[1]=0;
return p;
}
for (i=1;i<=ilen1+ilen2;i++)
{
p[i-1]=p[i];
}

}
return p;
}

这是我写的 你自己看一下吧