c++ - 试图通过输入字母退出C++程序

标签 c++

我编写了一个程序,该程序为用户输入的数字生成一个乘法表:

#include <iostream>
#include <iomanip>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
    char userSelection;
    int numForTable;
    int col;
    int row;

    do
    {
        cout << "Please enter a number for your multiplication table: " << endl;
        cin >> numForTable;

        while (numForTable < 1 || numForTable > 10)
        {
            cout << "Please enter a number between 1 & 10." << endl;
            cin >> numForTable;
        }

        cout << "\n"
             << "MULTIPLICATION TABLE: " << numForTable << "'s" << endl
             << "\n"
             << "    " << 1;

        for (col = 2; col <= numForTable; ++col)

            cout << "    " << col;
            cout << endl;
            cout << "   ----|";


        for (col = 2; col <= numForTable; ++col)

            cout << "----|";
            cout << endl;


        for (col = 1; col <= numForTable; ++col)
        {
            cout << setw(2) << col << "|";

            for (row = 1; row <= numForTable; ++row)

                cout << setw(4) << col * row << "|";
                cout << endl;
                cout << " -|----";

            for (row = 2; row <= numForTable - 1; ++row)

                cout << "|----";
                cout << "|----|";
                cout << endl;
        }
    }
    while (userSelection != 'q');

    return 0;
}
它会不断要求用户输入一个数字,直到程序关闭为止,但我正在尝试这样做,以便在用户输入任何字母字母后再显示诸如“祝您有美好的一天”之类的消息时,程序会关闭

最佳答案

我完全用您的程序编写表,并且仅使机制在写表或退出程序之间切换。由于您的程序只为1-10之间的整数(即2-9)写表,因此我使用了char的ASCII码。这是代码。

#include <iostream>
#include <iomanip>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
    char userSelection;
    int numForTable;
    int col;
    int row;

    while(cin>>userSelection)
    {
        int numForTable = (int)userSelection - 48;
        
        if(numForTable<2 or numForTable > 9) //because the limit of the table is between 1-10, that is 2-9
        {
            cout<<"Have a nice day"<<endl;
            return 0;
        }
        
        else
        {
            cout << "\n"
             << "MULTIPLICATION TABLE: " << numForTable << "'s" << endl
             << "\n"
             << "    " << 1;

            for (col = 2; col <= numForTable; ++col)
    
                cout << "    " << col;
                cout << endl;
                cout << "   ----|";


            for (col = 2; col <= numForTable; ++col)
    
                cout << "----|";
                cout << endl;


            for (col = 1; col <= numForTable; ++col)
            {
                cout << setw(2) << col << "|";

                for (row = 1; row <= numForTable; ++row)
    
                    cout << setw(4) << col * row << "|";
                    cout << endl;
                    cout << " -|----";
    
                for (row = 2; row <= numForTable - 1; ++row)
    
                    cout << "|----";
                    cout << "|----|";
                    cout << endl;
            }
        }
    }
    
    return 0;
}
首先,它将char输入更改为ASCII码,然后检查数字是否介于2到9之间,然后根据它执行程序。如果我有任何错误,请纠正我。

关于c++ - 试图通过输入字母退出C++程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64420684/

相关文章:

C++ 类未正确初始化

c++ - Gcc 自定义运算符 new[] 和 delete[] 对对齐的类有问题 - addresssanitizer 报告缓冲区溢出

c++ - 旋转矩阵不是真正对称的(OpenCV)

C++ 20 概念/Requires 子句

c++ - 实例化模板时是否必须显式显示参数包中的类型?

用于模板基类的 C++ STL 容器

c++ - 如何在 C++ 的不同函数中实现重定向标准输入?

C++ 函数 std::pow() 返回 inf 而不是值

c++ - Vim, C++, 查找成员函数

c++ - 未声明的标识符,超出范围? (使用 C++ 列表)