我有一个整数数组
int number[] = {1,2,3,4};
我该怎么做才能得到int x = 1234? 我需要有一个c版本。
答案 0 :(得分:10)
x = 1000*number[0] + 100*number[1] + 10*number[2] + number[3];
这基本上是十进制数的工作方式。一个更通用的版本(当你不知道'数字'有多长时)将是:
int x = 0;
int base = 10;
for(int ii = 0; ii < sizeof(number); ii++) x = base*x + number[ii];
注意 - 如果base
不是10,则上述代码仍然有效。当然,如果你用通常的x
打印cout<<x
,你会得到一个令人困惑的答案。但它可能会在其他时间为你服务。当然,你真的想检查number[ii]
是否在0到9之间(包括0和9) - 但这几乎是你的问题所暗示的。仍然 - 良好的编程需要检查,检查和检查。我相信你可以自己添加这一点。
答案 1 :(得分:2)
您可以考虑如何通过乘以10将数字“移位”到左侧。您可以考虑通过在班次后添加来附加数字。
所以你有效地结束了一个循环,你total *= 10
然后total += number[i]
当然,这仅适用于您的数组是数字的情况,如果它是您想要执行的字符number[i] - '0'
,并且如果它位于不同的基础中,您将希望乘以不同的数字(8为实例,如果是八进制)。
答案 2 :(得分:2)
int i = 0, x = 0;
for(; i < arrSize; i++)
x = x * 10 + number[i];
结果是 x
。
答案 3 :(得分:2)
int i;
int x = 0;
for ( i = 0; i < 4; i++ )
x = ( 10 * x + number[i] );
答案 4 :(得分:2)
int number[]={1,2,3,4}
int x=0,temp;
temp=10;
for(i=0;i<number.length;i++)
{
x=x*temp+number[i];
}
cout>>x;
答案 5 :(得分:1)
你可以用for循环和10的幂来做某事
int tens = 1;
int final = 0;
for (int i = arrSize - 1; i <= 0; ++i)
{
final += tens*number[i];
tens*=10;
}
return final;
答案 6 :(得分:1)
答案很简单。只需在这里列出一个完整的功能。
int toNumber(int number[],arraySize)
{
int i;
int value = 0;
for(i = 0;i < arraySize;i++)
{
value *=10;
value += number[i];
}
return value;
}