大整数乘法

来源:互联网 发布:网络计划图绘制方法 编辑:程序博客网 时间:2024/06/05 18:48
#define MAXLENGTH 1000#include <stdio.h>#include <string.h>void compute(char * a, char * b, char *c){    int i, j, m, n;    long sum, carry;    m = strlen(a) - 1;    n = strlen(b) - 1;    for (i = m; i >= 0; i--)        a[i] -= '0';    for (i = n; i >= 0; i--)        b[i] -= '0';    c[m + n + 2] = '/0';    carry = 0;    for (i = m + n; i >= 0; i--)    {        sum = carry;        if ((j = (i - m))<0)            j = 0;        for (; j <= i&& j <= n; j++)            sum += a[i - j]*b[j];        c[i + 1] = sum % 10 + '0'; /*算出保留的数字*/        carry = sum / 10;    }    if ((c[0] = carry + '0') == '0') /* if no carry*/        c[0] = '/040'; /* space */}int main(){    char a[MAXLENGTH], b[MAXLENGTH], c[MAXLENGTH * 2];    puts("Input multiplier");    gets_s(a);    puts("Input multiplier");    gets_s(b);    compute(a, b, c);    puts("Answer:");    puts(c);    getchar();    return 0;}

0 0