有时我们需要计算很长的数字,这些数字不能保存C的任何数值数据类型。我们知道所有常见的数值数据类型都有局限性。
我是初学者,我认为......有可能是字符串。我的问题是:
如何添加两个字符串?
示例输入:
字符串1:1234
字符串2:1234
的输出
结果:2468
[注意:字符串中的数字可能非常长。无限制]
答案 0 :(得分:3)
不转换为数字。相反,你必须在基本教育中学习:一次一对数字,从最低(最右边)开始,记得向前(向左)。
源字符串的长度无关紧要,但您必须确保结果char数组足够大,以便最长输入值加上一个(可选)数字。
算法非常简单,我将不“输入代码”(这是Stack Overflow的主题)。归结为
carryOver = 0
loop:
result0 = inputA0 + inputB0 + carryOver
if result0 > '9'
carryOver = 1
result0 -= 10
else
carryOver = 0
go to loop while there is still input left ...
其中变量名中的0
表示正在考虑的当前数字的索引。
答案 1 :(得分:0)
编辑此答案不允许随身携带,但无限长添加操作。它没有解决用户的问题。但它是一个实现示例,用户要求一个。这就是为什么我会让答案留在这里而不是删除它。
你可以使用atoi(ascii to int)
你真的是指C或C ++吗?
此代码无法计算8 + 3 = 11但5 + 3 = 8.没有结转。
int temp;
const inst size_of_array;
char one[size_of_array];
char two[size_of_array];
char result[size_of_array];
for(int i = 0; i < size_of_array; i++)
{
temp = atoi(one[i]) +atoi(two[i]);
results[i] = numberToCharacter(temp);
}
char numberToCharacter((int temp)
{
if(temp == 1)
{
return('1'):
} ///..
}
答案 2 :(得分:-3)
将字符串变量解析为整数变量。计算它们的总和,然后将结果解析为字符串。
<强> Here is a fiddler. 强>
以下是代码:
#include <stdio.h>
int main(void) {
//Declaring string variables
char string1[10] = "1234";
char string2[10] = "1234";
//Converting them to integer
int int1 = atoi(string1);
int int2 = atoi(string2);
//Summing them
int intResult = int1 + int2;
//Printing the result
printf("%d", intResult);
return 0;
}