高精度四则运算 (函数)

本人整理并编写高精度四则运算,以函数形式供大家参考

考虑到看此文章者多是初学者,全部以 char 型数组编写

加法

void pplus(char s1[],char s2[]){//加法
	int a1[4005],a2[2005];
	memset(a1,0,sizeof(a1));
	memset(a2,0,sizeof(a2));
	int l=min(strlen(s1),strlen(s2));
	int l_max=max(strlen(s1),strlen(s2));
	for(int i=0;i=0;i--){
		if(a1[i]!=0||i==0) flag=true;
		if(flag) cout<

减法

bool Dayu(char s1[],char s2[]){//判断s1总值是否大于等于s2
	int a[2005],b[2005];
	if(strlen(s1)>=strlen(s2)) return true;
	else return false;
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	for(int i=0;ib[i]) return true;
		}
	}
	return true;
}

void mminus(char s1[],char s2[]){//减法
	int a1[2005],a2[2005];
	memset(a1,0,sizeof(a1));
	memset(a2,0,sizeof(a2));
	for(int i=0;i=s2
		for(int i=0;i<2000;i++){
			a1[i]=a1[i]-a2[i];
			if(a1[i]<0) {
				a1[i]+=10;
				a1[i+1]--;
			} 
		}
		bool flag=0;
		for(int i=strlen(s1);i>=0;i--){
			if(a1[i]!=0||i==0) flag=true;
			if(flag) cout<=0;i--){
			if(a2[i]!=0||i==0) flag=true;
			if(flag) cout<

乘法

void mul(char s1[],char s2[]){//乘法
	int a1[2005],a2[2005];
	int ans[5005];
	memset(a1,0,sizeof(a1));
	memset(a2,0,sizeof(a2));
	memset(ans,0,sizeof(ans));
	for(int i=0;i=10){
				ans[i+j+1]+=ans[i+j]/10;
				ans[i+j]%=10;
			}
			
		}
	}
	bool flag=0;
	for(int i=strlen(s1)+strlen(s2)+1;i>=0;i--){
		if(ans[i]!=0||i==0) flag=true;
		if(flag) cout<

除法 (初学者掌握大数除小数即可)

void div(char s1[],int s2){//大数除小数,结果向下取整
	int a[2005];
	int ans[2005];
	memset(a,0,sizeof(a));
	for(int i=0;i

主函数

int main(){
	cin>>str1>>str2;
	//mminus(str1,str2);
	//mul(str1,str2);
	//pplus(str1,str2);
	//div(str1,b);         自选
	return 0;
}

主要思想大致一样,都是模拟竖式运算。

你可能感兴趣的:(高精度四则运算 (函数))