所以我有一个带数字的函数,我们只是说123用于测试目的,并通过将每个数字插入数组中的一个位置将其转换为数组。我的问题是:它向后做。因此,在这种情况下,123将打印为321.有关如何更改此问题的任何想法?
int i = 0;
while (number) {
array[i] = number % 10;
number /= 10;
printf("%llu", array[i]);
i++;
}
答案 0 :(得分:5)
那是因为你在数字和10之间取了除数的余数,所以你要把最后一位数字插入到数组的第一个位置,依此类推。
您可以使用递归函数以您希望的方式填充数组。尝试这样的事情:
void
fillArray (int array[], int *i, int number) {
if (number < 10 ) {
array[*i] = number;
*i = *i +1;
} else {
fillArray (array, i, number/10);
array[*i] = number%10;
*i = *i +1;
}
}
最后,在i中你将拥有数组的大小。你应该像这样调用函数:
int array[100];
int i = 0;
int n = 123;
fillArray (array,&i,n);
答案 1 :(得分:2)
您可以随时反转数组,看完转换完成时的长度。
答案 2 :(得分:0)
我对如何更改它的想法:使用标准函数itoa()
。如果这不是一个选项,您至少应该阅读itoa()
。
答案 3 :(得分:0)
你也可以采取其他方式。 取第二个给定数字的log(n)。
enter code here
int nd,f,i = 0;
ND = LOG10(n)的
F = POW(10,ND);
while(n)
{
array[i++]=n/f;
n=n%f;
}