简单模拟运算器工作,按从左到右顺序计算,4种运算符优先级相同

问题遇到的现象和发生背景
int main(void)
{
    char ch;
    int s1,s2;
    printf("Enter characters:");
    ch=getchar();
    s1=ch-'0';
    while((ch=getchar())!=('='))//当s2>10时会出错; 
    {    
        s2=getchar()-'0';
        switch(ch)
        {
            case '+':s1=s1+s2;break;
            case '-':s1=s1-s2;break;
            case '*':s1=s1*s2;break;
            case '/':s1=(float)s1/s2;break;
            default:;break;
        }
    }
    printf("%d",s1);
    
    return 0;
}

运行结果及报错内容

img

我的解答思路和尝试过的方法

当输入的数>=10是,程序会死机,求解决方法;

仅供参考,望采纳~

#include<stdio.h>
int main(void)
{
    char ch;
    int s1,s2;
    printf("Enter characters:");
    scanf("%d",&s1);
    while((ch=getchar())!=('='))//当s2>10时会出错; 
    {    
        scanf("%d",&s2);
        switch(ch)
        {
            case '+':s1=s1+s2;break;
            case '-':s1=s1-s2;break;
            case '*':s1=s1*s2;break;
            case '/':s1=(float)s1/s2;break;
            default:break;
        }
    }
    printf("%d\n",s1);
   
    return 0;
}

img