将数字转换为单词

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;
    }
}