当前位置:首页 » 编程语言 » 高精度加法c语言

高精度加法c语言

发布时间: 2023-09-06 17:49:40

c语言编程 高精度加减法

等十分钟
在给你写
加法函数
好久没写程序了
本来以为十分钟能写好
。。。。。(修改:修复了个小bug)
void
plus(char
*a,
char
*b,
char
*c){
int
i,index_a,index_b,index_c,carry=0,ten='9'+1,temp_index_c;
index_a=strlen(a)-1;
//
index变量指向最末一个数字
index_b=strlen(b)-1;
index_c=index_a>index_b?
index_a:index_b;
temp_index_c=index_c;
if(index_a>=index_b){
for(i=index_b+1;i>=0;i--){
b[i+(index_a-index_b)]=b[i];
}
for(i=0;i<index_a-index_b;i++)
b[i]='0';
}
else{
for(i=index_a+1;i>=0;i--){
a[i+(index_b-index_a)]=a[i];
}
for(i=0;i<index_b-index_a;i++)
a[i]='0';
}
while(index_c>=0){
c[index_c]=a[index_c]+b[index_c]+carry-'0';
if(c[index_c]>=ten){
c[index_c]-=ten-'0';
carry=1;
}
else
carry=0;
index_c--;
}
if(carry==1){
for(i=temp_index_c;i>0;i--){
c[i+1]=c[i];
}
c[0]=1;
}
c[temp_index_c+1]=0;
}

② C语言的高精度算法与程序

。。
高精度加法:
#include <stdio.h>
main()
{ int a[240]={0},b[240]={0},c[241]={0};
int i,ka,kb,k;
char a1[240],b1[240];
gets(a1);ka=strlen(a1);
gets(b1);kb=strlen(b1);
if(ka>=kb) k=ka;
else k=kb;
for(i=0;i<ka;i++) a[i]=a1[ka-i-1]-'0';
for(i=0;i<kb;i++) b[i]=b1[kb-i-1]-'0';
for(i=0;i<k;i++)
{c[i]=a[i]+b[i]+c[i];<br> c[i+1]=c[i+1]+c[i]/10;<br> c[i]=c[i]%10;<br> }
if(c[k]) k++;
for(i=k-1;i>=0;i--) printf("%d",c[i]);
system("pause");
}

高精度减法。。
#include <stdio.h>
main()
{ int a[240]={0},b[240]={0};
int i,la,lb;
char a1[240],b1[240];
gets(a1);la=strlen(a1);
gets(b1);lb=strlen(b1);
for(i=0;i<la;i++) a[i]=a1[la-i-1]-'0';
for(i=0;i<lb;i++) b[i]=b1[lb-i-1]-'0';
if(la>lb)
{for(i=0;i<la;i++)<br> {if(a[i]<b[i])<br> {a[i+1]--; <br> a[i]+=10;<br> }
a[i]=a[i]-b[i];
}
while(!a[la-1])
{la--;<br> if(!la) {printf("0"); break;}
}
for(i=la-1;i>=0;i--) printf("%d",a[i]);
}
else
{for(i=0;i<lb;i++)<br> {if(b[i]<a[i])<br> {b[i+1]--; <br> b[i]+=10;<br> }
b[i]=b[i]-a[i];
}
while(!b[lb-1])
{lb--;<br> if(!lb) {printf("0"); break;}
}
printf("-");
for(i=lb-1;i>=0;i--) printf("%d",b[i]);
}
system("pause");
}

高精度乘法:
#include<stdio.h>
#include<string.h>
int a[2505],b[2505],x[5010]={0};
main()
{ int i,j,k,lena,lenb,t;
char temp[10010];
scanf("%s",temp);
lena=strlen(temp);
if(lena%4)
{ t=4-lena%4;
for(i=t+lena-1;i>=t;i--) temp[i]=temp[i-t];
temp[t+lena]='\0';
lena+=t;
for(i=0;i<t;i++) temp[i]='0';
}
for(i=0,j=1;i<lena;i+=4,j++)
a[j]=(temp[i]-'0')*1000+(temp[i+1]-'0')*100+(temp[i+2]-'0')*10+temp[i+3]-'0';
lena=j;
scanf("%s",temp);
lenb=strlen(temp);
if(lenb%4)
{
t=4-lenb%4;
for(i=t+lenb-1;i>=t;i--) temp[i]=temp[i-t];
temp[t+lenb]='\0';
lenb+=t;
for(i=0;i<t;i++) temp[i]='0';
}
for(i=0,j=1;i<lenb;i+=4,j++)
b[j]=(temp[i]-'0')*1000+(temp[i+1]-'0')*100+(temp[i+2]-'0')*10+temp[i+3]-'0';
lenb=j;
for(i=lena-1;i>0;i--)
for(j=lenb-1;j>0;j--)
{
t=i+j;
x[t]+=a[i]*b[j];
x[t-1]+=x[i+j]/10000;
x[t]=x[t]%10000;
}
while(!x[i]) i++;
printf("%d",x[i]);
i++; for(;i<lena+lenb-1;i++)
if(x[i]>1000) printf("%d",x[i]);
else
if(x[i]>100) printf("0%d",x[i]);
else
if(x[i]>10) printf("00%d",x[i]);
else printf("000%d",x[i]);
system("pause");
}

。。

③ 高精度加法的C语言程序

#include<cstdio>#include<cstdlib>#include<iostream>#include<cstring>usingnamespacestd;charsa[1000],sb[10000];inta[1000],b[1000],c[1000];intla,lb,lc;intmain(){scanf(%s%s,sa,sb);la=strlen(sa);lb=strlen(sb);memset(a,0,sizeof(a));memset(b,0,sizeof(b));for(inti=0;i<la;i++)a[la-i-1]=sa[i]-'0';for(inti=0;i<lb;i++)b[lb-i-1]=sb[i]-'0';lc=la>lb?la:lb;//if(la>lb)lc=la;elselc=lb;memset(c,0,sizeof(c));for(inti=0;i<lc;i++){c[i]=a[i]+b[i]+c[i];if(c[i]>=10){c[i+1]=1;c[i]-=10;}}if(c[lc]>0)lc++;for(inti=lc-1;i>=0;i--)printf(%d,c[i]);return0;}#include<stdio.h>#include<string.h>intmain(){chara[10001],b[10001];inta1[10001]={0},b1[10001]={0},s[20002]={0};intlena,lenb;inti,j,k=0,t;scanf(%s%s,&a,&b);lena=strlen(a);lenb=strlen(b);for(i=0;i<lena;i++)a1[i]=a[i]-48;for(j=0;j<lenb;j++)b1[j]=b[j]-48;while(i>=0&&j>=0){s[k]=a1[i]+b1[j];k++;i--;j--;}if(i>=0)while(i>=0){s[k]=a1[i];k++;i--;}elseif(j>=0)while(j>=0){s[k]=b1[j];k++;j--;}for(t=1;t<k;t++)if(s[t]>=10){s[t]%=10;s[t+1]++;}while(s[k]==0)k--;for(t=k;t>0;t--)printf(%d,s[t]);return0;}

热点内容
滑板鞋脚本视频 发布:2025-02-02 09:48:54 浏览:432
群晖怎么玩安卓模拟器 发布:2025-02-02 09:45:23 浏览:557
三星安卓12彩蛋怎么玩 发布:2025-02-02 09:44:39 浏览:743
电脑显示连接服务器错误 发布:2025-02-02 09:24:10 浏览:537
瑞芯微开发板编译 发布:2025-02-02 09:22:54 浏览:146
linux虚拟机用gcc编译时显示错误 发布:2025-02-02 09:14:01 浏览:237
java驼峰 发布:2025-02-02 09:13:26 浏览:652
魔兽脚本怎么用 发布:2025-02-02 09:10:28 浏览:538
linuxadobe 发布:2025-02-02 09:09:43 浏览:212
sql2000数据库连接 发布:2025-02-02 09:09:43 浏览:726