0

我是一个有几个小时经验的初学者,我正在尝试制作一个非常简单的程序来熟悉 IF 命令。我想出了这段代码:

#include<stdio.h>

int main()
{
    char ans;
    char n;
    char y;
    printf("Do you want to exit?\n");
    scanf("%c\n",ans);
    if (ans == y)
    {
        printf("As you wish!\n");
        return 0;
    }
    else (ans == n);
    {
        printf("You'll exit anyways!\n");
        return 0;
    }
}

我认为它应该可以工作,但是在我输入某些内容后,程序会停止工作!提前致谢!

4

3 回答 3

9

if (ans == y)

应该读

if (ans == 'y')

前者比较ans未初始化变量的值y,而后者检查是否ans包含字符'y'

也是如此'n'

y和变量是不必要的n,可以删除。

此外,以下行不正确:

else (ans == n);

它应该读

else if (ans == 'n')

(我添加了if并删除了分号。)

最后,scanf()应该是:

scanf("%c",&ans);
于 2013-03-23T13:55:24.477 回答
3
else (ans == n);

这不会给出预期的结果。删除;and 条件。 else可能只需要一段代码。它不处理条件。如果您需要条件,请使用else if

else if (ans == 'n')

更多错误:

if (ans == y)

这里的 y 指的是变量,它被声明但没有值。当然,您想引用角色'y'

if (ans == 'y')

此外,scanf需要一个指针,所以不要ans使用&ans. 它需要写入值的内存地址。它不在乎价值。您最终将了解指针。(假设您在几个小时的经验中还没有研究过它们)

于 2013-03-23T13:56:15.267 回答
2

存在三个主要错误。

  • 您应该将指针传递给该函数,因此您必须在( )scanf之前添加一个 & 符号。ans&ans

  • 语句;末尾有一个尾随。else

  • y指的是一个变量(不存在),而您想与ans字符进行 'y'比较。

于 2013-03-23T13:56:13.277 回答