-1

我想将一个像 123456 这样的数字放入一个数字数组中。你能给我一个过程的提示吗?我可以定义一个元素数量未知的数组吗?

4

5 回答 5

7

首先计算位数

int count = 0;
int n = number;

while (n != 0)
{
    n /= 10;
    cout++;
}

现在初始化数组并分配大小:

if(count!=0){
   int numberArray[count];

   count = 0;    
   n = number;

   while (n != 0){
       numberArray[count] = n % 10;
       n /= 10;
       count++;
   }
}
于 2013-09-09T05:01:02.460 回答
2

如果您不介意char用作数组元素类型,可以使用snprintf()

char digits[32];
snprintf(digits, sizeof(digits), "%d", number);

'0'但是,每个数字都将表示为字符值'9'。要获得整数值,请将字符值减去'0'

int digit_value = digits[x] - '0';
于 2013-09-09T05:00:48.157 回答
0

“我可以定义一个元素数量未知的数组吗?”

如果数字太大,您可以将其作为字符串输入,然后从中提取数字

类似于以下内容:

char buf[128];
int *array;
//fscanf(stdin,"%s",buf);

array = malloc(strlen(buf) * sizeof(int)); //Allocate Memory
int i=0;
do{
 array[i] = buf[i]-'0'; //get the number from ASCII subtract 48
 }while(buf[++i]); // Loop till last but one 
于 2013-09-09T05:13:39.993 回答
0
int x[6];
int n=123456;
int i=0;
while(n>0){
   x[i]=n%10;
   n=n/10;
   i++;
}
于 2013-09-09T04:58:59.073 回答
-2

这是步骤。首先,获取存储数字中所有数字所需的大小——对数组进行 m​​alloc。接下来,取数字的模数,然后将数字除以 10。继续这样做,直到用完数字中的所有数字。

于 2013-09-09T05:00:16.153 回答