<!DOCTYPE html>
<html>

<head>
    <style>
        .calculator {
            max-width: 300px;
            margin: 0 auto;
            border: 1px solid #ccc;
            padding: 10px;
        }

        .output {
            background-color: #f1f1f1;
            text-align: right;
            padding: 10px;
            margin-bottom: 10px;
        }

        .buttons {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 10px;
        }

        button {
            padding: 10px;
            font-size: 16px;
            background-color: #3498db;
            color: #fff;
            border: none;
            cursor: pointer;
            transition: background-color 0.3s ease;
        }

        button:hover {
            background-color: #2980b9;
        }
    </style>
</head>

<body>
    <div class="calculator">
        <div class="output" id="output">0</div>
        <div class="buttons">
            <button onclick="appendNumber('7')">7</button>
            <button onclick="appendNumber('8')">8</button>
            <button onclick="appendNumber('9')">9</button>
            <button onclick="appendOperator('+')">+</button>
            <button onclick="appendNumber('4')">4</button>
            <button onclick="appendNumber('5')">5</button>
            <button onclick="appendNumber('6')">6</button>
            <button onclick="appendOperator('-')">-</button>
            <button onclick="appendNumber('1')">1</button>
            <button onclick="appendNumber('2')">2</button>
            <button onclick="appendNumber('3')">3</button>
            <button onclick="appendOperator('*')">*</button>
            <button onclick="appendNumber('0')">0</button>
            <button onclick="appendNumber('.')">.</button>
            <button onclick="calculate()">=</button>
            <button onclick="appendOperator('/')">/</button>
            <button onclick="clearExpression()">C</button>
            <button onclick="backspace()">&#9003;</button>
        </div>
    </div>

    <script>
        let outputDiv = document.getElementById('output');
        let expression = '';

        function appendNumber(number) {
            expression += number;
            outputDiv.innerText = expression;
        }

        function appendOperator(operator) {
            if (expression.slice(-1) === '+' || expression.slice(-1) === '-' || expression.slice(-1) === '*' || expression.slice(-1) === '/') {
                expression = expression.slice(0, -1);
            }
            expression += operator;
            outputDiv.innerText = expression;
        }

        function calculate() {
            try {
                const result = eval(expression);
                expression = result.toString();
                outputDiv.innerText = expression;
            } catch (error) {
                // 处理错误
                expression = '';
                outputDiv.innerText = 'Error';
            }
        }

        function clearExpression() {
            expression = '';
            outputDiv.innerText = '0';
        }

        function backspace() {
            if (expression === '' || expression === '0') {
                return;
            }

            if (expression.length === 1) {
                expression = '0';
            } else {
                expression = expression.slice(0, -1);
            }
            outputDiv.innerText = expression;
        }
    </script>
</body>

</html>