C++ 程序,其中,从用户读取一个六位整数作为输入,并通过 for/ While 循环输出它的每个数字
C++ program in which, read a six digit integer as input from user and output each of its digit in words by for/ While loop
/写一个C++程序,从用户那里读取一个六位整数作为输入,并使用循环输出它的每一位数字。/
#include <iostream>
using namespace std;
int main()
{
int number, last_number, count = 0;
cout << "Please enter a six digit number:" << endl;
cin >> number;
while (count < 6)
{
last_number = number % 10;
if (last_number == 0)
cout << "Zero ";
else if (last_number == 1)
cout << "One ";
else if (last_number == 2)
cout << "Two ";
else if (last_number == 3)
cout << "Three ";
else if (last_number == 4)
cout << "Four ";
else if (last_number == 5)
cout << "Five ";
else if (last_number == 6)
cout << "six ";
else if (last_number == 7)
cout << "Seven ";
else if (last_number == 8)
cout << "Eight ";
else if (last_number == 9)
cout << "Nine ";
number = number / 10;
count++;
}
cout << endl;
return 0;
}
当我 运行 程序输出相反的值时,例如我想打印 123456 而不是输出一二三四五六它输出六五四三二一。我该如何解决这个问题?
由于数字是从右向左分解的,因此显示的输出是相反的。
有几种方法可以解决这个问题,即您可以使用堆栈来推送输出值并以正确的顺序获取它们。您还可以创建一个字符串,例如
string number = "";
number = last_number + " " + number;
你逻辑中的问题是 last_number = number % 10;
因为当你除以数字时你得到最后一个元素,例如如果你将 12345 除以 10 你将得到 5 作为余数,这就是问题出现的地方尝试使用字符串和 for 循环会更容易
#include <iostream>
using namespace std;
int main()
{
string number;
cout << "Please enter a six digit number" << endl;
cin >> number;
for (int i = 0; i < number.length(); i++)
{
if (number[i] == '0')
cout << "Zero ";
else if (number[i] == '1')
cout << "One ";
else if (number[i] == '2')
cout << "Two ";
else if (number[i] == '3')
cout << "Three ";
else if (number[i] == '4')
cout << "Four ";
else if (number[i] == '5')
cout << "Five ";
else if (number[i] == '6')
cout << "six ";
else if (number[i] == '7')
cout << "Seven ";
else if (number[i] == '8')
cout << "Eight ";
else if (number[i] == '9')
cout << "Nine ";
}
return 0;
}
last_number=number%10
这行代码给出数字除以 10 后的余数。因此 123%10 将给出 last_number=3。
使用字符串的答案是正确的。但是,如果你想使用整数,这里有另一种使用递归的方法:
#include<iostream>
using namespace std;
void print_digit(int last_number){
if (last_number == 0)
cout << "Zero ";
else if (last_number == 1)
cout << "One ";
else if (last_number == 2)
cout << "Two ";
else if (last_number == 3)
cout << "Three ";
else if (last_number == 4)
cout << "Four ";
else if (last_number == 5)
cout << "Five ";
else if (last_number == 6)
cout << "six ";
else if (last_number == 7)
cout << "Seven ";
else if (last_number == 8)
cout << "Eight ";
else if (last_number == 9)
cout << "Nine ";
}
void get_digits(int number){
if(number<10){
print_digit(number);
return;
}
get_digits(number/10);
print_digit(number%10);
}
int main(){
int number=12345;
get_digits(number);
}
如果您不想使用递归,可以使用与现在相同的逻辑并将 last_number 值存储在堆栈中。您可以找到更多方法here
你得到的结果是倒序的,因为你是通过模数运算 (%) 从末尾提取每个数字。
为了得到正确顺序的答案,您可以先反转原始数字,然后使用您正在使用的相同逻辑。
....
cin >> number;
int tmp_number = 0; //temporary number to store reverse value of "number"
while ( number > 0 )
{
tmp_number = tmp_number * 10 + number % 10;
number = number / 10;
}
number = tmp_number;
while (count < 6)
....
/写一个C++程序,从用户那里读取一个六位整数作为输入,并使用循环输出它的每一位数字。/
#include <iostream>
using namespace std;
int main()
{
int number, last_number, count = 0;
cout << "Please enter a six digit number:" << endl;
cin >> number;
while (count < 6)
{
last_number = number % 10;
if (last_number == 0)
cout << "Zero ";
else if (last_number == 1)
cout << "One ";
else if (last_number == 2)
cout << "Two ";
else if (last_number == 3)
cout << "Three ";
else if (last_number == 4)
cout << "Four ";
else if (last_number == 5)
cout << "Five ";
else if (last_number == 6)
cout << "six ";
else if (last_number == 7)
cout << "Seven ";
else if (last_number == 8)
cout << "Eight ";
else if (last_number == 9)
cout << "Nine ";
number = number / 10;
count++;
}
cout << endl;
return 0;
}
当我 运行 程序输出相反的值时,例如我想打印 123456 而不是输出一二三四五六它输出六五四三二一。我该如何解决这个问题?
由于数字是从右向左分解的,因此显示的输出是相反的。 有几种方法可以解决这个问题,即您可以使用堆栈来推送输出值并以正确的顺序获取它们。您还可以创建一个字符串,例如
string number = "";
number = last_number + " " + number;
你逻辑中的问题是 last_number = number % 10;
因为当你除以数字时你得到最后一个元素,例如如果你将 12345 除以 10 你将得到 5 作为余数,这就是问题出现的地方尝试使用字符串和 for 循环会更容易
#include <iostream>
using namespace std;
int main()
{
string number;
cout << "Please enter a six digit number" << endl;
cin >> number;
for (int i = 0; i < number.length(); i++)
{
if (number[i] == '0')
cout << "Zero ";
else if (number[i] == '1')
cout << "One ";
else if (number[i] == '2')
cout << "Two ";
else if (number[i] == '3')
cout << "Three ";
else if (number[i] == '4')
cout << "Four ";
else if (number[i] == '5')
cout << "Five ";
else if (number[i] == '6')
cout << "six ";
else if (number[i] == '7')
cout << "Seven ";
else if (number[i] == '8')
cout << "Eight ";
else if (number[i] == '9')
cout << "Nine ";
}
return 0;
}
last_number=number%10
这行代码给出数字除以 10 后的余数。因此 123%10 将给出 last_number=3。
使用字符串的答案是正确的。但是,如果你想使用整数,这里有另一种使用递归的方法:
#include<iostream>
using namespace std;
void print_digit(int last_number){
if (last_number == 0)
cout << "Zero ";
else if (last_number == 1)
cout << "One ";
else if (last_number == 2)
cout << "Two ";
else if (last_number == 3)
cout << "Three ";
else if (last_number == 4)
cout << "Four ";
else if (last_number == 5)
cout << "Five ";
else if (last_number == 6)
cout << "six ";
else if (last_number == 7)
cout << "Seven ";
else if (last_number == 8)
cout << "Eight ";
else if (last_number == 9)
cout << "Nine ";
}
void get_digits(int number){
if(number<10){
print_digit(number);
return;
}
get_digits(number/10);
print_digit(number%10);
}
int main(){
int number=12345;
get_digits(number);
}
如果您不想使用递归,可以使用与现在相同的逻辑并将 last_number 值存储在堆栈中。您可以找到更多方法here
你得到的结果是倒序的,因为你是通过模数运算 (%) 从末尾提取每个数字。
为了得到正确顺序的答案,您可以先反转原始数字,然后使用您正在使用的相同逻辑。
....
cin >> number;
int tmp_number = 0; //temporary number to store reverse value of "number"
while ( number > 0 )
{
tmp_number = tmp_number * 10 + number % 10;
number = number / 10;
}
number = tmp_number;
while (count < 6)
....