问下……
别问我这段东西那里不明白,整段都不明白…………
如果输入这样子:2+4*2/3+4\n
输出2+4*2/3+4=8.00\n(大概这里的运算法则加法和乘除法优先级一样)
(先写出输出结果, 后边说明我哪里不明白比较方便一些。)
#include"stdio.h"
int main(void)
{
double x,y;
char c;
loop1:
printf("input expression");
scanf("%lf",&x);
printf("%.0f",x);
while((c=getchar())!='\n')
{/*这里开始有疑问了*/
loop2:
printf("%c",c);
scanf("%lf",&y);
printf("%.0f",y);
/*第一个问题:如果输入“2+3+4”,while之前那一段把2赋予给x了,然后while一行中那getchar()把‘+’赋予c,额,大概有个读入焦点(用词不知准确否)的东西,焦点就移到‘+’之后,scanf就把3赋予给y。这个读入焦点之类的我假设的,不知有没有,如果没有,就不明白了……请达人证实一下有无这东东*/
switch(c)
{
case '+':
x=x+y;
break;
case '-':
x=x-y;
break;
case '*':
x=x*y;
break;
case '/':
if(y!=0)
x=x/y;
else
{
printf("input error,input again\n");
goto loop2;
/*这里这里,所以说很讨厌goto,无条件退出。如果输入2/0+4,
输出:input error,input again\n
/(这里继续输入)
假如再输入2,那+4后边那一部分是继续执行,还是只算了2/2就完了……再帮我一下吧……*/
}
break;
default:
printf("input error,input again\n");
goto loop1;
}
}
printf("=%.2f\n",x);
}
总之很不明白,达人帮忙解答下……