我正在尝试将array [] = {1,2,3}转换为int number = 123;我怎么能这样做?
我的代码是:
int main()
{
int array[]={1,2,3};
int number;
for (int i =0; 3<i ; i++){
int val=1;
for(int j=0; j<i; j++ ){
val*=10;
}
number += array[i] *val;
}
cout<<number;
while(1);
return 0;
}
答案 0 :(得分:4)
你在错误的“方向”添加数字。要保持数字顺序,您需要将number
变量乘以10,然后添加array[i]
而不是乘以array[i]
并将其添加到number
。
在使用它之前,您还需要将number
初始化为零,因为变量具有随机值,直到明确给出它为止。
您还需要执行i < 3
(“i
小于3时循环”而不是3 < i
(“循环时3小于i
”,这从来都不是真的。)
int array[] = {1,2,3};
int number = 0;
for (int i = 0; i < 3; i++) {
number *= 10;
number += array[i];
}
cout << number;
让我们来看看会发生什么。
number
等于零。i
等于0。
number
乘以10.对于第一次迭代,number
之后仍为零。array[0]
(1)添加到number
。 Number
现在为1。i
现在递增并且等于1. 1小于3,所以我们再次进入循环体。
number
乘以10,以便为下一个数字腾出空间。 number
现在等于10。array[1]
(2)添加到number
。 Number
现在是12。i
增量并且等于2. 2小于3,所以我们重复。
number
乘以10,再次为下一个数字腾出空间。它现在是120。array[2]
(3)添加到number
,使其成为123,即期望的结果。i
递增并变为3. 3显然不小于3,所以我们退出循环。number
(123)打印到控制台。答案 1 :(得分:2)
我会使用溪流这样做,因为你的情况实际上是关于词法解释。
int number;
std::array<int, 3> arr { 1,2,3 };
std::stringstream ss;
for(int i : arr) ss << i;
ss >> number;
std::cout << number;
或当然如果您不需要号码本身,您可以使用std::cout
。
std::array<int, 3> arr { 1,2,3 };
for(int i : arr) std::cout << i;
答案 2 :(得分:1)
#include <iostream>
#include <cmath>
int main()
{
int numarray[] = {1,2,3};
int num = 0;
for(int i = 2; i>=0; i--)
{
num += numarray[2-i]*pow(10,i);
}
std::cout << num;
return 0;
}
将2替换为数字数组的最大大小(m)减去1,用于不同大小的数组。
答案 3 :(得分:0)
看起来你的第一个for
循环搞砸了。试试这个:
for (int i =0; i<3 ; i++){
int val=1;
for(int j=0; j<(3-i); j++ ){
val*=10;
}
number += array[i] *val;
}