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

大数的加法和乘

发布时间: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);
}

(编辑:李大同)

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

    推荐文章
      热点阅读