#include <stdio.h>
void main()
{
double a,b,c,x,y,z;
char e,f;
printf("please input :\n");
scanf("%lf%c%lf%c%lf",a,e,b,f,c);
if((f==('*'||'/')) && e==(('*'||'/')))
{
switch (e)
{
case '*':x=a*b;break;
case '/':x=a/b;break;
}
switch (f)
{
case '*':z=x*c;break;
case '/':z=x/c;break;
}
printf("counter=%lf\n",z);
}
else if((f==('+'||'-')) && e==(('+'||'-')))
{
switch (e)
{
case '+':x=a+b;break;
case '-':x=a-b;break;
}
switch (f)
{
case '+':z=x+c;break;
case '-':z=x-c;break;
}
printf("counter=%lf\n",z);
}
else if ((f==('*'||'/')) && e==(('+'||'-')))
{
switch (f)
{
case '*':y=x*c;break;
case '/':y=x/c;break;
}
switch (e)
{
case '+':z=a+y;break;
case '-':z=a-y;break;
}
printf("counter=%lf\n",z);
}
}
我在上面加上了初始化,还是不成,运行结果如下:
不好意思,我把程序意图理解错了……
#include <stdio.h>
void main()
{
double a,b,c,x,y,z;
char e,f;
printf("please input :\n");
scanf("%lf%c%lf%c%lf",&a,&e,&b,&f,&c);
if((f=='*'||f=='/') && (e=='*'||e=='/'))//这样表达才能达到识别运算符的目的
{
switch (e)
{
case '*':x=a*b;break;
case '/':x=a/b;break;
}
switch (f)
{
case '*':z=x*c;break;
case '/':z=x/c;break;
}
printf("counter=%lf\n",z);
}
else if((f=='+'||f=='-') && (e=='+'||e=='-'))
{
switch (e)
{
case '+':x=a+b;break;
case '-':x=a-b;break;
}
switch (f)
{
case '+':z=x+c;break;
case '-':z=x-c;break;
}
printf("counter=%lf\n",z);
}
else if ((f=='*'||f=='/') && (e=='+'||e=='-'))
{
switch (f)
{
case '*':y=b*c;break;
case '/':y=b/c;break;
}
switch (e)
{
case '+':z=a+y;break;
case '-':z=a-y;break;
}
printf("counter=%lf\n",z);
}
}
运行结果如下:
十分抱歉~