C++高精度算法--减法

本文详细解释了如何使用C++进行字符串长度比较、ASCII数值转换及逐位计算,通过`iostream`,`cstdio`,和`cstring`头文件实现。
摘要由CSDN通过智能技术生成

一.头文件  

        1.<iostream>

        2.<cstdio>

        3.<cstring>

                *cstring 速度更快,尽量不用string

二.代码
 

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int N=1e5+10;
char s1[N],s2[N],s3[N];
int a[N],b[N],c[N],lena,lenb,MAX,x;
int main(){
	cin>>s1>>s2;
	if(strlen(s2)>strlen(s1) or strlen(s2)==strlen(s1) and strcmp(s1,s2)<0){
		strcpy(s3,s1); 
		strcpy(s1,s2); 
		strcpy(s2,s3);
		cout<<"-"; 
	} 
	lena=strlen(s1);
	lenb=strlen(s2);
	MAX=max(lena,lenb);
	for(int i=0;i<lena;i++) a[i]=s1[lena-1-i]-'0'; 
	for(int i=0;i<lenb;i++) b[i]=s2[lenb-1-i]-'0';
	for(int i=0;i<MAX;i++){
		c[i]=a[i]-b[i]-x;		
		if(c[i]<0){
			x=1;
			c[i]+=10;
		}else x=0;
	}
	while(!c[MAX-1] and MAX>=2) MAX--;
	for(int i=MAX-1;i>=0;i--){
		cout<<c[i]; 
	}
	return 0;
}

三.代码解析

Line1-3:导入头文件

Line4:命名空间

Line5-7:变量

Line9:读入两个数

Line10-15:检测结果是否为负数

Line16-18:计算长的一个

Line19-20:倒序

Line21-27:一位一位计算

Line28-31:倒序输出

  ***此文为原创,如有不正请多指示***
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/C_User1024/article/details/137716343

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值