69,382
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
int _my_add(int,int);
int _my_sub(int,int);
int _my_mul(int,int);
int _my_div(int,int);
int _my_mod(int,int);
unsigned long (*_my_function(void))[2];
int main(void)
{
int number_one;
int number_two;
int number_control;
int result;
unsigned long (*temp_buffer)[2];
temp_buffer = _my_function();
while(1)
{
printf("这是一个简单的计算器,主要有下面的功能!\n");
printf(" 1:加\n 2:减\n 3:乘\n 4:除\n 5:求模\n");
printf("请输入第一操作数 第二操作数 相关运算\n");
scanf("%d %d %d",&number_one,&number_two,&number_control);
if(((number_control == 4) && (!(number_two | 0x0)))|| number_control > 5)
{
printf("input is err\n");
continue;
}
result = ((int (*) (int,int))(*(*(temp_buffer + number_control - 1) + 0)))(number_one,number_two);
printf("\n%d %c %d = %d\n\n",number_one,*(*(temp_buffer + number_control - 1) + 1),number_two,result);
}
return 0;
}
unsigned long (*_my_function(void))[2]
{
unsigned long (*function_buffer)[2];
function_buffer = (unsigned long(*)[2])malloc(5);
*(*(function_buffer + 0) + 0) = (unsigned long) _my_add;
*(*(function_buffer + 0) + 1) = '+';
*(*(function_buffer + 1) + 0) = (unsigned long) _my_sub;
*(*(function_buffer + 1) + 1) = '-';
*(*(function_buffer + 2) + 0) = (unsigned long) _my_mul;
*(*(function_buffer + 2) + 1) = '*';
*(*(function_buffer + 3) + 0) = (unsigned long) _my_div;
*(*(function_buffer + 3) + 1) = '/';
*(*(function_buffer + 4) + 0) = (unsigned long) _my_mod;
*(*(function_buffer + 4) + 1) = '%';
return function_buffer;
}
int _my_add(int number_one,int number_two)
{
return number_one + number_two;
}
int _my_sub(int number_one,int number_two)
{
return number_one - number_two;
}
int _my_mul(int number_one,int number_two)
{
return number_one * number_two;
}
int _my_div(int number_one,int number_two)
{
return number_one / number_two;
}
int _my_mod(int number_one,int number_two)
{
return number_one % number_two;
}
#include <stdio.h>
int main()
{
char op = '!';
int x = 0,y = 0;
while(op != 'x')
{
printf("输入算式后回车如:1+2(输入xxx退出): \n");
scanf("%d %c %d",&x,&op,&y);
if(op == '+')
{
printf("结果 = %d \n",x+y);
}
else if(op == '-')
{
printf("结果 = %d \n",x-y);
}
else if(op == '*')
{
printf("结果 = %d \n",x*y);
}
else if(op == '/')
{
printf("结果 = %d \n",x/y);
}
else if(op != '!')
{
return 0;
}
}
return 1;
}