处理两个高精度数的减法。(1000位内)
两行,每行一个整数。(可能为负数,负号用“-”表示)
一个整数,即两个数相减的结果。
2345678901234 123456789012345
-121111110111111
注意:输入的数可能是负数!
#include<iostream>
#include<cstring>
using namespace std;
string s1, s2;
int k, t, w, len, a[1005], b[1005], c[1005];
void rev(string x, string y)
{
//将字符串x逆序转换保存在int数组a中
for(int i = 0; i < x.size(); i++)
{
}
//将字符串y逆序转换保存在int数组b中
for(int i = 0; i < y.size(); i++)
{
}
}
void add(string x, string y)
{
//加法:
//加法不用比较x和y的大小,直接逆序转换到int数组a和b中
rev(x, y);
//因为不知道x与y的大小,所以取两者较长的长度为计算的次数
len = x.size() > y.size() ? x.size() : y.size();
//做加法计算:x+y
{
}
}
void sub(string x, string y)
{
//减法:
//先判断x和y的大小,如果x小于y,则交换x和y
//如果没有交换,则结果必为正数,用t = 0记
//如果有交换,则结果必为负数,用t = 1记
{
}
//将字符串x和y,逆序转换之后存入int数组a和b中
rev(x, y);
//以为已经比较过大小,做过交换,所以x肯定大于y,所以计算的次数取x的长度次
len = x.size();
//做减法计算:x-y
{
}
}
int main()
{
cin >> s1 >> s2;
//如果s1为负数:
//如果s2也为负数:如-3-(-2),可以化简为:-(3-2),
//即记下有一个负号(如用k = 1),然后去掉s1和s2的负号,然后做减法(s1-s2)
//减法(s1-s2)的值,可能为正,也可能为负,用t = 0记正,用t = 1记负。
//如果s2为正数:如-3-2,可以化简为:-(3+2),
//记下有一个负号(如用k = 1),然后去掉s1的负号,然后做加法(s1+s2)
if(s1[0] == '-')
{
}
//如果s1为正数:
//如果s2为负数:如3-(-2),可以化简为:3+2,
//即:去掉s2的负号,然后做加法(s1+s2)
//如果s2为正数:如3-2,直接做减法(s1-s2) ,用t = 0记正,用t = 1记负。
else
{
}
//做完运算之后,判断k与t的值,确定最后的结果为正或为负(即确定最后要不要输出负号)
//去除前导零,输出结果。
//输出
{
}
return 0;
}
奇遇编程