⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 大整数减法.cpp

📁 大整数减法 poj 2981 用字符串实现大整正数的减法
💻 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 + -