我有一个整数数组
int number[] = {1,2,3,4};
我该如何将int x = 1234转换成C语言版本?
我有一个整数数组
int number[] = {1,2,3,4};
我该如何将int x = 1234转换成C语言版本?
x = 1000*number[0] + 100*number[1] + 10*number[2] + number[3];
这基本上是十进制数的工作原理。更一般的版本(当您不知道'number'有多长时)如下:
int x = 0;
int base = 10;
for(int ii = 0; ii < sizeof(number); ii++) x = base*x + number[ii];
注意 - 如果base
不是10,上面的代码仍然可以工作。当然,如果您使用通常的cout<<x
打印出x
,您将得到令人困惑的答案。但在其他时候它可能会对您有用。当然,您确实希望检查number[ii]
是否在0到9之间(包括0和9)- 但这在您的问题中已经隐含了。不过,良好的编程需要检查、检查和再检查。我相信您可以自己添加这一部分内容。sizeof
在编译时计算,因此我认为没有额外开销。请参见https://dev59.com/cHE85IYBdhLWcg3wx2n2 - Florisint i = 0, x = 0;
for(; i < arrSize; i++)
x = x * 10 + number[i];
x
是结果。
int i;
int x = 0;
for ( i = 0; i < 4; i++ )
x = ( 10 * x + number[i] );
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;
total *= 10
,然后执行total += number[i]
。number[i] - '0'
,如果它是不同基数的数字,则需要乘以不同的数字(例如,如果它是八进制,则为8)。int tens = 1;
int final = 0;
for (int i = arrSize - 1; i <= 0; ++i)
{
final += tens*number[i];
tens*=10;
}
return final;
答案很简单。只需在此处列出完整的函数。
int toNumber(int number[],arraySize)
{
int i;
int value = 0;
for(i = 0;i < arraySize;i++)
{
value *=10;
value += number[i];
}
return value;
}