关于#c语言#计算器的问题,请各位专家解答!

初学c语言,其中实现优先级的部分不是很懂,逻辑关系有点复杂,求专家帮忙解释一下。

#include <stdio.h>
int main()
{
int n = 0, j, m = 0;
float a[10], b[10], s = 0;
char c[10], i;
for (j = 0; j < 10; j++) //
{
c[j] = '\0'; a[j] = 0;
}
scanf("%f", &a[0]);
for (; (c[n] = getchar()) != '\n'; n++)
scanf("%f", &a[n + 1]);
c[n] = '\0';
for (j = 0, n = 0; c[j] != '\0'; j++)
{
if (c[j] == '+' || c[j] == '-')
{
b[n] = a[j];
n++;
if (c[j + 1] == '\0')
b[n] = a[j + 1];
}
if (c[j] == '*')
{
b[n] = a[j] * a[j + 1];
a[j + 1] = b[n];
if (c[j + 1] == '+' || c[j + 1] == '-')
n++;
}
if (c[j] == '/')
{
b[n] = a[j] / a[j + 1];
a[j + 1] = b[n];
if (c[j + 1] == '+' || c[j + 1] == '-')
n++;
}
}
for (j = 0; j < 10; j++)
if (c[j] == '+' || c[j] == '-')
m++;
for (j = 0, n = 1, s = b[0]; j < 10; j++, n++)
{
if (c[j] == '+' || m == 0)
{
s = s + b[n];
if (m == 0)
break;
}
if (c[j] == '-' || m == 0)
{
s = s - b[n];
if (m == 0)
break;
}
}

每个人的结题思路不一样,你自己写的应该更清楚每一步是干嘛的。