我对这个问题的作业已经通过,我想我在代码的某些部分使用数字数据类型完全误解了这个问题。所以我只是好奇如何在不使用数字数据类型的情况下解决加/减两个以字符串表示的数字的问题。对于数值数据类型,我指的是 int、double、long 等,所有内容都需要保持字符串形式。
最佳答案
这是一个函数,它将字符串格式的数字添加到 char
数组中,假设足够大并且与 a
和 b
:
char *add_numbers(char *dest, const char *a, const char *b) {
size_t lena = strlen(a);
size_t lenb = strlen(b);
size_t len = lena > lenb ? lena + 1 : lenb + 1;
char carry = 0;
dest[len] = '\0';
while (lena > 0 && lenb > 0) {
char digit = a[--lena] - '0' + b[--lenb] + carry;
carry = 0;
if (digit > '9') {
carry = 1;
digit -= 10;
}
dest[--len] = digit;
}
if (lenb > 0) {
lena = lenb;
a = b;
}
while (lena > 0) {
char digit = a[--lena] + carry;
carry = 0;
if (digit > '9') {
carry = 1;
digit -= 10;
}
dest[--len] = digit;
}
if (carry) {
dest[--len] = '1';
} else {
for (;; len++) {
dest[len - 1] = dest[len];
if (dest[len] == '\0')
break;
}
}
return dest;
}
没有int
、double
、long
、float
。数字不转换为数字格式,一次一位进行运算,以字符串格式进行操作。
关于c - 添加或减去表示为字符串的两个数字,而不使用 int、double、long、float 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40708444/