大数相减

    xiaoxiao2026-08-18  9

    需要比较大小,来决定结果正负 核心代码:  for(int i=0; i<100; i++)             {                 sum=k[i]-f[i];                 if(sum<0)                 {                     d[p++]=sum+10;                     k[i+1]=k[i+1]-1;                 }                 else                 {                     d[p++]=sum;                 }             } #include<stdio.h> #include<string.h> char n[100000]; int d[100000]; int  e[100000]; char s[100000]; int f[100000]; int k[100000]; int main() {     int t;     while(scanf("%s%s",n,s)!=-1)     {         int l;         l=strlen(n);         int h;         h=strlen(s);         int sum=0;         int p=0;         memset(d,0,sizeof(d));         memset(f,0,sizeof(f));         memset(k,0,sizeof(k));         int ni=0,we=0;         if(h==l)         {             int y=0;             for(int i=0; i<h; i++)             {                 if(n[i]!=s[i])                 {                     y=-1;                 }             }             if(y==0)             {                 printf("0\n");             }             else             {                 for(int ii=0; ii<l; ii++)                 {                     if(n[ii]>s[ii])                     {                         for(int i=l-1; i>=0; i--)                         {                             f[ni++]=n[i]-48;                         }                         for(int i=h-1; i>=0; i--)                         {                             k[we++]=s[i]-48;                         }                         for(int i=0; i<100; i++)                         {                             sum=f[i]-k[i];                             if(sum<0)                             {                                 d[p++]=sum+10;                                 f[i+1]=f[i+1]-1;                             }                             else                             {                                 d[p++]=sum;                             }                         }                         for(int i=p-1; i>=0; i--)                         {                             if(d[i]!=0)                             {                                 for(int j=i; j>=0; j--)                                 {                                     printf("%d",d[j]);                                 }                                 printf("\n");                                 break;                             }                         }                         break;                     }                     else                     {                         for(int i=l-1; i>=0; i--)                         {                             f[ni++]=n[i]-48;                         }                         for(int i=h-1; i>=0; i--)                         {                             k[we++]=s[i]-48;                         }                         for(int i=0; i<100; i++)                         {                             sum=k[i]-f[i];                             if(sum<0)                             {                                 d[p++]=sum+10;                                 k[i+1]=k[i+1]-1;                             }                             else                             {                                 d[p++]=sum;                             }                         }                         for(int i=p-1; i>=0; i--)                         {                             if(d[i]!=0)                             {                                 printf("-");                                 for(int j=i; j>=0; j--)                                 {                                     printf("%d",d[j]);                                 }                                 printf("\n");                                 break;                             }                         }                         break;                     }                 }             }         }         else if(l>h)         {             for(int i=l-1; i>=0; i--)             {                 f[ni++]=n[i]-48;             }             for(int i=h-1; i>=0; i--)             {                 k[we++]=s[i]-48;             }             for(int i=0; i<100; i++)             {                 sum=f[i]-k[i];                 if(sum<0)                 {                     d[p++]=sum+10;                     f[i+1]=f[i+1]-1;                 }                 else                 {                     d[p++]=sum;                 }             }             for(int i=p-1; i>=0; i--)             {                 if(d[i]!=0)                 {                     for(int j=i; j>=0; j--)                     {                         printf("%d",d[j]);                     }                     printf("\n");                     break;                 }             }         }         else if(h>l)         {             for(int i=l-1; i>=0; i--)             {                 f[ni++]=n[i]-48;             }             for(int i=h-1; i>=0; i--)             {                 k[we++]=s[i]-48;             }             for(int i=0; i<100; i++)             {                 sum=k[i]-f[i];                 if(sum<0)                 {                     d[p++]=sum+10;                     k[i+1]=k[i+1]-1;                 }                 else                 {                     d[p++]=sum;                 }             }             for(int i=p-1; i>=0; i--)             {                 if(d[i]!=0)                 {                     printf("-");                     for(int j=i; j>=0; j--)                     {                         printf("%d",d[j]);                     }                     printf("\n");                     break;                 }             }         }     } }
    转载请注明原文地址: https://ju.6miu.com/read-1311293.html
    最新回复(0)