如何正确修改以下“ switch”语句以获取预期的输出值

时间:2019-03-17 02:47:04

标签: c

//通过参数观察,我看到k的结果是4,但是最终结果是程序完成后的123。为什么会这样?/

/谢谢您的回答。 我已经弄清楚了我以前的困惑。 实际上,这是一个在考试中询问输出的问题。我在考试中错了,因为我认为输出为1,但正确答案是123。 也许是造成指令不清楚的原因。/

#include <stdio.h>
int main()
{
    int k;
    scanf("%d", &k);
    switch (k)
    {
    case 1:   printf("%d", k++);
    case 2:   printf("%d", k++);
    case 3:   printf("%d", k++);
        break;
    default:  printf("Full!");
    }
    return 0;
}

2 个答案:

答案 0 :(得分:1)

您的代码中没有最终结果k之后没有使用switch,因此它在调试器中的值没有意义。

您可以修改代码以打印k的最终值,并看到123都被转换为4其他值保持不变。

#include <stdio.h>

int main() {
    int k;
    scanf("%d", &k);
    switch (k) {
      case 1:   printf("%d\n", k++);
      case 2:   printf("%d\n", k++);
      case 3:   printf("%d\n", k++);
        break;
      default:  printf("Full!\n");
        break;
    }
    printf("%d\n", k);
    return 0;
}

答案 1 :(得分:0)

您的代码中有两个错误:

  • 为什么k++不是k

  • 每个break都没有case

由于这些错误,如果您输入123,则会得到1

我猜您只想打印输入,所以更正后的代码可能是:

#include <stdio.h>
int main()
{
    int k;
    scanf("%d", &k);
    switch (k)
    {
    case 1:   printf("%d", k);
        break;
    case 2:   printf("%d", k);
        break;
    case 3:   printf("%d", k);
        break;
    default:  printf("Full!");
        break;
    }
    return 0;
}