今天接受采访,我被问到以下问题 - 给定两个字符数组 arr1
和 arr2
,它们只包含数字和一个点,并给出一个值m
,将它们相加成一个字符数组,其中点后包含 m
位数字。该程序应使用 C
编写。算法对他们来说并不重要,他们只是给了我一个编译器和 20 分钟的时间来通过他们的测试。
首先我想找到最大长度并从末尾开始遍历数组并在保持进位的同时对值求和:
int length = (firstLength < secondLength) ? secondLength : firstLength;
char[length] result;
for (int i = length - 1; i >= 0; i--) {
// TODO: add code
}
问题是出于某种原因,我不确定在保持点的同时执行该总和的正确方法是什么。这个循环应该只执行外观而不是与 k
相反。我的意思是,此时我只想添加值,最后我将插入另一个循环,该循环将在点后打印 k
值。
我的问题是应该如何看待我提到的第一个循环(实际求和的循环),我真的被困住了。
最佳答案
The algorithm was not important
好的,在那种情况下,我会让 libc
为我做这件事(显然缺少错误处理):
void sum(char *as, char *bs, char *out, int precision)
{
float a, b;
sscanf(as, "%f", &a);
sscanf(bs, "%f", &b);
a += b;
sprintf(out, "%.*f", precision, a);
}
关于c - 在两个 digis 数组之间执行求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57383419/