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