/*题目:输入两行字符串正整数,第一行是被减数,第二行是减数,输出第一行减去第二行的结
/果。
/大数一般会超出长整型的范围,所以用字符串存储数据然后按照减法运算法则实现就成了。
/string类成员函数功能强大!
*/
#include <iostream>
#include<string>
using namespace std;
int compare(string &num1,string &num2)
{
int l1 = num1.size();
int l2 = num2.size();
if(l1>l2)
return 1;
else if(l1<l2)
return 2;
else
for(int i=0;i<l1;i++)
{
if(num1[i]>num2[i])
return 1;
else if(num1[i]<num2[i])
return 2;
}
return 0;
}
string minus(string &num1,string &num2)
{
//num1>nun2
int len1= num1.size();
int len2= num2.size();
int flag = 0;
int temp=0;
string result;
for(int i=0;i<len2;i++)
{
temp=num1[len1-1-i]-num2[len2-1-i]-flag;
if(temp<0){
flag=1;
temp = temp+10;
result.push_back(temp+'0');
}
else {
flag=0;
result.push_back(temp+'0');
}
}
for(int i=len1-len2-1;i>=0;i--)
{
temp = num1[i]-'0'-flag;
if(temp<0)
{
flag =1;
result.push_back(temp+10+'0');
}
else
{
flag=0;
result.push_back(temp+'0');
}
}
int len3 = result.size();
int num=0;
for(int i=0;i<len3;i++)
if(result[i]==0)
num++;
else
break;
if(num>0)
result.erase(len3-num);
num = result.size();
char c;
for(int i=0;i<num/2;i++)
{
c = result[i];
result[i]=result[num-1-i];
result[num-1-i] = c;
}
return result;
}
void main()
{
string num1,num2;
cin>>num1>>num2;
int flag=0;
string result;
flag = compare(num1,num2);
if(flag==0)
{
result='0';
}
if(flag==1)
result = minus(num1,num2);
if(flag==2){
result.push_back('-');
result.append(minus(num2,num1));
}
cout<<result;
return ;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。