为什么在此开关案例中不重复我的时循环?

发布于 2025-01-17 18:26:26 字数 476 浏览 0 评论 0原文

#include <stdio.h>
int main()
{
    int a;
    scanf("%d", &a);
    int if_again = 1;
    int c = 1;
    switch (a)
    {
    case 1:
        while (if_again == 1)
        {
            scanf("%d", c);
            if (c == 1)
            {
                if_again == 1;
            }
            else
            {
                if_again == 0;
            }
        }
    }
    return 0;
}

仅给出 1 两次后就会终止,但它应该继续重复,直到输入 0。我的代码有什么问题吗?

#include <stdio.h>
int main()
{
    int a;
    scanf("%d", &a);
    int if_again = 1;
    int c = 1;
    switch (a)
    {
    case 1:
        while (if_again == 1)
        {
            scanf("%d", c);
            if (c == 1)
            {
                if_again == 1;
            }
            else
            {
                if_again == 0;
            }
        }
    }
    return 0;
}

It is getting terminated after giving 1 two times only, but it should keep on getting repeated until 0 is entered. What is wrong with my code?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

薄凉少年不暖心 2025-01-24 18:26:26

SCANF需要您提供的变量的基本地址。因此scanf(“%d,c);需要为scanf(%d,&amp; c);

以下代码也是错误的:

if (c == 1)
{
   if_again == 1;
}

编译器认为您是将“ if_again”与1进行比较。我认为您正在尝试将变量设置为1:

if (c == 1)
{
   if_again = 1;
}

是正确的。

else语句 如果您想看到它a是1,则只需

scanf needs the base address of a variable you give it. So scanf("%d, c); needs to be scanf(%d, &c);

The following code is also wrong:

if (c == 1)
{
   if_again == 1;
}

The compiler thinks that you are comparing "if_again" with 1. I think you are trying to set the variable to 1? In that case do this:

if (c == 1)
{
   if_again = 1;
}

The same is true for the else statement.

Also, why is there a switch statement? If you want to see it a is 1, then just to an if

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文