我想将一个像 123456 这样的数字放入一个数字数组中。你能给我一个过程的提示吗?我可以定义一个元素数量未知的数组吗?
问问题
31335 次
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
这是步骤。首先,获取存储数字中所有数字所需的大小——对数组进行 malloc。接下来,取数字的模数,然后将数字除以 10。继续这样做,直到用完数字中的所有数字。
于 2013-09-09T05:00:16.153 回答