C语言字符串中运算符,c语言字符串中找到一个运算符,怎样实现运算

1、一个字符串里面包含运算符,要转成正常运算的运算符,可以用 宏指令。相当于直接执行语句。宏指令在不同语言中执行方式不同的。

2、例程:

//基本的堆栈思想

#include

#include

typedef struct

{

int * base;

int * top;

int size;

} stack_i;

void initStack_I(stack_i * int_sta)

{

int_sta->base = (int *)malloc(sizeof(int) * 100);

int_sta->top  = int_sta->base;

int_sta->size = 100;

}

void deleteStack_I(stack_i * int_sta)

{

free(int_sta->base);

}

void push_I(stack_i * int_sta, int i)

{

if(int_sta->top - int_sta->base >= int_sta->size)

{

return;

}

*(int_sta->top++) = i;

}

void pop_I(stack_i * int_sta, int * i)

{

if(int_sta->top == int_sta->base)

{

return;

}

*i = *(--int_sta->top);

}

int main(void)

{

int  i;

int  temp, temp1;

int  sum = 0;

char c;             //当前字符

char lastc = 0;   //上一个字符

stack_i IS;

initStack_I(&IS);

scanf("%d", &i); //接收第一个数字

push_I(&IS, i);  //压栈

while(1)

{

scanf("%c", &c); //接收第一个字符

if(c == '\n') //换行符就退出

{

break;

}

switch(c)

{

case '+':

if(lastc == '+')  //上次也是一个加号的话

{

pop_I(&IS, &temp);  //弹出上一个数字

pop_I(&IS, &temp1); //弹出上一个数字

sum = temp + temp1; //加法计算

push_I(&IS, sum);   //新的结果压栈

}

scanf("%d", &i);   //接收一个数字进来

push_I(&IS, i);     //压栈

lastc = c;

break;

case '*':

scanf("%d", &i);   //接收一个数字进来

pop_I(&IS, &temp);  //弹出上一个数字

sum = i * temp;  //乘法计算

push_I(&IS, sum);   //新的结果压栈

break;

}

}

temp1 = 0;

pop_I(&IS, &temp);

pop_I(&IS, &temp1);

sum = temp + temp1;

printf("%d\n", sum);

deleteStack_I(&IS);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值