c语言中,怎么使用字符串表示的运算符

intop(chara,charp,charb){intx,y,z;//x=(int)a;//y=(int)b;z=xpy;p是运算符,这句该怎么写呀returnz;}谢... int op(char a ,char p,char b)
{
int x,y,z;
//x=(int)a;
// y=(int)b;
z=xpy;p是运算符,这句该怎么写呀
return z;
}
谢谢啦,帮帮忙
展开
 我来答
tattackor
推荐于2017-09-06 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:873万
展开全部

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

//基本的堆栈思想
#include<stdio.h>
#include<stdlib.h>
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;
}
百度网友78bd6eae2
推荐于2017-09-10 · TA获得超过658个赞
知道小有建树答主
回答量:464
采纳率:0%
帮助的人:597万
展开全部
猜你是想完成类似于 a+b,a-b...之类的运算吧。
一句完不成,得进行判断。如:
if(op=='+')z=x+y;
else if(op=='-')z=x-y;
else if(op=='*')z=x*y;
....
return z;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Tidus_forever
2011-09-17 · TA获得超过4399个赞
知道大有可为答主
回答量:2782
采纳率:100%
帮助的人:1838万
展开全部
if(p=='+')
z=x+y;
if(p=='-')
z=x-y;
后面的类似
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秒懂百科
2020-11-20 · TA获得超过5.9万个赞
知道大有可为答主
回答量:25.3万
采纳率:88%
帮助的人:1.2亿
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式