求两个不超过100位的非负整数的和,差,乘,除

本文介绍了如何进行大数的加、减、乘、除操作,使用字符串和数组存储非负整数,通过模拟小学生列竖式的方法进行计算。对于加法和减法,过程与常规运算相似;乘法采用延迟进位策略,逐位相乘后再处理进位;除法通过反复做减法并更新商值,以提高效率。给出了具体的示例和计算结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


思想:

用字符串来控制输入,数组来存储,数组的低位存整数的低位,高位来存储高位,

和:计算的过程基本上和小学生列竖式做加法相同。

差:跟和差不多

乘:计算的过程基本上和列竖式做乘法相同。为编程方便,并不急于处理进位,而将进位问题留待最后统一处理

除:基本的思想是反复做减法,看看从被除数里最多能减去多少个除数,商就是多少。一个一个减显然太慢,如何减得更快一些呢?以7546除以23 为例来看一下:开始商为0。先减去23 的100 倍,就是2300,发现够减3 次,余下646。于是商的值就增加300。然后用646 减去230,发现够减2次,余下186,于是商的值增加20。最后用186 减去23,够减8 次因此最终商就是328。

n的核心是要写一个大整数的减法函数,然后反复调用该函数进行减法操作。 计算除数的10倍、100 倍的时候,不用做乘法,直接在除数后面补0 即可。

void sum(char *str1,char *str2,int MAX_LEN);
void substract(char *str1,char *str2,int MAX_LEN);
void product(char *str1,char *str2,int MAX_LEN);
void divide(char *str1,char
在Java中,两个超过200非负整数可以使用字符串转换整数运算的方法。这是因为当整数超过Integer.MAX_VALUE(即2^31 - 1,对于32系统)时,会自动溢出并产生错误的结果。以下是简单的步骤: 1. 首先将这两个整数转换成字符串,这样可以直接操作每一。 2. 初始化两个指针分别指向这两个字符串的开始置。 3. 逐相加,并考虑进。如果当前大于9,则需要进一,同时更新下一的值。 4. 保持一个变量记录结果的高部分(如果有进),初始化为0。 5. 当两个指针都遍历完后,把高部分(如果有)加入到结果中。 下面是一个简单的Java函数示例: ```java public class Main { public static void main(String[] args) { int num1 = 1234567890; int num2 = 9876543210; String strNum1 = Integer.toString(num1); String strNum2 = Integer.toString(num2); while (strNum1.length() > strNum2.length()) { strNum2 = "0" + strNum2; // 对较短的字符串补零 } while (strNum2.length() > strNum1.length()) { strNum1 = "0" + strNum1; // 对较长的字符串补零 } StringBuilder sumStr = new StringBuilder(); int carry = 0; for (int i = strNum1.length() - 1; i >= 0; i--) { int digitSum = strNum1.charAt(i) - '0' + strNum2.charAt(i) - '0' + carry; sumStr.append(digitSum % 10); carry = digitSum / 10; } if (carry > 0) { sumStr.insert(0, carry); // 如果有进,添加高 } int result = Integer.parseInt(sumStr.toString()); System.out.println("两数之为:" + result); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值