c语音怎么用指针做四则运算
时间: 2023-03-31 22:03:23 浏览: 172
可以通过指针来实现四则运算,例如:
int a = 10, b = 5;
int *p1 = &a, *p2 = &b;
int sum = *p1 + *p2; // 加法
int diff = *p1 - *p2; // 减法
int product = *p1 * *p2; // 乘法
int quotient = *p1 / *p2; // 除法
注意,指针变量必须先指向一个有效的内存地址,才能进行运算。
相关问题
c语言实现应用栈实现四则运算
可以使用栈来实现四则运算表达式的计算。具体步骤如下:
1. 定义一个栈结构,用于存放运算符和数字。
2. 读入表达式字符串,逐个字符进行处理。
3. 遇到数字字符时,将其转换为数字并压入栈中。
4. 遇到运算符时,从栈中弹出两个数字进行计算,并将结果压入栈中。
5. 最后栈中只剩下一个数字,即为表达式的计算结果。
下面是使用C语言实现的应用栈实现四则运算的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 50
typedef struct {
int top;
int data[MAX_SIZE];
} Stack;
void push(Stack *stack, int value) {
if (stack->top == MAX_SIZE) {
printf("Error: stack overflow\n");
exit(1);
}
stack->data[++stack->top] = value;
}
int pop(Stack *stack) {
if (stack->top == -1) {
printf("Error: stack underflow\n");
exit(1);
}
return stack->data[stack->top--];
}
int calculate(char *expr) {
Stack stack = {-1};
char *p = expr;
while (*p != '\0') {
if (*p >= '0' && *p <= '9') {
int num = 0;
while (*p >= '0' && *p <= '9') {
num = num * 10 + (*p - '0');
p++;
}
push(&stack, num);
} else if (*p == '+' || *p == '-' || *p == '*' || *p == '/') {
int b = pop(&stack);
int a = pop(&stack);
switch (*p) {
case '+':
push(&stack, a + b);
break;
case '-':
push(&stack, a - b);
break;
case '*':
push(&stack, a * b);
break;
case '/':
if (b == 0) {
printf("Error: divide by zero\n");
exit(1);
}
push(&stack, a / b);
break;
}
p++;
} else {
printf("Error: invalid character '%c'\n", *p);
exit(1);
}
}
if (stack.top != 0) {
printf("Error: invalid expression\n");
exit(1);
}
return pop(&stack);
}
int main() {
char expr[100];
printf("请输入四则运算表达式:");
scanf("%s", expr);
int result = calculate(expr);
printf("计算结果:%d\n", result);
return 0;
}
```
在程序中,我们定义了一个栈结构 Stack,包含一个指向栈顶的 top 指针和一个数组 data 用于存放栈中的元素。push 函数实现元素的入栈,pop 函数实现元素的出栈。calculate 函数接收一个字符串类型的表达式,逐个字符进行处理,并使用栈来计算表达式的值。
使用示例:
```
请输入四则运算表达式:3+4*2/(1-5)^2
计算结果:3
```
使用指针函数实现整数的加减乘除四则运算
好的,可以参考下面的示例代码实现:
```c
#include <stdio.h>
// 定义指针函数类型
typedef int (*pFunc)(int, int);
// 加法函数
int add(int a, int b) {
return a + b;
}
// 减法函数
int sub(int a, int b) {
return a - b;
}
// 乘法函数
int mul(int a, int b) {
return a * b;
}
// 除法函数
int div(int a, int b) {
return a / b;
}
// 实现整数的加减乘除四则运算的函数
int operate(int a, int b, pFunc func) {
return func(a, b);
}
int main() {
int a = 10, b = 5;
printf("a + b = %d\n", operate(a, b, add));
printf("a - b = %d\n", operate(a, b, sub));
printf("a * b = %d\n", operate(a, b, mul));
printf("a / b = %d\n", operate(a, b, div));
return 0;
}
```
在上面的代码中,我们定义了一个指针函数类型 `pFunc`,它可以指向任意一个参数为两个整数,返回值为一个整数的函数。然后,我们实现了四个函数 `add`、`sub`、`mul` 和 `div` 分别代表加法、减法、乘法和除法。最后,我们实现了一个 `operate` 函数,它接受两个整数和一个指向函数的指针,然后通过指针调用相应的函数进行运算,并返回运算结果。
在 `main` 函数中,我们分别调用 `operate` 函数来进行加减乘除四则运算,并输出结果。