您的位置:首页 > 其它

大数加减

2015-07-14 17:02 204 查看
代码:
#include<iostream>
#include<stdio.h>
#include<string.h>
#define Len 3000//大数的长度
using namespace std;
int Input (char n[])//将大数读入的函数
{
char s[Len];
int i,l;

for(i=0; i<Len; 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=Len-1; i>0; i--)
if(n[i]!=0) break;
for(; i>=0; i--)
printf("%d",n[i]);
printf("\n");
}

void Add (char a[],char b[],char c[])//大数加法
{
int i=0;
for(i=0; i<Len; i++)
c[i]=a[i]+b[i];
for(i=0; i<Len; 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<Len; 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[Len],b[Len],c[Len];
Input(a);
Input(b);
Add(a,b,c);
Print(c);
Mul(a,b,c);
Print(c);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: