如何在按下代表运算符的按键之前显示第一个数,按下代表运算符的按键之后显示第二个数,在按下代表“=”的按键后显示计算结果?

利用独立键盘和矩阵键盘设计简易计算器,S2代表置零,S6到S15代表数字0到9,S16代表删除(如某一个数字输入错误可以删除,123删除一位变为12),S17代表等于,S18到S21分别代表加减乘除。要求可以实现对整数的加减乘除运算(输入数字及计算结果的数值不超过65535)并在数码管上正确显示。在按下代表运算符的按键之前显示第一个数,按下代表运算符的按键之后显示第二个数,在按下代表“=”的按键后显示计算结果。

回答不易,求求您采纳点赞哦

要使用独立键盘和矩阵键盘设计一个简单的计算器,您可以按照以下步骤操作:

初始化数码管显示屏显示0。

  • 当按下一个键时,检查它是否代表一个数字(S6 到 S15)或一个运算符(S18 到 S21)。
  • 如果该键代表一个数字,则将该数字与数码管显示的当前值连接起来。
  • 如果该键代表运算符,则将数码管显示的当前值存储为第一个数字和运算符。
  • 如果按键是S16,代表删除,删除数码管显示的数字的最后一位。
  • 当按下代表“=”的键时(S17),根据之前存储的运算符和数码管显示的当前值即第二个数进行计算。
  • 在数码管上显示计算结果。
    这是如何在 C# 中实现的示例:
// Initialize the digital tube display to show 0
string displayValue = "0";
string firstNumber = "0";
string operator = "";

// Handle key presses
private void HandleKeyPress(int keyCode) {
    switch (keyCode) {
        case S6:
        case S7:
        case S8:
        case S9:
        case S10:
        case S11:
        case S12:
        case S13:
        case S14:
        case S15:
            // Handle number key presses
            if (displayValue == "0") {
                displayValue = keyCode.ToString();
            } else {
                displayValue += keyCode;
            }
            break;
        case S16:
            if (displayValue.Length > 1) {
                displayValue = displayValue.Substring(0, displayValue.Length - 1);
            } else {
                displayValue = "0";
            }
            break;
        case S18:
        case S19:
        case S20:
        case S21:
            // Handle operator key presses
            firstNumber = displayValue;
            operator = keyCode.ToString();
            displayValue = "0";
            break;
        case S17:
            // Handle equal key press
            int result = 0;
            int secondNumber = int.Parse(displayValue);
            switch (operator) {
                case S18:
                    result = firstNumber + secondNumber;
                    break;
                case S19:
                    result = firstNumber - secondNumber;
                    break;
                case S20:
                    result = firstNumber * secondNumber;
                    break;
                case S21:
                    result = firstNumber / secondNumber;
                    break;
            }
            displayValue = result.ToString();
            break;
    }
    UpdateDigitalTube(displayValue);
}

这段代码是简化版,没有包括必要的范围检查和错误处理,还有关于数码管显示,您可能需要查看您使用的具体数码管的文档,了解如何更新其显示.

请记住,由于输入数字和计算结果的值不应超过 65535,因此您需要在执行计算之前检查范围,并通过错误消息或其他方式通知用户来妥善处理。