简单计算器功能实现
1. 基础写法
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void menu(void) {
printf("\n*****************\n");
printf("*****1. ADD *****\n");
printf("*****2. SUB *****\n");
printf("*****3. MUL *****\n");
printf("*****4. DIV *****\n");
printf("*****0. EXI *****\n");
printf("*****************\n");
printf("请输入:");
}
int add(int first, int second) {
return first + second;
}
int sub(int first, int second) {
return first - second;
}
int mul(int first, int second) {
return first * second;
}
int div(int first, int second) {
return first / second;
}
int main(void) {
int choice, first, second,result;
do {
menu();
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入两个整数:");
scanf("%d %d", &first, &second);
result = add(first, second);
printf("%d + %d = %d", first, second, result);
break;
case 2:
printf("请输入两个整数:");
scanf("%d %d", &first, &second);
result = sub(first, second);
printf("%d - %d = %d", first, second, result);
break;
case 3:
printf("请输入两个整数:");
scanf("%d %d", &first, &second);
result = mul(first, second);
printf("%d x %d = %d", first, second, result);
break;
case 4:
printf("请输入两个整数:");
scanf("%d %d", &first, &second);
result = div(first, second);
printf("%d / %d = %d", first, second, result);
break;
case 0:
printf("退出计算器");
break;
default:
printf("输入错误,请重新输入");
break;
}
} while (choice);
return 0;
}
2. 稍高级写法(转移表)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void menu(void) {
printf("\n*****************\n");
printf("*****1. ADD *****\n");
printf("*****2. SUB *****\n");
printf("*****3. MUL *****\n");
printf("*****4. DIV *****\n");
printf("*****0. EXI *****\n");
printf("*****************\n");
printf("请输入:");
}
int add(int first, int second) {
return first + second;
}
int sub(int first, int second) {
return first - second;
}
int mul(int first, int second) {
return first * second;
}
int div(int first, int second) {
return first / second;
}
int calculate(const int (*functionPointer)(int, int), int first, int second)
{
return functionPointer(first, second);
}
int main(void) {
int choice, first, second, result;
do {
menu();
scanf("%d", &choice);
if (choice > 4 || choice < 0) {
printf("输入错误请重新输入!");
continue;
}
printf("请输入两个整数:");
scanf("%d %d", &first, &second);
int(*functionPointer[4])(int, int) = {add, sub, mul, div};
if (choice != 0) {
printf("%d",calculate(functionPointer[choice - 1], first, second));
}
else {
printf("退出计算器");
continue;
}
} while (choice);
return 0;
}