闲来无事,写了个简易计算器

来源:互联网 发布:centos yum 升级gcc 编辑:程序博客网 时间:2024/05/18 02:46
题目如下:

计算器能进行加、减、乘、除运算。要求从键盘输入指令及操作数,如:add 3 26//计算3+26的值,并返回结果

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int add(int x,int y)
{
return x+y;
}
int sub(int x,int y)
{
return x-y;
}
int mux(int x,int y)
{
return x*y;
}
int dive(int x,int y)
{
return x/y;
}
int process(int a,int b,int (*fun)(int a,int b))
{
int result=(*fun)(a,b);
return result;
}
int (*fun[4])(int ,int )={add,sub,mux,dive};//函数指针数组
char *p[4]={"add","sub","mux","dive"};
int main(int argc, char *argv[])
{
char *input[4];
int a=0,b=0,i=0;
int result=0;
char buf[20]="";//存放输入数据
char *cmd;//存放计算方式

while(1)
{
input[0]=NULL;
input[1]=NULL;
input[2]=NULL;
printf("请输入选择方式及数据\n");
i=0;
input[3]=NULL;
gets(buf);


input[i]=strtok(buf," ");
while(input[i]!=NULL)
{
i++;
input[i]=strtok(NULL," ");
}
cmd=input[0];
if(input[1]==NULL||input[2]==NULL)
{
printf("输入参数不够\n");
continue;
}
a=atoi(input[1]);
b=atoi(input[2]);

for(i=0;i<4;i++)
{
if(strcmp(cmd,p[i])==0)
{
result=process(a,b,fun[i]);
printf("result=%d\n",result);
break;
}
}
}
return 0;
}

0 0
原创粉丝点击