模拟计算器,对整数连加表达式求值

输入任意长度的连续加法表达式,回车结束; 表达式不含有空格; 如果表达式有其它运算符,则提前结束

输入:
1+2+3+4+5+6
输出:
21
输入:
1+2+3-6-7
输出:
6

#include<stdio.h>

int cal(int st[], int k) 
{
    int sum = st[0];
    for (int m = 1; m < k - 1; m++, m++)
    {
        if (st[m] == '+')
        {
            sum = sum + st[m + 1];
        }
        else
        {
            if (st[m] == '-')
            {
                sum = sum - st[m + 1];
            }
        }
    }
    return sum;
}

void main() 
{
    int sum1 = 0;
    int i, c = 0;
    char st1[200];
    int st2[100];
    scanf("%s", st1);
    for (i = 0; st1[i] != '\0'; i++) 
    {
        if (st1[i] > 47 && st1[i] < 58) 
        {
            sum1 = (st1[i] - 48) + sum1 * 10;
            st2[c] = sum1;
        }
        else
        {
            st2[++c] = st1[i];
            sum1 = 0;
            c++;
        }
    }
    printf("%d\n", cal(st2, c + 1));
    return;
}

img

#include<stdio.h>

int cal(int st[], int k)
{
    int sum = st[0];
    for (int m = 1; m < k - 1; m++, m++)
    {
        if (st[m] == '+')
        {
            sum = sum + st[m + 1];
        }
        else
        {
            break;
        }
    }
    return sum;
}

void main()
{
    int sum1 = 0;
    int i, c = 0;
    char st1[10000];
    int st2[10000];
    scanf("%s", st1);
    for (i = 0; st1[i] != '\0'; i++)
    {
        if (st1[i] > 47 && st1[i] < 58)
        {
            sum1 = (st1[i] - 48) + sum1 * 10;
            st2[c] = sum1;
        }
        else
        {
            st2[++c] = st1[i];
            sum1 = 0;
            c++;
        }
    }
    printf("%d\n", cal(st2, c + 1));
    return;
}

这个是连加的,就是你这道题的代码