將兩個獨立程序(加法、求最大值)合并為一個,啟動后輸入選項執行對應功能。
#include <stdio.h>
#include <stdlib.h>
int add(int a, int b) { return a + b; }
int max(int a, int b) { return a > b ? a : b; }
int main() {
int choice, a, b;
while (1) {
printf("\n=== Menu ===\n1. Add\n2. Max\n0. Exit\nChoice: ");
if (scanf("%d", &choice) != 1) { // 輸入非數字
scanf("%*s"); // 清理緩衝區
continue;
}
if (choice == 0) break;
printf("Input a b: ");
scanf("%d %d", &a, &b);
switch (choice) {
case 1: printf("Result: %d\n", add(a, b)); break;
case 2: printf("Result: %d\n", max(a, b)); break;
default: printf("Invalid choice\n");
}
}
return 0;
}
main 僅負責交互調度。while(1) + break 實現循環菜單。scanf 返回值檢查防止非數字輸入導致死循環。case 分支,符合開閉原則。