加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数除法

发布时间:2020-12-14 04:08:56 所属栏目:大数据 来源:网络整理
导读:#include stdio.h #include string.h #define MAXSIZE 1025 void Div(char *str1,char *str2,char *str3) { ?int i1,i2,i,j,jj,tag,carry,cf,c[MAXSIZE]; ?int len1 = strlen(str1),len2 = strlen(str2),lend; ?char d[MAXSIZE]; ?memset(c,sizeof(c)); ?mem
#include <stdio.h> #include <string.h> #define MAXSIZE 1025 void Div(char *str1,char *str2,char *str3) { ?int i1,i2,i,j,jj,tag,carry,cf,c[MAXSIZE]; ?int len1 = strlen(str1),len2 = strlen(str2),lend; ?char d[MAXSIZE]; ?memset(c,sizeof(c)); ?memcpy(d,str1,len2); ?lend = len2; j = 0; ?for( i1=len2-1; i1 < len1; ++i1 ) ?{ ? if( lend < len2 ) ? { ?? d[lend] = str1[i1+1]; c[j] = 0; ?? ++j; ++lend; ? } ? else ? if( lend == len2 ) ? { ?? jj = 1; ?? for( i=0; i < lend; ++i ) ?? { ??? if( d[i] > str2[i] ) break; ??? else if( d[i] < str2[i] ) ??? { ???? jj = 0; break; ??? } ?? } ?? if( jj == 0 ) ?? { ??? d[lend] = str1[i1+1]; c[j] = 0; ??? ++j; ++lend; ??? continue; ?? } ? } ? if( jj==1 || lend > len2 ) ? { ?? cf = jj=0; ?? while( d[jj] <= '0' && jj < lend ) ++jj; ?? if( lend-jj > len2 ) cf = 1; ?? else ?? if( lend-jj < len2 ) cf = 0; ?? else ?? { ??? i2 = 0; cf = 1; ??? for( i=jj; i < lend; ++i ) ??? { ???? if( d[i] < str2[i2] ) ???? { ????? cf = 0; break; ???? } ???? else if( d[i] > str2[i2] ) ???? { ????? break; ???? } ???? ++i2; ??? } ?? }//else ?? while( cf ) ?? { ??? i2 = len2-1; cf = 0; ??? for( i=lend-1; i >= lend-len2; --i ) ??? { ???? d[i] = d[i]-str2[i2]+'0'; ???? if( d[i] < '0' ) ???? { ????? d[i] = d[i]+10; carry = 1; ????? --d[i-1]; ???? } ???? else carry = 0; ???? --i2; ??? } ??? ++c[j]; jj=0; ??? while( d[jj] <= '0' && jj < lend ) ++jj; ??? if( lend-jj > len2 ) cf = 1; ??? else ??? if( lend-jj < len2 ) cf = 0; ??? else ??? { ???? i2 = 0; cf = 1; ???? for( i=jj; i < lend; ++i ) ???? { ????? if( d[i] < str2[i2] ) ????? { ?????? cf = 0; break; ????? } ????? else if( d[i] > str2[i2] ) ????? { ?????? break; ????? } ????? ++i2; ???? } ??? }//else ?? }//while ?? jj = 0; ?? while( d[jj] <= '0' && jj < lend ) ++jj; ?? for( i=0;i < lend-jj; ++i ) d[i] = d[i+jj]; ?? d[i] = str1[i1+1]; lend = i+1; ?? ++j; ? }//else ?}//for ?i = tag = 0; ?while( c[i] == 0 ) ++i; ?for( ; i < j; ++i,++tag ) str3[tag] = c[i]+'0'; ?str3[tag] = ''; } int main() { ?char a[110],b[110],c[110]; ?scanf( "%s%s",a,b ); ?Div( a,b,c ); ?printf( "%sn",c ); ?return 0; }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读