如何根据数字位置拆分给定数字中的每个数字?

时间:2015-12-02 05:48:57

标签: c++

我在接受采访时被问到一个问题,即编写一个程序,根据数字位置拆分给定的数字。

输入:

12345

输出:

10000
2000
300
40
5

代码:

int n1, n2, n3, n4, n5;
int number;
cout<<"enter the number:\n";
cin>>number;

n1 = number%10;
number/=10;

n2 = number%10;
number/=10;

n3 = number%10;
number/=10;

n4 = number%10;
number/=10;

n5 = number%10;
number/=10;

cout<<n1<<endl;
cout<<n2*10<<endl;
cout<<n3*100<<endl;
cout<<n4*1000<<endl;
cout<<n5*10000<<endl;
return 1;

1 个答案:

答案 0 :(得分:1)

最好使用while循环,这样你就不必硬编码数字。您的代码是正确的,但我假设您需要以正确的顺序打印输出。您可以通过将其保存在数组中来完成此操作。不是通过将每个数字乘以10,100,1000等来指定每个位置,而是在计算数字时可以看到10的幂对应于每个索引。

int number;
int digits[100];
int numDigits=0;
cin>>number;
while(number>0){
    digits[numDigits]=number%10; //Modulo ten to get the current digit
    for(int i=0; i<numDigits; i++){  //Loop through whatever digit you are on to retain the place 
        digits[numDigits]*=10;
    }
    number/=10;  //Divide by ten to get the next digit at the front
    numDigits++;  //Increment the number of digits by one
}
for(int i=numDigits-1; i>=0; i--){  //Print out the digits of the number backwards for desired output
    cout<<digits[i]<<endl; 
}