在处理c语言遇到了几个问题,输入一串代码,以运算符和等于符号结尾,但不知道如何辨别里面的数字进行筛选

img

例如:输入1,2,3,4,5,+,=
在里面筛选最大和最小数字,用运算符号进行计算,且输入长度不定,一直卡着

判断一下字符是否是数字
if(a[i]>='0' && a[i] <='9')

i也没有初始化就是用了

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h>

int main()
{
    char a[100], tmp[100];
    int result;
    int max = INT_MIN, min = INT_MAX, k, i = 0, start = 0, len = 0;
    gets(a);
    while (a[i] != '=' || i < 100)
    {
        if (a[i] == ',')
        {
            len = i - start;
            memcpy(tmp, a + start, len);
            tmp[len] = '\0';
            k = atoi(tmp);
            if (max < k)
                max = k;
            if (min > k)
                min = k;
            start = i + 1;
        }
        if (a[i] == '+' || a[i] == '-' || a[i] == '*' || a[i] == '/')
        {
            switch (a[i])
            {
            case '+':
                result = max + min;
                break;
            case '-':
                result = max - min;
                break;
            case '*':
                result = max * min;
                break;
            case '/':
                result = max / min;
                break;
            }
            printf("%d%c%d=%d\n", max, a[i], min, result);
            break;
        }
        i++;
    }

    return 0;
}

while循环条件应该 && a[i] != '+'&& a[i] != '-'&& a[i] != ''&& a[i] != ''
加上后 while循环退出后 a[i]就是运算符号
然后 switch(a[i]){
case '+': 计算 break;
case '-: 计算 break;
case '
': 计算 break;
case '/': 计算 break;
}