• 初来乍到


    第一次写博客,也不懂写什么好,想起前几天有个朋友说他不懂怎么弄大数相减的事。那我就资源重复利用了。在下面贴上我自己写的大数相减,大牛们请键下留情,勿喷啊。

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
    char temp[100];
    int a[100]={
    0
    };
    int b[100]={
    0
    };
    int a1[100]={
    0
    };
    int b1[100]={
    0
    };
    int c[100];
    int i,na,nb,n,j,k;
    printf("输入a\n");
    gets(temp);
    for(i=0;temp[i];i++)a[i]=temp[i]-'0';
    printf("输入b\n");
    gets(temp);
    for(i=0;temp[i];i++)b[i]=temp[i]-'0';
    for(na=0;a[na];na++);
    for(nb=0;b[nb];nb++);
    n=na>nb?na:nb;//获取长度
    printf("\n");
    if(na<nb)//重置较长的为a数组
    {
    for(i=0;i<n;i++)
    {
    c[i]=a[i];
    a[i]=b[i];
    b[i]=c[i];
    }
    }
    for(i=99;i>=0;i--)if(a[i])break;//找到不为零的
    for(j=0,k=i;j<=i;)a1[j++]=a[k--];//倒置
    for(i=99;i>=0;i--)if(b[i])break;
    for(j=0,k=i;j<=i;)b1[j++]=b[k--];

    for(i=0;i<n;i++)//相减
    {
    a1[i]-=b1[i];
    }

    for(i=0;i<n;i++)//处理进位
    {
    if(a1[i]<0){
    a1[i]+=10;
    a1[i+1]-=1;
    }
    }

    for(i=99;i>=0;i--)if(a1[i])break;//输出
    for(;i>=0;i--)printf("%d",a1[i]);
    return 0;
    }

    上面的代码就是这样了,有什么问题的话留言吧。

  • 相关阅读:
    Mongo 应用查询
    Rocket MQ 问题排查命令
    阿里云部署杂记-节约时间
    linux shell 杂
    垃圾回收算法学习
    Hbase数据读写流程
    TCP 协议相关
    Netty
    ELK
    MiniGUI
  • 原文地址:https://www.cnblogs.com/eeason/p/3106812.html
Copyright © 2020-2023  润新知