zoukankan      html  css  js  c++  java
  • a-b(高精度)

    我现在已经是才语言中的一员了,我在此献上今日的佳作——a-b(高精度),以下是我的程序及其注释,欢迎各位来观赏,耶!

    程序:

    #include<stdio.h>

    #include<string.h>

    char s1[1000];

    int a[1000]={0},b[1000]={0},c[1000]={0};

    int main()

    {

          int i,j,z,l1,l2,l,o;

          freopen("hp-.in","r",stdin);

          freopen("hp-.out","w",stdout);

          scanf("%s",s1);  --------------------------------------------//a

          l1=strlen(s1);

          for(i=0;i<=l1-1;i++) -------------------------------------  //把s1(被减数)转换成数字,并倒序存入a数组

               a[l1-1-i]=s1[i]-'0';

          scanf("%s",s1);

          l2=strlen(s1);

          for(i=0;i<=l2-1;i++) --------------------------------- //把s1(减数)转换成数字,并倒序存入b数组

               b[l2-1-i]=s1[i]-'0';

              

          if(l1==l2){  

               for(j=l1;j>=0;j--)

               {

                          if(a[j]>b[j])  -----------------------------//a大

                          {

                                o=0;

                                break;

                          }

                          if(b[j]>a[j])  -----------------------------//b大

                          {

                                o=1;

                                break;

                          }

               }

          }

          if(l1>l2||o==0) ---------------------------------------//a大时

          {   

               l=l1;

               for(i=0;i<l;i++)

               {

                     if(a[i]<b[i])

                     {

                          a[i]=a[i]+10;

                          a[i+1]-=1;

                     }

                     c[i]=a[i]-b[i];

               }

               while(l>1&&c[l-1]==0) l--;-----------------------------------  //舍去高位中无用的0

               for(i=l-1;i>=0;i--)  ------------------------------------------//输出

               {

                     printf("%d",c[i]);

               }

          }   

          else

          {

               printf("-");

               l=l2;

               for(i=0;i<l;i++)

               {

                     if(a[i]>b[i])

                     {

                          b[i]=b[i]+10;

                          b[i+1]-=1;

                     }

                     c[i]=b[i]-a[i];

               }

               while(l>1&&c[l-1]==0) l--; ------------------------------------//舍去高位中无用的0

               for(i=l-1;i>=0;i--)------------------------------------------- //输出

               {

                     printf("%d",c[i]);

               }

          }

          return 0;

    }

    进过这一次的编写,我更加熟练的编写程序,我会向前更进一步!(^o^)/O(∩_∩)O哈哈~( ^_^ )/~~拜拜

  • 相关阅读:
    返回一个整数数组中最大子数组的和
    简单四则运算
    简单四则运算2设计思路
    三月份阅读计划
    简单四则运算的随机输入
    软件工程读书笔记(10)——第十章 软件测试
    软件工程读书笔记(11)——第十一章 软件演化
    构建之法阅读笔记(一)
    敏捷开发方法综述
    第四周进度条
  • 原文地址:https://www.cnblogs.com/chentao1c/p/5649390.html
Copyright © 2011-2022 走看看