模拟大整数加、减、乘、除法

0、这个是比较函数


1、模拟乘法


2、模拟除法



3、模拟加法




4、模拟减法


在C语言中,由于其标准据类型有大小限制,直接进行大整数乘除运算可能会超出范围。为了处理大整数运算,我们通常需要采用字符串或组的方式存储大整数,并实现大运算的函。以下是一个简化的大整数法的示例实现: 1. 首先定义大整数存储结构,可以使用字符组或字符串来表示一个大整数。 2. 然后编写大法的函,通常需要逆序处理字符串中的每一位字,模拟手算的过程。 下面是一个简化版的C语言大整数法函的示例: ```c #include <stdio.h> #include <string.h> #include <stdlib.h> // 反转字符串函 void reverse(char* str) { int length = strlen(str); for (int i = 0; i < length / 2; i++) { char temp = str[i]; str[i] = str[length - i - 1]; str[length - i - 1] = temp; } } // 大整数法函 void bigIntAdd(char* num1, char* num2, char* result) { int len1 = strlen(num1); int len2 = strlen(num2); int maxLen = len1 > len2 ? len1 : len2; int carry = 0; // 进位 reverse(num1); // 翻转字符串以便从最低位开始相 reverse(num2); reverse(result); // 结果也需要翻转,最后翻回去 for (int i = 0; i < maxLen; i++) { int digit1 = i < len1 ? num1[i] - '0' : 0; int digit2 = i < len2 ? num2[i] - '0' : 0; int sum = digit1 + digit2 + carry; result[i] = (sum % 10) + '0'; // 计算和,上进位,并转换为字符 carry = sum / 10; // 计算新的进位 } if (carry > 0) { result[maxLen] = carry + '0'; // 如果最后还有进位,直接到结果的最后 result[maxLen + 1] = '\0'; // 字符串结束符 } else { result[maxLen] = '\0'; // 结束符 } reverse(result); // 最后翻转回正常的顺序 } int main() { char num1[100], num2[100], result[102]; // 假设大整数不会超过100位 printf("请输入第一个大整数:"); scanf("%s", num1); printf("请输入第二个大整数:"); scanf("%s", num2); bigIntAdd(num1, num2, result); printf("结果是:%s\n", result); return 0; } ``` 这段代码仅实现了大整数法运算。如果需要实现法、乘法和除法,需要编写额外的函来处理这些运算。大整数法需要处理借位的情况,乘法需要实现大整数逐位相乘并到结果的相应位置,并处理进位,除法则更为复杂,需要实现长除法或通过循环去除的方法来得到商和余
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值