大数的加法和乘
发布时间:2020-12-14 04:09:35 所属栏目:大数据 来源:网络整理
导读:用手工计算的方法即可 void mult(char *str1,char *str2,char *str3) { int s1=strlen(str1),s2=strlen(str2); memset(str3,'0',(s1+s2+1)*sizeof(str3[0])); reverse_str(str1); reverse_str(str2); int i,j,k,t,tmp; for(i=0;is1;i++) { for(j=0;js2;j++)
用手工计算的方法即可
void mult(char *str1,char *str2,char *str3) { int s1=strlen(str1),s2=strlen(str2); memset(str3,'0',(s1+s2+1)*sizeof(str3[0])); reverse_str(str1); reverse_str(str2); int i,j,k,t,tmp; for(i=0;i<s1;i++) { for(j=0;j<s2;j++) { tmp=(str1[i]-'0')*(str2[j]-'0'); str3[i+j] +=tmp%10; str3[i+j+1]+=tmp/10; } } for(k=0;k<s1+s2-1;k++) { if( (tmp=str3[k]-'0') > 9 ) { str3[k]=tmp%10+'0'; str3[k+1]+=tmp/10; } } if(str3[k] > '0') ++k; str3[k]=' '; reverse_str(str1); reverse_str(str2); reverse_str(str3); } void add(char *str1,char *str3) { int s1=strlen(str1),s2=strlen(str2),s3=max(s1,s2)+1; memset(str3,s3*sizeof(char)); reverse_str(str1); reverse_str(str2); int i,k=0,tmp; for(i=0,j=0;i<s1 && j<s2;i++,j++) { tmp=str1[i]-'0'+str2[j]-'0'; str3[k] += tmp%10; str3[k+1] += tmp/10; k++; } for(;i<s1;i++) { tmp=str1[i]-'0'; str3[k] += tmp%10; str3[k+1] += tmp/10; k++; } for(;j<s2;j++) { tmp=str2[j]-'0'; str3[k] += tmp%10; str3[k+1] += tmp/10; k++; } //处理字符串s3 for(i=0;i<s3;i++) { if( (tmp=str3[i]-'0')>9 ) { str3[i]=tmp%10+'0'; str3[i+1]+=tmp/10; } } if(str3[k] > '0') k++; str3[k]=' '; reverse_str(str1); reverse_str(str2); reverse_str(str3); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |