大数加法 大数乘法

来源:互联网 发布:淘宝茶叶店铺 编辑:程序博客网 时间:2024/04/28 20:28
#include<iostream>#include<stdio.h>#include<string.h>#define MAXLEN 300//大数的长度using namespace std;int Input(char n[])//将大数读入的函数{    char s[MAXLEN];    int i, l;    for (i = 0; i < MAXLEN; i++)        n[i] = 0;    if (scanf("%s", s) < 1)         return -1;    l = strlen(s);    for (i = 0; i < l; i++) //将输入的大数逆置        n[i] = s[l - i - 1] - '0';}int Print(char n[]){    int i;    for (i = MAXLEN - 1; i > 0; i--)        if (n[i] != 0)             break;    for (; i >= 0; i--)        printf("%d", n[i]);    printf("\n");    return 0;}void Add(char a[], char b[], char c[])//大数加法{    int i = 0;    for (i = 0; i < MAXLEN; i++)        c[i] = a[i] + b[i];    for (i = 0; i < MAXLEN; i++) //处理进位    {        if (c[i] >= 10)        {            c[i + 1] += c[i] / 10;            c[i] = c[i] % 10;        }    }}void Mul(char a[], char b[], char c[])//大数乘法{    int i, j;    int alen = strlen(a), blen = strlen(b);    for (i = 0; i < MAXLEN; i++) c[i] = 0;    for (i = 0; i < alen; i++)        for (j = 0; j < blen; j++) //处理进位        {            c[i + j] += a[i] * b[j];            if (c[i + j] >= 10)            {                c[i + j + 1] += c[i + j] / 10;                c[i + j] %= 10;            }        }}int main(){    char a[MAXLEN], b[MAXLEN], c[MAXLEN];    Input(a);    Input(b);    Add(a, b, c);    Print(c);    Mul(a, b, c);    Print(c);    getchar();    getchar();    return 0;}
0 0
原创粉丝点击