(c语言版)计算字符串“-32+6*9/2-8+4/2”

#include
#include
int main() {
    char str[100] = {"-32+6*9/2-8+4/2"};
    char stackop[7] = {0};
    int top1 = -1;
    int stacknum[7] = {0};
    int top2 = -1;
    int a[10] = {0};
    int sum=0;
    char temp[10] = {0};
    sscanf(str, "%d%c%d%c%d%c%d%c%d%c%d%c%d", &a[0], &temp[0], &a[1], &temp[1], &a[2], &temp[2], &a[3], &temp[3], &a[4], &temp[4],
           &a[5], &temp[5], &a[6]);
    for(int i=0;i<=6;i++){
        stacknum[++top2]=a[i];
        if(a>0&&(stackop[top1]=='*'||stackop[top1]=='/'))
        {
            stacknum[top2-1]=stackop[top1]=='*'?stacknum[top2-1]*stacknum[top2]:stacknum[top2-1]/stacknum[top2];
            top1--;
            top2--;
        }
        if(i<=5)
          stackop[++top1]=temp[i];
    }
    if(top1!=-1) {
        if (stackop[0] == '+')
            sum = stacknum[0] + stacknum[1];
        else
            sum = stacknum[0] - stacknum[1];
        for (int i = 1; i <= top1; i++) {
            sum = stackop[i] == '-' ?sum-stacknum[i+1]:sum+stacknum[i+1];
        }
    }
    printf("%d",sum);
    return 0;
}

你可能感兴趣的:(c语言,c)