基礎版:分別輸入兩數
#include <stdio.h>
int main() {
int a, b, sum;
printf("請輸入加數 a 和被加數 b:");
scanf("%d %d", &a, &b);
sum = a + b;
printf("運算結果:%d + %d = %d\n", a, b, sum);
return 0;
}
進階版:解析 "1+2" 格式字串
#include <stdio.h>
#include <stdlib.h>
int main() {
char expr[100];
printf("請輸入算式 (如 1+2):");
scanf("%99s", expr); // 讀取無空格字串
char *plus = strchr(expr, '+');
if (!plus) { puts("格式錯誤:缺少 +"); return 1; }
*plus = '\0'; // 分割為兩個子串
int a = atoi(expr);
int b = atoi(plus + 1);
printf("%s + %s = %d\n", expr, plus + 1, a + b);
return 0;
}
健壯版:支援減乘除、空白、錯誤處理
double calc(const char *expr) {
// 簡易遞歸下降解析器 (支援 + - * / 括號)
// 此處略,完整實現參考「TinyExpr」單文件庫
return 0;
}
關鍵函數說明
strchr(s, '+'):查找 '+' 位置,返回指標。
atoi(s):字串轉整數,**不檢查錯誤** (非數字返回 0)。
strtol(s, &end, 10):**推薦**,可檢測 end 是否指向末尾,判斷轉換是否完整。