4

我有一个整数数组

int number[] = {1,2,3,4};

我该怎么做才能得到 int x = 1234?我需要它的ac版本。

4

7 回答 7

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) - 但这几乎是您的问题所暗示的。仍然 - 好的编程需要检查、检查和检查。不过,我相信您可以自己添加该位。

于 2013-05-10T02:50:28.590 回答
2

您可以考虑如何通过乘以 10 将数字“移到”左侧。您可以考虑通过在班次后添加来附加一个数字。

所以你有效地结束了你做的循环total *= 10然后total += number[i]

当然,这仅在您的数组是数字时才有效,如果它是您想要做的字符,number[i] - '0'并且如果它位于不同的基数中,您将想要乘以不同的数字(例如,如果它是八进制,则为 8)。

于 2013-05-10T02:52:22.280 回答
2
int i = 0, x = 0;
for(; i < arrSize; i++)
    x = x * 10 + number[i];

x是结果。

于 2013-05-10T02:52:31.587 回答
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;
于 2013-05-10T02:58:50.807 回答
2
int i;
int x = 0;
for ( i = 0; i < 4; i++ )
    x = ( 10 * x + number[i] );
于 2013-05-10T02:53:03.147 回答
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;
于 2013-05-10T02:51:24.140 回答
1

答案很简单。在这里列出一个完整的功能。

int toNumber(int number[],arraySize)
{
   int i;
   int value = 0;
   for(i = 0;i < arraySize;i++)
   {
      value *=10;
      value += number[i];
   }
   return value;
}
于 2013-05-10T02:53:22.067 回答