大数加法 大数乘法
发布时间:2020-12-14 01:50:37 所属栏目:大数据 来源:网络整理
导读:#includeiostream #includestdio.h #includestring.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 ) ret
#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 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,c);
Print(c);
getchar();
getchar();
return 0;
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |