当前位置:网站首页>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 .

原网站

版权声明
本文为[C tie Zhu]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202131813286864.html