如何C语言中实现两个任意大小的整数的相加
答案:5 悬赏:0 手机版
解决时间 2021-03-24 05:46
- 提问者网友:树红树绿
- 2021-03-23 17:41
如何C语言中实现两个任意大小的整数的相加
最佳答案
- 五星知识达人网友:醉吻情书
- 2021-03-23 19:09
要实现任意大小两个整数相加,那么就不能存在溢出情况。所以无法使用任何系统类型,唯一的方式是用数组模拟整数存储,并自行实现加法操作算法。
需要注意以下几点:
1 大数如何存储及输出;
2 计算时进位的处理;
3 两个计算数长度不同时的处理;
4 当达到最高位仍有进位的处理,即结果的长度大于任意一个操作数。
以下是一个比较简单的代码:
#include
#include
char s[101];
int sum[101];
int main()
{
int i, j;
while (gets(s), strcmp(s, "0")) {//巧妙化解开多少个数组 算多少个数的和的局面
j=strlen(s);
for (i=j-1; i>=0; --i) {
sum[j-i-1]+=(s[i]-'0');//s[i]-'0'表示字符数字转化成int数字 倒序加到sum中 sum第一个数是s的最后一个数的和
}
}
j=101; while(!sum[j])--j; //重新赋值j 使j为目前sum的总位数
for (i=0;i sum[i+1]+=sum[i]/10;
sum[i]=sum[i]%10;
}
for (i=j; i>=0; --i) {
printf("%d", sum[i]);
}
}
需要注意以下几点:
1 大数如何存储及输出;
2 计算时进位的处理;
3 两个计算数长度不同时的处理;
4 当达到最高位仍有进位的处理,即结果的长度大于任意一个操作数。
以下是一个比较简单的代码:
#include
#include
char s[101];
int sum[101];
int main()
{
int i, j;
while (gets(s), strcmp(s, "0")) {//巧妙化解开多少个数组 算多少个数的和的局面
j=strlen(s);
for (i=j-1; i>=0; --i) {
sum[j-i-1]+=(s[i]-'0');//s[i]-'0'表示字符数字转化成int数字 倒序加到sum中 sum第一个数是s的最后一个数的和
}
}
j=101; while(!sum[j])--j; //重新赋值j 使j为目前sum的总位数
for (i=0;i
sum[i]=sum[i]%10;
}
for (i=j; i>=0; --i) {
printf("%d", sum[i]);
}
}
全部回答
- 1楼网友:长青诗
- 2021-03-23 23:15
好象有个随机函数
- 2楼网友:末日狂欢
- 2021-03-23 22:32
先用random()生成随机数,这个数是任意大小的
然后做加法操作即可
然后做加法操作即可
- 3楼网友:琴狂剑也妄
- 2021-03-23 21:43
首先你要定义这两个整数的类型;
因为是整数所以必然使用int
大小任意...
long long int a,b,c;
a = ;
b= ;
c = a + b;
因为是整数所以必然使用int
大小任意...
long long int a,b,c;
a = ;
b= ;
c = a + b;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯