zoukankan      html  css  js  c++  java
  • 高精度加法和减法。加法还好,减法花了不少时间。

    加法:

    #include<stdio.h>
    #include<string.h>
    int a[1000]={0},b[1000]={0};
    int main()
    {
     char *s1;
     int l1=0,l2=0,l,i;
     freopen("hp+.in","r",stdin);
     freopen("hp+.out","w",stdout);
     scanf("%s",s1);
     l1=strlen(s1);
     for(i=0;i<=l1-1;i++)
     {
      a[l1-1-i]=s1[i]-'0';
     }
     scanf("%s",s1);
     l2=strlen(s1);
     for(i=0;i<=l2-1;i++)
     {
      b[l2-1-i]=s1[i]-'0';
     }
     if(l1>l2)
       l=l1;
     else
       l=l2;
     for(i=0;i<=l-1;i++)
     {
      a[i]=a[i]+b[i];
      if(a[i]>=10)
      {
       a[i+1]=a[i+1]+1;
       a[i]=a[i]-10;
      }
        }
     if(a[l]!=0)
       l++;
     for(i=l-1;i>=0;i--)
         printf("%d",a[i]);
     return 0;       
    }

    减法:

    #include<stdio.h> #include<string.h> int a[1000]={0},b[1000]={0},c[1000]={0}; int main() {  char *s1;  int l1=0,l2=0,l,i,x;  freopen("hp-.in","r",stdin);  freopen("hp-.out","w",stdout);  scanf("%s",s1);  l1=strlen(s1);  for(i=0;i<=l1-1;i++)  {   a[l1-1-i]=s1[i]-'0';  }  scanf("%s",s1);  l2=strlen(s1);  for(i=0;i<=l2-1;i++)  {   b[l2-1-i]=s1[i]-'0';  }  if(l1>l2)    l=l1;  else    l=l2;  for(i=0;i<=l-1;i++)  {

      if(a[i]<b[i])   {    c[i]=a[i]+10-b[i];    c[i+1]=a[i+1]-1;   }   else       c[i]=a[i]-b[i];     }     for(i=l-1;i>=0;i++)     {      if(a[i]<b[i])      {         x=1;    }   else     break;  }     if(x==1)     {      printf("-");      for(i=0;i<=l-1;i++)  {

      if(b[i]<a[i])   {    c[i]=b[i]+10-a[i];    c[i+1]=b[i+1]-1;   }   else       c[i]=b[i]-a[i];     }  }     for(i=l-1;i>=0;i--)     {      if(c[i]==0)        l--;      else     break;   }  for(i=l-1;i>=0;i--)      printf("%d",c[i]);  return 0;        }

  • 相关阅读:
    第10章 指针(二) 首地址指针
    第10章 指针(五) 使用地址指针的引用
    第10章 指针(六) 指针小结
    C语言中的类模拟(C++编程思想)
    经典SQL语句大全
    C#ADO.NET操作数据代码汇总
    C#日期格式化
    第10章 指针(四) 地址簿指针变量
    数据库设计中的14个技巧
    第9章 预处理命令
  • 原文地址:https://www.cnblogs.com/lldsidi/p/5647847.html
Copyright © 2011-2022 走看看