分别编写2个数的加、减、乘、除法函数,要求:
1、从键盘输入2个数,以及要执行运算的运算符。
2、使用void指针调用对应的函数执行运算,输出结果。
该回答引用自ChatGPT:下面是一个使用 C 语言编写的示例代码,实现了两个数的加、减、乘、除法函数:
#include <stdio.h>
void add(void* a, void* b) {
// 将 void 指针转换为相应的数据类型指针
int* num1 = (int*)a;
int* num2 = (int*)b;
int result = *num1 + *num2;
printf("加法结果:%d\n", result);
}
void subtract(void* a, void* b) {
int* num1 = (int*)a;
int* num2 = (int*)b;
int result = *num1 - *num2;
printf("减法结果:%d\n", result);
}
void multiply(void* a, void* b) {
int* num1 = (int*)a;
int* num2 = (int*)b;
int result = *num1 * *num2;
printf("乘法结果:%d\n", result);
}
void divide(void* a, void* b) {
int* num1 = (int*)a;
int* num2 = (int*)b;
// 检查除数是否为零
if (*num2 != 0) {
float result = (float)*num1 / *num2;
printf("除法结果:%f\n", result);
} else {
printf("除数不能为零!\n");
}
}
int main() {
int num1, num2;
char operator;
printf("请输入两个整数:");
scanf("%d %d", &num1, &num2);
printf("请输入运算符(+、-、*、/):");
scanf(" %c", &operator);
switch (operator) {
case '+':
add(&num1, &num2);
break;
case '-':
subtract(&num1, &num2);
break;
case '*':
multiply(&num1, &num2);
break;
case '/':
divide(&num1, &num2);
break;
default:
printf("无效的运算符!\n");
break;
}
return 0;
}
这段代码中,我们定义了四个函数:add、subtract、multiply和divide,分别对应加法、减法、乘法和除法操作。这些函数使用了 void 指针作为参数,因为我们不确定要执行运算的数的具体类型。在函数内部,我们首先将 void 指针转换为相应的数据类型指针,然后进行运算,最后输出结果。
在 main 函数中,我们首先从键盘输入两个整数和要执行的运算符。然后,根据输入的运算符,调用相应的函数来执行运算并输出结果。
请注意,这段代码中没有对输入进行错误处理和边界情况的检查,仅提供了基本的功能演示。在实际开发中,你可能需要添加更多的错误检查和边界情况处理。
#include <iostream>
using namespace std;
void addition(int a, int b) {
cout << a << "+" << b << "=" << a + b << endl;
}
void subtraction(int a, int b) {
cout << a << "-" << b << "=" << a - b << endl;
}
void multiplication(int a, int b) {
cout << a << "*" << b << "=" << a * b << endl;
}
void division(int a, int b) {
if (b != 0) {
cout << a << "/" << b << "=" << (float)a / b << endl;
}else{
cout << "Error: divided by zero" << endl;
}
}
int main() {
int a, b;
char op;
void (*func)(int, int);
cout << "Please input two numbers:" << endl;
cin >> a >> b;
cout << "Please input the operator:" << endl;
cin >> op;
switch (op) {
case '+':
func = addition;
break;
case '-':
func = subtraction;
break;
case '*':
func = multiplication;
break;
case '/':
func = division;
break;
default:
cout << "Invalid operator" << endl;
return 0;
}
(*func)(a, b);
return 0;
}
//创建头结点
Linklist *creat(){// 创建一个链表,即创建一个头结点
Linklist *head;
head=(Linklist *)malloc(sizeof(Linklist));//创建一个头结点
head->next=NULL;
return head;
}