c编程小问题(速度,雪地裸体跪求)

来源:百度知道 编辑:UC知道 时间:2024/06/08 03:45:23
如何用c语言编程实现12345678900000000000*12345678900000000000。
很明显这个乘法已经越界,如何分成小块进行编程实现呢???

char *smut(char *r, char *u)
{
unsigned int lr, lu, lp;
int i, j, c, h;
char *p;
lr = strlen(r) ;
lu = strlen(u) ;
p = (char *)malloc((unsigned int)(lr + lu + 1) * sizeof(char)) ;
for (i = 0; i < lr + lu; ++i)
p[i] = '0' ;
p[lr + lu] = '\0' ;

for (i = lr - 1; i >= 0; --i)
{
c = 0 ;
for (j = lu - 1; j >= 0; --j)
{
lp = i + j + 1 ;
h = (r[i] - '0') * (u[j] - '0') + p[lp] - '0' + c ;
c = h / 10 ;
h = h % 10 ;
p[lp] = h + '0' ;
}
if (c > 0)p[i + j + 1] = c + '0' ;
}

cdel0(p) ;
return p ;
}//end smut()
//去掉整数串表示前面多余的零,最后结果为空串时置为"0"
void cdel0(char *r)
{
unsigned int lr ;
int i = 0 ;
int j ;
lr = strlen(r);
while (r[i] == '0')