#include "StdAfx.h" #include "subStr.h" #include<iostream> using namespace std; #define MAX_LENTH 201 void sub(int len,int *bigNumA,int *bigNumB){ //以下为执行逐位相减;tag记录进位 int i,tag=0; for(i=0;i<len;i++){ bigNumA[i]-=bigNumB[i]; if(tag){ bigNumA[i]--; tag=0; } if(bigNumA[i]<0){ tag=1; bigNumA[i]+=10; } } //以下为处理结果的办法,若bigNumA<bigNumB则tag==1。所以不单要输出负号,还要修改结果。 //修改结果的思想:32-58(等于-26),但是用32-58的竖式是这样的个位为4,十位为7,而且还借了百位1位。 //所以9-7==2,10-4==6,加上负号就是正确的结果:-26 if(tag) { printf("-"); for(i=len-1;i>0;i--){ printf("%d",(9-bigNumA[i])); } printf("%d\n",(10-bigNumA[0])); }else{ for(i=len-1;i>=0;i--){ printf("%d",bigNumA[i]); } printf("\n"); } } int main(){ char numA[MAX_LENTH],numB[MAX_LENTH]; int bigNumA[MAX_LENTH],bigNumB[MAX_LENTH]; int i,pos,len; while(scanf("%s %s",numA,numB)!=EOF){ //注意两点,memset第三个参数是字节数,不能用strlen(bigNumA)。例如: //memset(bigNumA,0,strlen(bigNumA))是错误的。 //bigNumA[MAX_LENTH]={0}这种将数组元素统一置为0的方式只有在声明的时候才能使用。 //以下的“//”解开后是会出错的。 memset(bigNumA,0,sizeof(bigNumA)); memset(bigNumB,0,sizeof(bigNumB)); //bigNumA[MAX_LENTH]={0}; //bigNumB[MAX_LENTH]={0}; //以下是将接收到的大整数numA和numB存储到bigNumA和bigNumB中,个位对应bigNumx[0],以此类推。 pos=0; for(i=strlen(numA)-1;i>=0;i--){ bigNumA[pos++]=numA[i]-'0'; } pos=0; for(i=strlen(numB)-1;i>=0;i--){ bigNumB[pos++]=numB[i]-'0'; } if(strlen(numA)>strlen(numB)) { len=strlen(numA); }else{ len=strlen(numB); } sub(len,bigNumA,bigNumB); } system("pause"); return 0; }
相关推荐
C语言大整数减法 C语言中大整数减法是指对两个大整数进行减法运算,以获取它们之间的差值。由于C语言中整数类型的限制,无法直接对大整数进行减法运算,因此需要使用数组来实现大整数的减法。 在给定的代码中,...
大整数减法 c++ 代码 大整数减法 c++ 代码 大整数减法 c++ 代码大整数减法 c++ 代码 大整数减法 c++ 代码 大整数减法 c++ 代码 大整数减法 c++ 代码
### 大整数减法运算知识点解析 在计算机科学领域,大整数处理是一个非常重要的概念,尤其是在密码学、高性能计算以及其他需要精确处理极大数值的应用场景中。传统的整数类型(如`int`, `long long`等)由于其固定...
1. 大整数减法的原理和实现方法: 文件描述了如何进行高精度减法的算法分析与编程实现。高精度减法是在计算机科学中,处理超出常规数据类型范围的整数减法问题。这在某些场景下尤为重要,比如在金融、密码学等领域。...
《算法-大整数减法(信息学奥赛一本通-T1169)》是针对信息学竞赛中常见的一类问题进行详细讲解的资源,其中包含了相关的源代码,可以帮助学习者深入理解大整数减法的实现。在这个主题中,我们将探讨大整数减法的...
#### 大整数减法 大整数的减法同样需要注意借位的问题。具体的实现步骤如下: 1. **初始化变量**:与加法相同,定义相应的字符串和数组变量。 2. **比较大小**:首先需要确定哪个数较大。如果被减数小于减数,则...
文件提供了大整数加减法源代码,已在visual C++2.0上编译通过
普通的计算器在进行大整数的加减法时,可能会因为越界而丢掉后面的数。而该算法可实现两个大整数的加减法运算,能解决以上出现的问题。
c++大整数加减法的源代码,使用链表完成,希望对大家有用啊
Visual C++环境下,这些操作可以通过编译和调试这些源文件(如`大整数加法.cpp`、`大整数减法.cpp`、`2389Bull Math(高精度乘法).cpp`)来验证其正确性。同时,为了提高性能,可以考虑使用已有的库,如GMP(GNU ...
无任何高级语法,基础为主。作者刚写完,未进行整理,写的不好的地方多多担待
C++实现的大整数加减乘法,已经测试了,并且在oj平台上测试通过
### 超大整数相减的Java实现 在计算机科学中,处理超大整数是常见的需求之一,尤其是在加密算法、金融计算等场景中。本文将基于提供的代码示例来详细解析如何用Java实现超大整数相减的功能。 #### 一、问题背景与...
2. **大整数减法**:减法与加法类似,只是需要考虑借位的情况。如果被减数小于减数,可能需要向高位借位,这可能会导致最高位变负,因此需要特殊处理。 3. **大整数乘法**:乘法通常使用Karatsuba或Toom-Cook算法,...
3. **大整数减法**:减法与加法类似,但需要注意借位操作。如果当前位不够减,需要向前一位借位。处理借位时可能涉及负数,因此需要额外处理。 4. **大整数乘法**:乘法可以使用分治法来实现,例如Karatsuba算法或...
2. **大整数减法**:减法操作类似,但需要考虑借位。如果被减数的某位小于减数的对应位,就需要向前一位借位。例如,减法 `9123 - 5678` 可以转化为 `1923 - 5678`,然后用同样的方法逐位相减。 3. **大整数乘法**...
问题描述】 编写程序实现两个超长正整数(每个最长80位数字)的减法运算。 【输入形式】 从键盘读入两个整数,要考虑输入高位可能为0的情况(如00083)。...进行两个正整数减法运算, 234098 -134
大整数减法相对加法稍复杂,因为需要处理借位的情况。其基本流程与加法类似,但需额外考虑借位逻辑: 1. **初始化与转换**:与加法相同,读入并转换两个大整数。 2. **判断符号**:如果被减数小于减数,需要交换两...
- `jianbigint`函数实现了大整数减法。它首先比较两个大整数的长度,然后逐位相减,并处理可能的借位。 - `addbigint`函数实现了大整数加法。同样,先比较长度,然后逐位相加,并处理进位。 - `chengbigint`函数...