• A-B 高精度


        类似加法,同样可以用竖式做减法。在做减法时需要注意的是:当被减数比减数大,输出为负数,同时要处理借位。

    代码:

    #include<iostream>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int i,j,len,x[110000],y[110000],n1,n2,jw=0,o;
    char a[110000],b[110000],c[110000];
    int main()
    {
    	cin>>a>>b;
    	n1=strlen(a);
    	n2=strlen(b);
    	if(n1<n2||strcmp(a,b)<0&&n1==n2)//如果n1<n2那么减数比被减数小,结果为负数,如果位数一样,那么用strcmp一位一位比较(1)
    	{
    		strcpy(c,a);//用strcpy把a,b数组的值交换(2)
    		strcpy(a,b);
    		strcpy(b,c);  
    		cout<<"-";//输出负号 
    		x[i]=y[i]-x[i];
    		o=n1;//n1,n2交换 
    		n1=n2;
    		n2=o;
    	}
    	for(i=0;i<n1;i++)
    	{
    		x[i]=a[n1-1-i]-'0';//倒序存储 
    	}
    	for(i=0;i<n2;i++)
    	{
    		y[i]=b[n2-1-i]-'0';
    	}
    	len=max(n1,n2);
    	for(i=0;i<len;i++)
    	{
    		x[i]=x[i]-y[i]-jw;
    		if(x[i]<0&&y[i]>x[i])//如果小于0 
    		{
    			x[i]=x[i]+10;//当前加10 
    			x[i+1]=x[i+1]-1;//下一位-1 
    		}
    		x[i]=x[i]%10;
    	}
    	int f=i;
    	while(x[f]==0)//去0 
    	{
    		f--;
    	}
        for(i=f;i>=0;i--)cout<<x[i];
        if(f<0) cout<<0;
    }
    

      

      (1):strcmp

           (2):strcpy

  • 相关阅读:
    nginx学习编译安装(1)
    媒体查询
    web前端开发--超链接
    web前端开发--列表
    web前端开发--格式化文本与段落
    DIV与SPAN
    CSS基础
    表的创建
    数据库存储结构
    关系完整性约束
  • 原文地址:https://www.cnblogs.com/dai-jia-ye/p/9259143.html
Copyright © 2020-2023  润新知