首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言函數實現整數計算機:掃描運算式並分發運算邏輯

     編輯:關於C語言

C 語言函數實現整數計算機:掃描運算式並分發運算邏輯

本文實現一個接收三個參數的計算函數:運算符選項(-a/-s/-m/-d)與兩個操作數。主程式掃描用戶輸入的算式(如 5+3),將運算符映射為選項字串,再呼叫計算函數。

一、 計算核心函數

int my_math(char *op, int num1, int num2) {
    assert(op);
    if (strcmp(op, "-a") == 0) return num1 + num2;
    if (strcmp(op, "-s") == 0) return num1 - num2;
    if (strcmp(op, "-m") == 0) return num1 * num2;
    if (strcmp(op, "-d") == 0) {
        if (num2 == 0) { fprintf(stderr, "Divide by zero\n"); return 0; }
        return num1 / num2;
    }
    return 0; // 未知運算符
}

關鍵:字符串比較用 strcmp、除零防護。

二、 主程式:運算符映射

int main() {
    int num1, num2; char op;
    printf("請輸入算式(如 5+3):");
    scanf("%d%c%d", &num1, &op, &num2); // 讀取 5+3

    char *opt = "";
    switch (op) {
        case '+': opt = "-a"; break;
        case '-': opt = "-s"; break;
        case '*': opt = "-m"; break;
        case '/': opt = "-d"; break;
        default:  opt = "\0";
    }
    int result = my_math(opt, num1, num2);
    printf("%d%c%d=%d\n", num1, op, num2, result);
    return 0;
}

三、 測試樣例

輸入:10+5   輸出:10+5=15
輸入:10-3   輸出:10-3=7
輸入:6*7    輸出:6*7=42
輸入:20/4   輸出:20/4=5
輸入:5/0    輸出:Divide by zero / 5/0=0

四、 易錯點總結

  1. scanf("%d%c%d") 中 %c 會讀取運算符,但若輸入有空格需用 %d %c %d。
  2. 字符串字面值 "-a" 類型為 const char*,函數參數宜用 const char*。
  3. switch 內 break 不可漏,否則貫穿導致邏輯錯誤。

五、 擴展方向

  • 支援多位數、負數、浮點數(%lf + double)。
  • 解析完整表達式(含優先級、括號),用遞歸下降或 Shunting-yard 演算法。
  • 命令列參數模式:./calc -a 10 5 直接解析 argv。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved