📄 大整数减法.cpp
字号:
//************************************************//
//*file:2736.cpp *//
//*date:08/11/12 *//
//*description:poj 2736 大整数减法 *//
//************************************************//
#include <iostream>
#include <cstring> //程序用到strlen函数,调用此库
using namespace std;
int main()
{
char a[101]="",b[101]=""; //储存输入的字符串
int m[101]={0},n[101]={0},k[101]={0}; //储存转化后的数组 及 计算结果
int lena=0,lenb=0; //字符长
int time,i=0,j=0,g=0; //循环变量
cin>>time; //输入循环次数
cin.get(); //清空键盘缓存
for (g = 0; g < time; g++)
{
memset(m,0,sizeof(m)); //数组清零
memset(n,0,sizeof(n));
memset(k,0,sizeof(k));
cin>>a>>b;
cin.get();
lena = strlen(a); //读取串长(包括'\0')
lenb = strlen(b);
if (lena == 0 || lenb == 0) //不可输入"空"
continue;
j=0;
for (i = lena-1; i >= 0; i--) //将a[]中字符转为数字并倒序放入m[]中
{
m[j++] = a[i]-'0';
}
i=0;
for (j = lenb-1; j >= 0; j--) //同上
{
n[i++] = b[j]-'0';
}
for (i = 0; i < lena; i++)
{
k[i]+=m[i]-n[i]; //在对应位进行减法
if (k[i] < 0) //减法中的不足补零
{
k[i]+=10; //不足加10
k[i+1]=-1; //相应高的一位减一
}
}
while(k[lena-1] == 0 && lena > 1) //减去数组后位的多余0,以清空前导0
{
lena--;
}
for (j = lena-1; j >= 0; j--) { cout<<k[j]; } //输出结果
cout<<endl;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -