zoukankan      html  css  js  c++  java
  • 大数减法 c语言

     大数减法

    思路也是模拟小学减法

    #include <stdio.h>
    #include <stdlib.h>
    #include<string.h>
    
    int main()
    {   char a[1000]={0},b[1000]={0};
        int  sa[1000]={0},sb[1000]={0},sc[1000]={0};
        while((gets(a))!=NULL&&(gets(b))!=NULL){
        int lena=strlen(a),lenb=strlen(b),clen=lena-lenb;
        int len=lena>lenb?lena:lenb;
        int i;
        for(i=0;i<lena;i++){
            sa[i]=a[i]-'0';
        }
        for(i=0;i<lenb;i++){
            sb[i]=b[i]-'0';
        }
        if(clen>0) {
            for(i=lenb-1;i>=0;i--){
                sb[i+clen]=sb[i];
            }
            for(i=0;i<clen;i++){
                sb[i]=0;
            }
        }
        else if(clen<0){
            for(i=lena-1;i>=0;i--){
                sa[i-clen]=sa[i];
            }
            for(i=0;i<-clen;i++){
                sa[i]=0;
            }
        }                   //这里是为了让两个数能够从个位上对齐而对两者的移位处理
    
        for(i=len-1;i>=0;i--){
            sc[i]+=sa[i]-sb[i];                   //仍然很需要注意!!!!!这里是+上两者之差而非把差赋值给他
            if(sc[i]<0&&i>0) {sc[i-1]--;sc[i]+=10;}
        }
        i=0;
       while(sc[i]==0){
        i++;
       }
       for(;i<len;i++){
        printf("%d",sc[i]);
       }
       printf("
    ");
       memset(a,0,sizeof(a));
       memset(b,0,sizeof(b));
       memset(sa,0,sizeof(sa));
       memset(sb,0,sizeof(sb));
       memset(sc,0,sizeof(sc));
        }        //注意每次需要清0防止之前的输入存留影响后续结果
        return 0;
    }



     

  • 相关阅读:
    Ext.form.FieldSet字段集
    jQuery系列目录
    Ext.form.field.Trigger触发字段
    Ext.grid.Panel表格分页
    ExtJS Model数据实体模型
    Ext.form.field.Spinner微调字段
    Ext.window.MessageBox
    书单
    资料收集
    喧嚣
  • 原文地址:https://www.cnblogs.com/gao-hongxiang/p/12342433.html
Copyright © 2011-2022 走看看