C++求教,要求将从键盘输入的两个数字字符串所代表的数字相加并输出结果,暂时只要求做非负整数加法。

int的数据范围是有限的,因此可以利用数组来存储超大整数各位上的数字,并实现超大整数的输入输出和运算,为方便输入输出,可以字符数组来实现。要求将从键盘输入的两个数字字符串所代表的数字相加并输出结果,暂时只要求做非负整数加法。例如输入:
112233445566778899
908070605040302010
输出:
1020304050607080909
int的数据范围是有限的,因此可以利用数组来存储超大整数各位上的数字,并实现超大整数的输入输出和运算,为方便输入输出,可以字符数组来实现。要求将从键盘输入的两个数字字符串所代表的数字相加并输出结果,实现任意超大整数(可正可负)的加法和减法,可以采用菜单来选择做加法还是做s减法。
例如输入:
112233445566778899
908070605040302010
输出:
1020304050607080909

第1个回答  2012-03-03
char a[100],b[100],f[101];
int c[100]={0},d[100]={0},e[101]={0};
int i,j,k;
int l1,l2,l3;
gets(a);
gets(b);
l1=strlen(a);
l2=strlen(b);
l3=l1>l2?l1:l2;
strrev(a);
for(i=0;a[i];i++)
c[i]=a[i]-'0';
strrev(b);
for(i=0;b[i];i++)
d[i]=b[i]-'0';
e[0]=c[0]+d[0];
for(i=1;i<=l3;i++)
{
e[i]=c[i]+f[i]+e[i-1]/10;
e[i-1]%=10;
}
if(e[l3]>0)
l3++;
for(i=0;i<l3;i++)
f[i]=e[i]+'0';
f[i]='\0''
strrev(f);
puts(f);

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网