我想将基数n的数字x转换为字符串并将其存储在str中。 str 的最大尺寸为 max。在这个程序中我不想使用任何库函数。如果达到数组的最大大小,该函数应返回 false,并且数组内容应为未定义。
该函数的原型(prototype)如下所示:
bool num2str(int x, char *str, unsigned n, unsigned max);
我将如何去做这项工作?我无法理解其背后的算法。
我还需要检查n的值,但我已经这样做了:
bool num2str(int x, char *str, unsigned n, unsigned max)
{
assert(n >= 2 && n <= 36);
return true;
}
但这就是我能做的。请帮忙。
最佳答案
让我们取一个以 10 为基数的数字:123456。现在让我们使用该数字和以 10 为基数重复应用模数和整数除法:
123456 mod 10 = 6
123456 div 10 = 12345
12345 mod 10 = 5
12345 div 10 = 1234
如您所见,按基数取模会提取最后一位数字,而按基数除整数会将数字上的数字向右移动。您可以对任何基地执行相同的操作。希望这个提示足够了。
关于将数字转换为具有多个参数的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23991708/