用c语言实现超长整数的加法运算
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用c语言实现超长整数的加法运算相关的知识,希望对你有一定的参考价值。
要实现超长整数的加法运算,可以使用字符串来存储这些数,然后按位进行加法运算。下面是使用C语言实现超长整数加法的示例代码:c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100000
void reverse(char *str)
int i, j;
char temp;
for (i = 0, j = strlen(str) - 1; i < j; i++, j--)
temp = str[i];
str[i] = str[j];
str[j] = temp;
void add(char *num1, char *num2, char *result)
int carry = 0;
int i = 0;
int len1 = strlen(num1);
int len2 = strlen(num2);
reverse(num1);
reverse(num2);
while (i < len1 || i < len2 || carry != 0)
int n1 = (i < len1) ? (num1[i] - '0') : 0;
int n2 = (i < len2) ? (num2[i] - '0') : 0;
int sum = n1 + n2 + carry;
result[i] = (sum % 10) + '0';
carry = sum / 10;
i++;
result[i] = '\0';
reverse(result);
int main()
char num1[MAX_LEN], num2[MAX_LEN], result[MAX_LEN];
printf("请输入第一个整数:");
scanf("%s", num1);
printf("请输入第二个整数:");
scanf("%s", num2);
add(num1, num2, result);
printf("两个整数的和为:%s\n", result);
return 0;
在上面的代码中,reverse函数用于将一个字符串反转。add函数用于将两个字符串表示的超长整数相加,结果存储在result字符串中。在add函数中,我们首先将两个字符串反转,然后按位进行加法运算,将结果存储在result字符串中。最后,我们将result字符串再次反转,以得到正确的结果。
需要注意的是,在进行加法运算时,需要考虑到进位的情况。当两个数的位数不同时,需要在较短的数前面补0,以便按位相加。 参考技术A #include "stdio.h"
int sum(int a[],int b[],int c[])
int i=0,j=0,f=0;
for(;i<21;i++)
j=a[i]+b[i]+j;
if(j!=0) f=i;
c[i]=j%10000;
j=j/10000;
c[i]=j;
return f;
void get(int a[])
int n,i,j;
scanf("%d",&n);
j=(n-1)/4;
switch (n%4)
case 3:scanf("%3d",&a[j]);break;
case 2:scanf("%2d",&a[j]);break;
case 1:scanf("%1d",&a[j]);break;
case 0:scanf("%4d",&a[j]);break;
for(i=j-1;i>=0;i--)
scanf("%4d",&a[i]);
void main()
static int a[20],b[20],c[21],i,n,f;
char d[80];
get(a);
get(b);
f=sum(a,b,c);
for(i=f;i>=0;i--)
printf("%4d",c[i]);
以上是关于用c语言实现超长整数的加法运算的主要内容,如果未能解决你的问题,请参考以下文章
ZZNUOJ_用C语言编写程序实现1153:大整数加法(附完整源码)
用C语言实现大整数的运算?64bit整数可以用一个字符数组来保存它