-3

这是一个初学者问题,可以理解使用 switch 语句可能出错的地方。任务如下: 编写一个程序,接受用户输入的两个整数值。显示第一个整数除以第二个整数的结果,精确到小数点后三位。请记住让程序检查除以零。

为了测试第二个操作数是否为 0,我使用了 switch 语句(我知道我可以使用 if...else 来做到这一点)。但是,该程序仍将接受 0 作为操作数,我不确定为什么会发生这种情况。如果它试图计算除以 0,程序就会失败。你能告诉我我可能错在哪里吗?我的代码如下:

  #include <stdio.h>

  int main (void)

  {
         int a, b;


   printf ("Type two integer values: ");
   scanf ("%i %i", &a, &b);

   switch (a/b)
   {

   case 'b == 0':
        printf ("\n The divisor can't be 0.\n");

   break;

   default:
           printf ("The result of dividing %i by %i is %.3f\n", a, b,(float) a / b);

   break;
  }
  return 0;

  }

谢谢你的帮助!

4

3 回答 3

2
 switch (b)
   {
   case 0:
        printf ("\n The divisor can't be 0.\n");

   break;
   default:
           printf ("The result of dividing %i by %i is %.3f\n", a, b,(float) a / b);
   break;
  }

另请注意,以下表达式case必须是常量,例如:

case 0:
case 1:
case 'a':
case 'b':

ETC

那里..应该解决它。

于 2013-02-05T21:09:29.013 回答
0

案例标签不能是条件表达式;它们必须是常量整数值。

在这种情况下,您要编写:

switch (b) {
case 0:
    /* stuff goes here */
    break;
}

但是,这里的 switch 语句很奇怪。if 语句会更合适。

于 2013-02-05T21:15:43.567 回答
0

尝试将 switch 语句更改为 switch (b)

于 2013-02-05T21:20:40.440 回答