C++高精度(比如100位的两个数) 加法 减法 乘法

加法
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 using namespace std;
 5 int main(){
 6     char a[105],b[105];
 7     int c[105]={0},d[105]={0},t1,t2;
 8     int z[105]={0};
 9     scanf("%s",&a);
10     scanf("%s",&b);
11     t1=strlen(a);
12     t2=strlen(b);
13     for(int i=0;i<t1;i++) c[i]=a[t1-i-1]-'0';
14     for(int i=0;i<t2;i++) d[i]=b[t2-i-1]-'0';
15     int t=max(t1,t2);
16     int jinwei=0;
17     for(int i=0;i<t;i++){
18         z[i]=c[i]+d[i]+jinwei;
19         if(z[i]>=10){
20             z[i]=z[i]-10;
21             jinwei=1;
22         }
23         else{
24             jinwei=0;
25         }
26     }
27     if(jinwei==1){
28         printf("1");
29     }
30     for(int i=t-1;i>=0;i--){
31         cout<<z[i];
32     }
33     return 0;
34 }

 减法:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char a[105],b[105];
int c[105],d[105],k[105];
int main(){
	cin>>a>>b;
	int t1,t2;
	t1=strlen(a);
	t2=strlen(b);
	if(t1<t2 || (t1==t2)&&strcmp(a,b)<0){
		cout<<"-";
		swap(a,b);
		swap(t1,t2);
	}
	for(int i=0;i<t1;i++){
		c[i]=a[t1-1-i]-'0';
	}
	for(int i=0;i<t2;i++){
		d[i]=b[t2-1-i]-'0';
	}
	int t=max(t1,t2);
	for(int i=0;i<t;i++){
		k[i]=c[i]-d[i];
		if(k[i]<0){
			k[i]+=10;
			c[i+1]-=1; 
		}
	}
	int z=t-1;
	while(k[z]==0 && z>0){
		z--;
	}
	for(int i=z;i>=0;i--){
		cout<<k[i];
	}
}

  乘法

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 char a1[50001],b1[50001];
 5 int a[50001],b[50001],i,x,len,j,c[50001];
 6 int main ()
 7 {
 8     cin >>a1 >>b1;//读入两个数
 9     a[0]=strlen(a1);b[0]=strlen(b1);//计算长度
 
10     for (i=1;i<=a[0];++i)a[i]=a1[a[0]-i]-'0';//将字符串转换成数字
11     for (i=1;i<=b[0];++i)b[i]=b1[b[0]-i]-'0';
12     for (i=1;i<=a[0];++i)for (j=1;j<=b[0];++j)c[i+j-1]+=a[i]*b[j];//按乘法
13     len=a[0]+b[0];                                       //原理进行高精乘
14     for (i=1;i<len;++i)if (c[i]>9){c[i+1]+=c[i]/10;c[i]%=10;}//进位
15     while (c[len]==0&&len>1)len--;//判断位数
16     for (i=len;i>=1;--i)cout <<c[i];//输出
17     return 0;
18 }

 

posted @ 2020-07-03 21:23  慕舲-不再使用  阅读(530)  评论(0编辑  收藏  举报