我想将整数转换为数组。我的目标是能够花很长时间,例如123456789...
,并创建一个数组,其中每个数字都包含一个点,如{1, 2, 3, 4, 5, 6, 7, 8, 9, ...}
。
我无法使用iota()
,因为我不被允许,而且我不想使用snprintf
,因为我不想打印数组。我只是想成功。
在考虑了一段时间之后,我想到的唯一解决方案是
i
i
有效地成为数字并将其传递给数组但是我觉得我这使得这个过于复杂,必须有一个更简单的方法来做到这一点。那么,我是否回答了我自己的问题,或者是否有更简单的方法?
答案 0 :(得分:1)
对于您的问题,这是一个迭代方法,我认为这个方法完美无缺
下面的代码被评论了!希望它有所帮助
#include <stdio.h>
int main()
{
// a will hold the number
int a=548763,i=0;
// str will hold the result which is the array
char str[20]= "";
// first we need to see the length of the number a
int b=a;
while(b>=10)
{
b=b/10;
i++;
}
// the length of the number a will be stored in variable i
// we set the end of the string str as we know the length needed
str[i+1]='\0';
// the while loop below will store the digit from the end of str to the
// the beginning
while(i>=0)
{
str[i]=a%10+48;
a=a/10;
i--;
}
// only for test
printf("the value of str is \"%s\"",str);
return 0;
}
如果您希望数组只存储整数,则只需要更改数组的类型str
并更改
str[i]=a%10+48;
到
str[i]=a%10;
答案 1 :(得分:1)
您只能使用1个循环:
#include <math.h>
int main() {
int number = 123456789;
int digit = floor(log10(number)) + 1;
printf("%d\n", digit);
int arr[digit];
int i;
for (i = digit; i > 0; i--) {
arr[digit-i] = (int)(number/pow(10,i-1)) % 10;
printf("%d : %d\n", digit-i, arr[digit-i]);
}
}