当前位置:网站首页>Using C language to complete a simple calculator (function pointer array and callback function)
Using C language to complete a simple calculator (function pointer array and callback function)
2022-07-06 08:47:00 【C tie Zhu】
This article mainly uses the method of function pointer array and callback function to write a simple calculator .
Function pointer method
#include <stdio.h>
void menu() // Print menu functions
{
printf("*******************\n");
printf("****1.add 2.sub****\n");
printf("****3.mul 4.div****\n");
printf("***** 0.exit ******\n");
printf("*******************\n");
}
int ADD(int x, int y) // Addition function
{
return x + y;
}
int SUB(int x, int y) // Subtraction function
{
return x - y;
}
int MUL(int x, int y) // Multiplication function
{
return x * y;
}
int DIV(int x, int y) // Division function
{
return x / y;
}
int main()
{
int a, b, ret,input;
int(*p[5])(int, int) = { 0,ADD,SUB,MUL,DIV };// Define an array of function pointers , Pass in the addresses of the four functions ,
do // In order to match the subscript of the calling function with the input value , Let's open up another space in front .
{
menu();
printf(" Please enter the option :\n");
scanf("%d", &input);
if (input == 0)
printf(" Exit calculator \n");
else if (input > 0 && input < 5)
{
printf(" Please enter two operands :\n");
scanf("%d%d", &a, &b);
ret = p[input](a, b); // Call the function through the pointer in the function pointer array .
printf(" The calculation result is :%d\n", ret);
}
else
printf(" Input error , Please re-enter !\n");
} while (input);
return 0;
}
When writing this code , We must first think about how to implement this program , First we need to print the menu of this calculator , Then according to the input number to determine what operation we do , After the calculation, we need to go back and choose again , And then calculate , repeat , So we can write one first do……while loop , Then enter the option , According to the input content, write what the program will execute , You can use it if Statement to implement , And when we choose to calculate , First, we need to input the two operands to be calculated , And then calculate , We found that , The parameter types and return types of these four functions are the same , Then we can create an array of function pointers , Put the addresses of the four functions in , You can then dereference to use these functions , Then we will write some measures if the input is wrong , It completes such a function .
Callback function method
#include <stdio.h>
void menu() // Print menu functions
{
printf("*******************\n");
printf("****1.add 2.sub****\n");
printf("****3.mul 4.div****\n");
printf("***** 0.exit ******\n");
printf("*******************\n");
}
int ADD(int x, int y) // Addition function
{
return x + y;
}
int SUB(int x, int y) // Subtraction function
{
return x - y;
}
int MUL(int x, int y) // Multiplication function
{
return x * y;
}
int DIV(int x, int y) // Division function
{
return x / y;
}
void calat(int(*pa)(int, int)) //calat The function parameter of is the address of the function ,
{ // Different function addresses , Call different functions
int ret,x,y;
printf(" Please enter two operands :");
scanf("%d%d", &x, &y);
ret = pa(x, y);
printf(" The calculation result is :%d\n", ret);
}
int main()
{
int a, b, ret, input;
do
{
menu();
printf(" Please enter the option :\n");
scanf("%d", &input);
switch (input)
{
case 0:
printf(" Exit calculation !\n");
break;
case 1:
calat(ADD); // Different input values , to calat Functions pass different function addresses .
break;
case 2:
calat(SUB);
break;
case 3:
calat(MUL);
break;
case 4:
calat(DIV);
break;
default:
printf(" Input error , Please re-enter !\n");
break;
}
} while (input);
return 0;
}
When you first enter the function , The steps are the same as the above code , But here we use switch case Statement to realize the selection of calculation items , And we can write a function , Used to realize calculation , The parameter of this function can use the function address , When we enter different options , Give different function addresses to the calculation function , Then the calculation function calls a function to calculate according to the passed function address , This is a simple callback function .
边栏推荐
- Revit secondary development Hof method calls transaction
- 企微服务商平台收费接口对接教程
- R language ggplot2 visualization, custom ggplot2 visualization image legend background color of legend
- 可变长参数
- Deep analysis of C language data storage in memory
- 有效提高软件产品质量,就找第三方软件测评机构
- torch建立的网络模型使用torchviz显示
- Precise query of tree tree
- 【ROS】usb_ Cam camera calibration
- Research Report on supply and demand and development prospects of China's high purity aluminum market (2022 Edition)
猜你喜欢
随机推荐
sublime text没关闭其他运行就使用CTRL+b运行另外的程序问题
LeetCode:221. 最大正方形
China Light conveyor belt in-depth research and investment strategy report (2022 Edition)
【Nvidia开发板】常见问题集 (不定时更新)
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
Esp8266-rtos IOT development
Guangzhou will promote the construction of a child friendly city, and will explore the establishment of a safe area 200 meters around the school
Light of domestic games destroyed by cracking
Roguelike game into crack the hardest hit areas, how to break the bureau?
Deep anatomy of C language -- C language keywords
LeetCode:498. 对角线遍历
深度剖析C语言数据在内存中的存储
MySQL learning record 10getting started with JDBC
Purpose of computer F1-F12
704 二分查找
Computer cleaning, deleted system files
Niuke winter vacation training 6 maze 2
Unified ordering background interface product description Chinese garbled
Detailed explanation of heap sorting
LeetCode:39. 组合总和