长整数、高精度运算c语言代码
时间: 2023-09-15 08:23:00 浏览: 174
以下是一个简单的高精度加法的C语言实现:
```
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000
void reverse(char* str) {
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
int main() {
char str1[MAX_LEN];
char str2[MAX_LEN];
scanf("%s %s", str1, str2);
int len1 = strlen(str1);
int len2 = strlen(str2);
reverse(str1);
reverse(str2);
int maxLen = len1 > len2 ? len1 : len2;
int carry = 0;
char result[MAX_LEN];
int index = 0;
for (int i = 0; i < maxLen; i++) {
int digit1 = i < len1 ? str1[i] - '0' : 0;
int digit2 = i < len2 ? str2[i] - '0' : 0;
int sum = digit1 + digit2 + carry;
result[index++] = sum % 10 + '0';
carry = sum / 10;
}
if (carry != 0) {
result[index++] = carry + '0';
}
result[index] = '\0';
reverse(result);
printf("%s\n", result);
return 0;
}
```
这个程序可以读入两个长整数字符串,然后计算它们的和并输出结果字符串。这个程序采用的方法是按位相加,从低位到高位逐个计算,如果有进位则在下一位加上进位。最后需要将结果字符串翻转一下得到正确的答案。
这个程序可以用于处理一些需要高精度计算的问题,比如大数乘法、大数除法等等。需要注意的是,这个程序只是一个简单的示例,实际应用中可能需要考虑更多的情况,比如输入字符串的长度可能超出最大长度、输入字符串可能包含非数字字符等等。
阅读全文