我在接受采访时被问到一个问题,即编写一个程序,根据数字位置拆分给定的数字。
输入:
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;
答案 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;
}