C++中怎么把一个字符串中的数字相加? 比如说1234,我想要把1234变成1+2+3+4

 我来答
陀燕侍祺
2019-02-05 · TA获得超过3.2万个赞
知道小有建树答主
回答量:1.2万
采纳率:27%
帮助的人:837万
展开全部
#include<stdio.h>
#include<string.h>
#define
maxlen
80
void
fun(char
a[],
char
b[],
char
c[])//假设a
b
c
的最大位数都是
maxlen-2
且是
非负整数,
c用于保存结果
{
int
carry,
i,
len1,
len2,
len;
len1=strlen(a);
len2=strlen(b);
len=
len1
>
len2
?
len1
:
len2
;
carry=0;
for(
i=0;
i<len;
i++)
{
if(
i
<
len1
&&
i
<
len2
)
{
c[len-1-i]
=
(
(
a[len1-1-i]
-
'0'
)
+
(
b[len2-1-i]
-
'0'
)
+
carry
)%10
+
'0';
carry
=
(
(
a[len1-1-i]
-
'0'
)
+
(
b[len2-1-i]
-
'0'
)
+
carry
)/10;
}
else
{
if(
i
<
len1
&&
i
>=
len2
)
{
c[len-1-i]
=
(
(
a[len1-1-i]
-
'0'
)
+
carry
)%10
+
'0';
carry
=
(
(
a[len1-1-i]
-
'0'
)
+
carry
)/10;
}
if(
i
>=
len1
&&
i
<
len2
)
{
c[len-1-i]
=
(
(
b[len2-1-i]
-
'0'
)
+
carry
)%10
+
'0';
carry
=
(
(
b[len2-1-i]
-
'0'
)
+
carry
)/10;
}
}
}
if(
carry
>
0
)
{
for(
i=len;
i>0;
i--)
c[i]=c[i-1];
c[0]
=
carry
+
'0';
c[len+1]=0;
}
else
{
c[len]=0;
}
}
int
main()
{
char
a[maxlen],
b[maxlen],
c[maxlen];
printf("请输入第一个非负整数:
");
scanf("%s",a);
printf("请输入第二个非负整数:
");
scanf("%s",b);
fun(a,b,c);
printf("这两个数的和为:
%s\n",c);
return
0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式