将数字转换为单词
Converting Number into Words
我是 C++ 的初学者,我编写了一个程序来将数字打印成从 0 到 99 的单词。程序运行良好,除了 10-20 的数字输出错误。
#include<iostream>
using namespace std;
main()
{
int number,digit_1,digit_2;
cout<<"Please enter a number between 0-99: ";
cin >> number;
digit_1=number/10;
digit_2=number%10;
if(number>=10 && number<=19)
{
switch(number)
{
case 10: cout<<"Ten"; break;
case 11: cout<<"Eleven"; break;
case 12: cout<<"Twelve"; break;
case 13: cout<<"Thirteen"; break;
case 14: cout<<"Fourteen"; break;
case 15: cout<<"Fifteen"; break;
case 16: cout<<"Sixteen"; break;
case 17: cout<<"Seventeen"; break;
case 18: cout<<"Eighteen"; break;
case 19: cout<<"Nineteen"; break;
}
}
switch(digit_1)
{
case 2: cout<<"Twenty"; break;
case 3: cout<<"Thirty"; break;
case 4: cout<<"Forty"; break;
case 5: cout<<"Fifty"; break;
case 6: cout<<"Sixty"; break;
case 7: cout<<"Seventy"; break;
case 8: cout<<"Eighty"; break;
case 9: cout<<"Ninety"; break;
}
switch(digit_2)
{
case 0: cout<<" Zero"; break;
case 1: cout<<" One"; break;
case 2: cout<<" Two"; break;
case 3: cout<<" Three"; break;
case 4: cout<<" Four"; break;
case 5: cout<<" Five"; break;
case 6: cout<<" Six"; break;
case 7: cout<<" Seven"; break;
case 8: cout<<" Eight"; break;
case 9: cout<<" Nine"; break;
}
}
Output:-
Please enter a number between 0-99: 12
Twelve Two
我认为结果是对的。12在10到19之间,然后cout "Twelve"。digit_1是1,但不包括。digit_2是2,然后cout "Two".所以结果是"Twelve Two".
在第一次切换状态后你的程序不会停止执行解决方案:
using namespace std;
main()
{
int number,digit_1,digit_2;
cout<<"Please enter a number between 0-99: ";
cin >> number;
digit_1=number/10;
digit_2=number%10;
if(number>=10 && number<=19)
{
switch(number)
{
case 10: cout<<"Ten"; return 0;
case 11: cout<<"Eleven"; return 0;
case 12: cout<<"Twelve"; return 0;
case 13: cout<<"Thirteen"; return 0;
case 14: cout<<"Fourteen"; return 0;
case 15: cout<<"Fifteen"; return 0;
case 16: cout<<"Sixteen"; return 0;
case 17: cout<<"Seventeen"; return 0;
case 18: cout<<"Eighteen"; return 0;
case 19: cout<<"Nineteen"; return 0;
}
}
switch(digit_1)
{
case 2: cout<<"Twenty"; break;
case 3: cout<<"Thirty"; break;
case 4: cout<<"Forty"; break;
case 5: cout<<"Fifty"; break;
case 6: cout<<"Sixty"; break;
case 7: cout<<"Seventy"; break;
case 8: cout<<"Eighty"; break;
case 9: cout<<"Ninety"; break;
}
switch(digit_2)
{
case 0: cout<<" Zero"; break;
case 1: cout<<" One"; break;
case 2: cout<<" Two"; break;
case 3: cout<<" Three"; break;
case 4: cout<<" Four"; break;
case 5: cout<<" Five"; break;
case 6: cout<<" Six"; break;
case 7: cout<<" Seven"; break;
case 8: cout<<" Eight"; break;
case 9: cout<<" Nine"; break;
}
}
或
using namespace std;
main()
{
int number,digit_1,digit_2;
cout<<"Please enter a number between 0-99: ";
cin >> number;
digit_1=number/10;
digit_2=number%10;
if(number>=10 && number<=19)
{
switch(number)
{
case 10: cout<<"Ten"; break;
case 11: cout<<"Eleven"; break;
case 12: cout<<"Twelve"; break;
case 13: cout<<"Thirteen"; break;
case 14: cout<<"Fourteen"; break;
case 15: cout<<"Fifteen"; break;
case 16: cout<<"Sixteen"; break;
case 17: cout<<"Seventeen"; break;
case 18: cout<<"Eighteen"; break;
case 19: cout<<"Nineteen"; break;
}
}
else {
switch(digit_1)
{
case 2: cout<<"Twenty"; break;
case 3: cout<<"Thirty"; break;
case 4: cout<<"Forty"; break;
case 5: cout<<"Fifty"; break;
case 6: cout<<"Sixty"; break;
case 7: cout<<"Seventy"; break;
case 8: cout<<"Eighty"; break;
case 9: cout<<"Ninety"; break;
}
switch(digit_2)
{
case 0: cout<<" Zero"; break;
case 1: cout<<" One"; break;
case 2: cout<<" Two"; break;
case 3: cout<<" Three"; break;
case 4: cout<<" Four"; break;
case 5: cout<<" Five"; break;
case 6: cout<<" Six"; break;
case 7: cout<<" Seven"; break;
case 8: cout<<" Eight"; break;
case 9: cout<<" Nine"; break;
}
}
}
您在 "if" 块结束后缺少 "else" 语句。
如果数字在10到19之间,你想用第一个开关进入第一个区块。
否则,(即数字不在 10 和 19 之间)您想使用最后两个 switch 语句将数字分成数字。
你的问题是,如果现在数字在 10 到 19 之间,所有三个 switch 语句都将是 运行。第一个会落在 "Twelve",第二个不会打印任何东西,因为没有 "case 1:",第三个会打印 "Two".
用
包围最后两个开关块
else
{
switch(digit_1) {
//...
}
switch(digit_2) {
//...
}
}
switch (digit_1) {
case 1:
switch (digit_2) {
case 0: cout << "Ten"; break;
case 1: cout << "Eleven"; break;
case 2: cout << "Twelve"; break;
case 3: cout << "Thirteen"; break;
case 4: cout << "Fourteen"; break;
case 5: cout << "Fifteen"; break;
case 6: cout << "Sixteen"; break;
case 7: cout << "Seventeen"; break;
case 8: cout << "Eighteen"; break;
case 9: cout << "Nineteen"; break;
}
break;
case 2: cout << "Twenty"; break;
case 3: cout << "Thirty"; break;
case 4: cout << "Forty"; break;
case 5: cout << "Fifty"; break;
case 6: cout << "Sixty"; break;
case 7: cout << "Seventy"; break;
case 8: cout << "Eighty"; break;
case 9: cout << "Ninety"; break;
}
if (digit_1 != 1) {
if (digit_1) cout << " ";
switch (digit_2) {
case 0: if (!digit_1) cout << "Zero"; break;
case 1: cout << "One"; break;
case 2: cout << "Two"; break;
case 3: cout << "Three"; break;
case 4: cout << "Four"; break;
case 5: cout << "Five"; break;
case 6: cout << "Six"; break;
case 7: cout << "Seven"; break;
case 8: cout << "Eight"; break;
case 9: cout << "Nine"; break;
}
}
我是 C++ 的初学者,我编写了一个程序来将数字打印成从 0 到 99 的单词。程序运行良好,除了 10-20 的数字输出错误。
#include<iostream>
using namespace std;
main()
{
int number,digit_1,digit_2;
cout<<"Please enter a number between 0-99: ";
cin >> number;
digit_1=number/10;
digit_2=number%10;
if(number>=10 && number<=19)
{
switch(number)
{
case 10: cout<<"Ten"; break;
case 11: cout<<"Eleven"; break;
case 12: cout<<"Twelve"; break;
case 13: cout<<"Thirteen"; break;
case 14: cout<<"Fourteen"; break;
case 15: cout<<"Fifteen"; break;
case 16: cout<<"Sixteen"; break;
case 17: cout<<"Seventeen"; break;
case 18: cout<<"Eighteen"; break;
case 19: cout<<"Nineteen"; break;
}
}
switch(digit_1)
{
case 2: cout<<"Twenty"; break;
case 3: cout<<"Thirty"; break;
case 4: cout<<"Forty"; break;
case 5: cout<<"Fifty"; break;
case 6: cout<<"Sixty"; break;
case 7: cout<<"Seventy"; break;
case 8: cout<<"Eighty"; break;
case 9: cout<<"Ninety"; break;
}
switch(digit_2)
{
case 0: cout<<" Zero"; break;
case 1: cout<<" One"; break;
case 2: cout<<" Two"; break;
case 3: cout<<" Three"; break;
case 4: cout<<" Four"; break;
case 5: cout<<" Five"; break;
case 6: cout<<" Six"; break;
case 7: cout<<" Seven"; break;
case 8: cout<<" Eight"; break;
case 9: cout<<" Nine"; break;
}
}
Output:-
Please enter a number between 0-99: 12
Twelve Two
我认为结果是对的。12在10到19之间,然后cout "Twelve"。digit_1是1,但不包括。digit_2是2,然后cout "Two".所以结果是"Twelve Two".
在第一次切换状态后你的程序不会停止执行解决方案:
using namespace std;
main()
{
int number,digit_1,digit_2;
cout<<"Please enter a number between 0-99: ";
cin >> number;
digit_1=number/10;
digit_2=number%10;
if(number>=10 && number<=19)
{
switch(number)
{
case 10: cout<<"Ten"; return 0;
case 11: cout<<"Eleven"; return 0;
case 12: cout<<"Twelve"; return 0;
case 13: cout<<"Thirteen"; return 0;
case 14: cout<<"Fourteen"; return 0;
case 15: cout<<"Fifteen"; return 0;
case 16: cout<<"Sixteen"; return 0;
case 17: cout<<"Seventeen"; return 0;
case 18: cout<<"Eighteen"; return 0;
case 19: cout<<"Nineteen"; return 0;
}
}
switch(digit_1)
{
case 2: cout<<"Twenty"; break;
case 3: cout<<"Thirty"; break;
case 4: cout<<"Forty"; break;
case 5: cout<<"Fifty"; break;
case 6: cout<<"Sixty"; break;
case 7: cout<<"Seventy"; break;
case 8: cout<<"Eighty"; break;
case 9: cout<<"Ninety"; break;
}
switch(digit_2)
{
case 0: cout<<" Zero"; break;
case 1: cout<<" One"; break;
case 2: cout<<" Two"; break;
case 3: cout<<" Three"; break;
case 4: cout<<" Four"; break;
case 5: cout<<" Five"; break;
case 6: cout<<" Six"; break;
case 7: cout<<" Seven"; break;
case 8: cout<<" Eight"; break;
case 9: cout<<" Nine"; break;
}
}
或
using namespace std;
main()
{
int number,digit_1,digit_2;
cout<<"Please enter a number between 0-99: ";
cin >> number;
digit_1=number/10;
digit_2=number%10;
if(number>=10 && number<=19)
{
switch(number)
{
case 10: cout<<"Ten"; break;
case 11: cout<<"Eleven"; break;
case 12: cout<<"Twelve"; break;
case 13: cout<<"Thirteen"; break;
case 14: cout<<"Fourteen"; break;
case 15: cout<<"Fifteen"; break;
case 16: cout<<"Sixteen"; break;
case 17: cout<<"Seventeen"; break;
case 18: cout<<"Eighteen"; break;
case 19: cout<<"Nineteen"; break;
}
}
else {
switch(digit_1)
{
case 2: cout<<"Twenty"; break;
case 3: cout<<"Thirty"; break;
case 4: cout<<"Forty"; break;
case 5: cout<<"Fifty"; break;
case 6: cout<<"Sixty"; break;
case 7: cout<<"Seventy"; break;
case 8: cout<<"Eighty"; break;
case 9: cout<<"Ninety"; break;
}
switch(digit_2)
{
case 0: cout<<" Zero"; break;
case 1: cout<<" One"; break;
case 2: cout<<" Two"; break;
case 3: cout<<" Three"; break;
case 4: cout<<" Four"; break;
case 5: cout<<" Five"; break;
case 6: cout<<" Six"; break;
case 7: cout<<" Seven"; break;
case 8: cout<<" Eight"; break;
case 9: cout<<" Nine"; break;
}
}
}
您在 "if" 块结束后缺少 "else" 语句。
如果数字在10到19之间,你想用第一个开关进入第一个区块。
否则,(即数字不在 10 和 19 之间)您想使用最后两个 switch 语句将数字分成数字。
你的问题是,如果现在数字在 10 到 19 之间,所有三个 switch 语句都将是 运行。第一个会落在 "Twelve",第二个不会打印任何东西,因为没有 "case 1:",第三个会打印 "Two".
用
包围最后两个开关块else
{
switch(digit_1) {
//...
}
switch(digit_2) {
//...
}
}
switch (digit_1) {
case 1:
switch (digit_2) {
case 0: cout << "Ten"; break;
case 1: cout << "Eleven"; break;
case 2: cout << "Twelve"; break;
case 3: cout << "Thirteen"; break;
case 4: cout << "Fourteen"; break;
case 5: cout << "Fifteen"; break;
case 6: cout << "Sixteen"; break;
case 7: cout << "Seventeen"; break;
case 8: cout << "Eighteen"; break;
case 9: cout << "Nineteen"; break;
}
break;
case 2: cout << "Twenty"; break;
case 3: cout << "Thirty"; break;
case 4: cout << "Forty"; break;
case 5: cout << "Fifty"; break;
case 6: cout << "Sixty"; break;
case 7: cout << "Seventy"; break;
case 8: cout << "Eighty"; break;
case 9: cout << "Ninety"; break;
}
if (digit_1 != 1) {
if (digit_1) cout << " ";
switch (digit_2) {
case 0: if (!digit_1) cout << "Zero"; break;
case 1: cout << "One"; break;
case 2: cout << "Two"; break;
case 3: cout << "Three"; break;
case 4: cout << "Four"; break;
case 5: cout << "Five"; break;
case 6: cout << "Six"; break;
case 7: cout << "Seven"; break;
case 8: cout << "Eight"; break;
case 9: cout << "Nine"; break;
}
}