C语言40阶乘各位分开,求c语言大数运算代码

精度计算--除法(C 的,跟C很类似)char big_compare (char* a, char* b, int la, int lb) //除法辅助函数{ int i; if (la!=lb) return la-lb;

for (i=0;i= la-lb 1 && ld >= lb{ int i,t,lr; char* r; memset(c,0,sizeof(char)*lc); //把c数组清成0 t = la-lb 1; lr = lb -1; r = d ld-lr; for (i=0;i0) { for (i=0;i=0) { s ; big_sub(r,b,lr,lb); if (!*r) {r ; lr--;} } c[lc-t] = s; //coutstrlen(b)) l=strlen(a) 2; elsel=strlen(b) 2;c=(char *) malloc(l*sizeof(char));i=strlen(a)-1;j=strlen(b)-1;k=0;up=0;while(i>=0||j>=0){if(i9) {up=1;z%=10;} else up=0;c[k ]=z '0';i--;j--;}if(up) c[k ]='1';i=0;c[k]=' ';for(k-=1;k>=0;k--)back[i ]=c[k];back[i]=' ';} 精度计算--减法语法sub(char s1[],chars2[],char t[]);参数: s1[]:被减数,用字符串表示,位数不限 s2[]:减数,用字符串表示,位数不限 t[]:结果,用字符串表示返回值:null注意: 默认s1>=s2,程序未处理负数情况需要 string。

h源程序: void sub(char s1[],chars2[],char t[]){int i,l2,l1,k;l2=strlen(s2);l1=strlen(s1);t[l1]=' ';l1--;for (i=l2-1;i>=0;i--,l1--){if (s1[l1]-s2[i]>=0) t[l1]=s1[l1]-s2[i] '0';else{t[l1]=10 s1[l1]-s2[i] '0';s1[l1-1]=s1[l1-1]-1;}}k=l1;while(s1[k]=0) {t[l1]=s1[l1];l1--;}loop:if (t[0]=='0') {l1=strlen(s1);for (i=0;i=10) {s[i]=k;add=k/10;flag=1;} else {s[i]=k;flag=0;add=0;}}if (flag) {l=i 1;s[i]=add;} else l=i;for (i=0;i=0;i--){for (j=blen-1;j>=0;j--) sum=sum res[i blen-j-1][j];result[k]=sum;k=k 1;sum=sum/10;}for (i=blen-2;i>=0;i--){for (j=0;j=0;i--) s[i]=result[k-1-i];s[k]=' ';while(1){if (strlen(s)!=strlen(a)&&s[0]=='0') strcpy(s,s 1);elsebreak;}}。

全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值