我的教科书中有一个示例,其中包含以下代码和输入 / *一个程序,它取一个用户的四位整数,并显示数字 单独屏幕,即如果用户输入7531,则分别显示7,5,3,1。 * /
#include <iostream.h>
main()
{
// declare variables
int number, digit;
// prompt the user for input
cout << "Please enter 4-digit number:";
cin >> number;
// get the first digit and display it on screen
digit = number % 10;
cout << "The digits are: ";
cout << digit << ", ";
// get the remaining three digits number
number = number / 10;
// get the next digit and display it
digit = number % 10;
cout << digit << ", ";
// get the remaining two digits number
number = number / 10;
// get the next digit and display it
digit = number % 10;
cout << digit << ", ";
// get the remaining one digit number
number = number / 10;
// get the next digit and display it
digit = number % 10;
cout << digit;
}
以下给出了上述程序的样本输出。 请输入4位数字:5678 数字为:8,7,6,5
如何用循环方法解决它。
答案 0 :(得分:1)
循环执行相同的代码段零次或多次,具体取决于循环的条件。
如果你仔细检查你的代码,你会看到你重复基本相同的代码,四次:计算除法的余数为10,整数除以10,以及一些输出。
因此,简单地编写一个执行相同精确代码的循环似乎是合乎逻辑的,它只执行这些操作,但让循环执行这部分代码四次。
这就是你如何做到的。
答案 1 :(得分:0)
digit = number % 10;
cout << digit << ", ";
number = number / 10;
例如:
for(int i=0;i<4;i++){
digit = number % 10;
if(i!=3)
cout << digit << ", ";
else
cout << digit;
number = number / 10;
}
答案 2 :(得分:0)
获得等效输出您可以使用例如do-while循环
cout << "The digits are: ";
do
{
cout << number % 10;
} while ( ( number /= 10 ) && cout << ", " );
或者
do
{
cout << number % 10;
number /= 10;
if ( number ) cout << ", ";
} while ( number );
如果您想要输出正好四位数,只要该数字确实有四位数,那么您可以写
int i = 0;
do
{
cout << number % 10;
number /= 10;
if ( number ) cout << ", ";
} while ( ++i < 4 && number );
答案 3 :(得分:0)
您是否需要对整数执行除法?如果您将用户的输入作为字符串接受,则可以简单地迭代包含的字符,例如
string val;
cin >> val;
int len = val.length();
for(int i = len-1; i >= 0; --i){
cout << val[i]<<",";
}
当然,如果你事先知道了数字,你可以使用int
轻松完成int val;
cin >> val;
for(int i = 0; i < 4; ++i){
int digit = val % 10;
val /= 10;
cout << digit << ",";
}
如果您需要扩展解决方案以覆盖任意长度的int,则需要使用具有此条件的while循环
while(val > 0){
int digit = val % 10;
val /= 10;
cout << digit << ",";
}