发布时间:2025-12-11 03:34:12 浏览次数:7
C语言计算器两种方法
//一般做法#include<stdio.h>#include<windows.h>//#include<assert.h>voidmenu(){printf("**************************\n");printf("****欢迎来到计算器页面****\n");printf("****1.add2.mul*****\n");printf("*****3.sub4.p1*****\n");printf("*****0.exit*****\n");printf("**************************\n");}intadd(intx,inty){returnx+y;}intmul(intx,inty){returnx*y;}intsub(intx,inty){returnx-y;}intp1(intx,inty){returnx/y;}intmain(){intn=1;menu();while(n){printf("请输入选项:\n");scanf("%d",&n);intx=0,y=0;/*printf("请输入两个整数!\n");scanf("%d%d",&x,&y);*///若将两个数字输入放在此处会出现输入错误时不能退出系统,而是显示“输入两个整数”的提示switch(n){case1:printf("请输入两个整数!\n");scanf("%d%d",&x,&y);printf("%d\n",add(x,y));break;case2:printf("请输入两个整数!\n");scanf("%d%d",&x,&y);printf("%d\n",mul(x,y));break;case3:printf("请输入两个整数!\n");scanf("%d%d",&x,&y);printf("%d\n",sub(x,y));break;case4:printf("请输入两个整数!\n");scanf("%d%d",&x,&y);printf("%d\n",p1(x,y));break;case0:printf("退出计算器!\n");break;default:printf("输入错误,请重新输入!\n");}}}//使用函数指针数组解决计算器问题#include<stdio.h>#include<windows.h>//#include<assert.h>voidmenu(){printf("**************************\n");printf("****欢迎来到计算器页面****\n");printf("****1.add2.mul*****\n");printf("*****3.sub4.p1*****\n");printf("*****0.exit*****\n");printf("**************************\n");}intadd(intx,inty){returnx+y;}intmul(intx,inty){returnx*y;}intsub(intx,inty){returnx-y;}intp1(intx,inty){returnx/y;}intmain(){intn=1;menu();while(n){printf("请输入选项:\n");scanf("%d",&n);int(*arr[5])()={0,add,mul,sub,p1};//转移表//定义一个函数指针数组,存放函数地址if(n>=0&&n<5){intx=0,y=0;printf("请输入两个整数:>\n");scanf("%d%d",&x,&y);printf("%d\n",(*arr[n])(x,y));//输出结果}else{printf("输入有误,请重新输入!\n");scanf("%d",&n);}}system("pause");return0;}两种方法相比,第一种相似代码较多,比较冗余;第二种代码简洁直观,程序效率高。