C++实现大数的减法

减法稍微有一点复杂,因为会处理负数,而我们所用的是字符串的形式来保存数字也是为这一点。否则用整型或其它类型时,则表示处理、保存时会相当复杂。算法也是从低位开始减。先要判断减数和被减数那一个位数长,减数位数长是正常减;被减数位数长,则被减数减减数,最后还要加上负号;两数位数长度相等时,最好比那一个数字大,否则负号处理会很繁琐;处理每一项时要,如果前一位相减有借位,就先减去上一位的借位,无则不减,再去判断是否能够减开被减数,如果减不开,就要借位后再去减,同时置借位为1,否则置借位为0。

【C/C++】大数四则运算的C++实现(转) - 八月照相馆 - 八月照相馆



//算法也是从低位开始减。先要判断减数和被减数那一个位数长,减数位数长是正常减;被减数位数长,则被减数减减数,最后还要加上负号;

//两数位数长度相等时,最好比那一个数字大,否则负号处理会很繁琐;处理每一项时要,如果前一位相减有借位,就先减去上一位的借位,无则不减,再去判断是否能够减开被减数,
//如果减不开,就要借位后再去减,同时置借位为1,否则置借位为0
#include<iostream>
#include<cstring>//strlen是操纵c风格字符串的标准库函数,因此要有头文件#include<cstring>
using namespace std;
bool Isequal=false;
//strcmp(s1,s2),比较两个字符串是s1,s2是否相同,如果s1等于s2,则返回0,如果s1小于s2则返回负数,如果s1大于s2则返回正数
//要定义一个比较函数,比较输入的两个数的大小,但是不能完全依靠strcmp函数,因为它有些问题,比如123456,与128比会得出128大,因为它是从数组第一位开始比较的,8大于3。
//另外写一个比较函数
int compare(char* num1,char* num2)
{
int num1length=strlen(num1);
int num2length=strlen(num2);
if(num1length>num2length) //长度不等的时候,哪个长,哪个数就大
return 1;//表示num1大于num2
else if(num1length<num2length)
return -1;//表示num1小于num2
else //两者长度相等,则用strcmp来比较大小
{
if(strcmp(num1,num2)==0)
return 0;//表示两个大数是相等的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值