c语言简单运用简单运用

输入任意长度的加、减混合表达式,回车结束; 表达式不含有空格; 如果表达式有其它运算符,则提前结束
输入:
10+3-2+5-6
输出:
10

#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 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;
}