c语言的大数相乘

   

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

# include<stdio.h>

# include<string.h>

# include<malloc.h>

void multiply(char* a,char* b,char* c)

{

    int i,j,ca,cb,* s;

    ca=strlen(a);

    cb=strlen(b);

    s=(int*)malloc(sizeof(int)*(ca+cb));

    for (i=0;i<ca+cb;i++)

        s[i]=0;

    for (i=0;i<ca;i++)

        for (j=0;j<cb;j++)

            s[i+j+1]+=(a[i]-'0')*(b[j]-'0');

    for (i=ca+cb-1;i>=0;i--)

        if (s[i]>=10)

        {

            s[i-1]+=s[i]/10;

            s[i]%=10;

        }

    i=0;

    while (s[i]==0)

        i++;

       for (j=0;i<ca+cb;i++,j++)

           c[j]=s[i]+'0';

    c[j]='\0';

    free(s);

}

猜你喜欢

转载自blog.csdn.net/qq_34886403/article/details/62236947