优秀的编程知识分享平台

网站首页 > 技术文章 正文

C语言如何实现大数相加(c语言大数相加思路)

nanyue 2024-09-12 15:53:51 技术文章 9 ℃

c语言中int数的取值存在一定的限制,那我们要怎么突破这个限制呢?

#include <stdio.h>

#include <string.h>

int main()

{

int r, i, j, k;

int a[1000] = { 0 }, b[1000] = { 0 }, c[2000] = {0};//

char m[1000], n[1000];//数组m和n是需要相加的两个数


scanf("%s%s", m, n);输入m和n两个大数的值


for (i = 0; i<strlen(m); i++)//strlen()函数去大数的位数

a[i] = m[strlen(m)-i-1] - 48;//原本的数组是字符串数组,现在将它变为int数组

for (j = 0; j<strlen(n); j++)

b[j] = n[strlen(n)-j-1] - 48;//同理


k = (i > j) ? i : j;//选择较大的数的长度,这样就可以完整的输出数组

r = 0;


for (i = 0; i < k; i++)

{

c[i] = (a[i] + b[i]+r) % 10;//%求余

r = (a[i] + b[i]+r) / 10;//r如果是1相当于就进一位

}


if(r!=0) //判断一下 最后一次运算有没有进位 ,如果有的话,就让c多增加一位

{

c[i]=r;

i++;

}


for (j = i-1; j >= 0; j--)

printf("%d", c[j]);

return 0;

}

Tags:

最近发表
标签列表