阿摩線上測驗 登入

申論題資訊

試卷:100年 - 100年高等三級暨普通考普通_資訊處理#29521
科目:程式設計
年份:100年
排序:0

題組內容

一、請設計一程式,在輸入一個正整數四則運算式(只有加、減、乘、除四種運算,不 含括號)後,計算運算式並將結果輸出。假設所有運算一律採由左至右順序運算。 請注意:

申論題內容

⑴所有輸入運算式所含數值資料皆為正整數。

詳解 (共 1 筆)

詳解 提供者:hchungw
要處理這樣的問題,可以使用一個簡單的算法,逐步讀取輸入的算式,並按照從左至右的順序計算結果。在Python中,你可以使用內建的eval函數來完成這個任務,但是因為eval可以執行任意的Python代碼,所以它不安全。如果要寫一個安全的解析器,就需要檢查每個字符並手動進行計算。
以下是一個Python程序,它可以接收一個只包含正整數和四則運算符的算式,然後計算並返回結果。注意,這個實現假設輸入的算式格式是正確的,並且沒有包含除加、減、乘、除之外的其他字符。
python

def calculate(expression):
    index = 0
    current_number = 0
    operation = '+'
    result = 0
    stack = []
    while index < len(expression):
        char = expression[index]
        if char.isdigit():
            current_number = (current_number * 10) + int(char)
        
        if char in '+-*/' or index == len(expression) - 1:
            if operation == '+':
                stack.append(current_number)
            elif operation == '-':
                stack.append(-current_number)
            elif operation == '*':
                stack.append(stack.pop() * current_number)
            elif operation == '/':
                # Assuming integer division like in Python 2
                stack.append(int(float(stack.pop()) / current_number))
            
            current_number = 0
            operation = char
        
        index += 1
    
    result = sum(stack)
    return result
# Example usage:
expression = input("Enter an expression: ")
print("The result is:", calculate(expression))
如果你要用Java或C++來實作,過程大致相同,但是需要自己編寫解析輸入和進行計算的代碼,並且需要額外注意除法運算需要使用整數除法的規則。