c语言封装函数分别实现两个数的加、减、乘、除、取余、交换
时间: 2024-12-13 20:25:42 浏览: 3
C语言小程序 如何判断两个日期之差
5星 · 资源好评率100%
在C语言中,我们可以将加、减、乘、除、取余以及交换操作封装在一个结构体或者命名空间中,以便于管理和复用。这里我将以函数的形式演示如何实现这些功能:
首先,创建一个结构体`math_operations`,包含指向整型数据的指针,并实现相应的方法:
```c
#include <stdio.h>
typedef struct {
int (*add)(int, int);
int (*subtract)(int, int);
int (*multiply)(int, int);
int (*divide)(int, int);
int (*modulus)(int, int);
void (*swap)(int*, int*);
} MathOperations;
// 函数实现
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int multiply(int a, int b) {
return a * b;
}
int divide(int a, int b) {
if (b != 0)
return a / b;
else
return INT_MIN; // 避免除以零错误
}
int modulus(int a, int b) {
return a % b;
}
void swap(int* num1, int* num2) {
int temp = *num1;
*num1 = *num2;
*num2 = temp;
}
// 封装函数
MathOperations create_math_operations() {
MathOperations ops;
ops.add = &add;
ops.subtract = &subtract;
ops.multiply = &multiply;
ops.divide = ÷
ops.modulus = &modulus;
ops.swap = &swap;
return ops;
}
int main() {
MathOperations operations = create_math_operations();
int x = 5, y = 3;
printf("x + y = %d\n", operations.add(&x, &y));
printf("x - y = %d\n", operations.subtract(&x, &y));
printf("x * y = %d\n", operations.multiply(&x, &y));
// 由于整数除法可能会有截断结果,我们在这里示例浮点数除法
float f_x = 5.0, f_y = 3.0;
printf("f_x / f_y = %.1f\n", operations.divide((int*)&f_x, (int*)&f_y)); // 注意这里是转换为整数
printf("x mod y = %d\n", operations.modulus(&x, &y));
operations.swap(&x, &y);
printf("After swapping: x = %d, y = %d\n", x, y);
return 0;
}
```
阅读全文