大数相加A+B

问题:求A+B的值,A+B是位数在1~200之间的大数。


#include <stdio.h>#include <string.h>

#define N 200
void main()

{

char s1[N],s2[N];

int a[N]={0},b[N]={0},l1,l2,c,k,i;
puts("请输入两个较大的数字(Note:输完一个按一次回车):");
gets(s1);
gets(s2);
l1=strlen(s1); //用数组装这两个大数
l2=strlen(s2);
if(l1<l2) k=l2;
   else k=l1;
   c=k;
for(i=0;i<l1;k--,i++) //把两个字符串里面的数字用两个数组表示
    a[k]=s1[l1-1-i]-'0';
for(k=c,i=0;i<l2;k--,i++)
    b[k]=s2[l2-1-i]-'0';
printf("\n");
for(i=c;i>=0;i--)
{ //两个数组相加,逢十进一
a[i]+=b[i];
if(a[i]>=10) 
{
a[i]-=10;
a[i-1]++;
}
}
printf("此两数相加之和为:");
if(a[0]!=0) //从不等于0的一位开始输出
{
for(i=0;i<=c;i++)
printf("%d",a[i]);
}
else 
{
for(i=1;i<=c;i++)
printf("%d",a[i]);
}
printf("\n");
return 0;

}



大数相加之所以是编程里的一个难题,关键在于以下几点

1.是否能想到用数组表示两个大数。


2.能否想到如何进操作逢十进一。


3能否想到输出时要考虑第一位不能是0。

以上三点就是我们在进行大数相加时的困扰,此外,我们还要考虑该如何进行大数相减、大数相乘和大数相除,这样才能达到举一反三的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值