c语言 四则运算问题,检查不到错误,运行的时候就提示是否调试!帮忙改一下

#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%lf",&a,&e,&b,&f,&c,&x);//加上“&”,x应初始化
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;//在此x需要初始化
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);

 }

}


运行结果如下:


十分抱歉~

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-17
scanf()的取地址符呢?
第2个回答  2013-11-17
scanf a,e,b,f, 加&