我是初学者,有几个小时的经验,我正在尝试制作一个非常简单的程序来熟悉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;
}
}
我认为它应该可行,但在我输入内容后程序停止工作!提前谢谢!
答案 0 :(得分: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);
答案 1 :(得分:3)
else (ans == n);
这不会给出预期的结果。删除;
和条件。
else
可能只会占用大量代码。它不处理条件。
如果您需要条件,请使用else if
:
else if (ans == 'n')
更多错误:
if (ans == y)
y在这里指的是变量,它被声明但没有值。当然你想要引用角色'y'
:
if (ans == 'y')
此外,scanf
需要一个指针,因此使用ans
代替&ans
。
它需要写入值的内存地址。它并不关心价值。
你最终会了解指针。 (假设你在几小时的经验中没有完成它们)
答案 2 :(得分:2)
有三个主要错误。
您应该将指针传递给scanf
函数,因此您必须在ans
(&ans
)之前添加&符号。
;
声明的末尾有else
个结尾。
y
指的是一个变量(不存在),而您希望将ans
与字符进行比较 'y'
。