#include <stdio.h>
#include <stdlib.h>
#include <float.h>
#include <ctype.h>
int main (void)
{
float variable_answer;
printf("Hello\n");
for (;;)
{
printf("Continue [Y or N]? ");
variable_answer = toupper(getchar());
getchar ();
if (variable_answer == 'Y')
return main();/*Here it is*/
else if (variable_answer == 'N')
return EXIT_SUCCESS;
}
}
程序编译得很好,它一直运行顺利直到结束,当它到达“是”或“否”时#34;部分,它只是不断重复打印&#34;是或否&#34;我是否输入Y或N.
答案 0 :(得分:2)
首先,此代码有效。
你没有那么好的做法,他们是:
将float
与char
进行比较:
variable_answer == 'Y'
但是没关系(如果你不严格,只关心代码是否有效),因为variable_answer
仍然可以存储输入中字符的值。
递归调用main()
。
这会让你的程序生病。事实上,有些编译器允许你这样做,有些则不允许。
C标准没有说明禁止递归主要呼叫
如果代码可以编译并执行正常,请检查您是否传递了正确的输入字符(例如:您可能会通过y
而不是Y
)。
答案 1 :(得分:0)
只需将float variable_answer;
更改为int variable_answer;
即可。将variable_answer
声明为浮点数是没有意义的,因为它只用于保存字符。
在我的机器上,您的代码运行良好:当我输入'n'或'N'时它会终止。可能float
在您的实施中相对较小,因此(float)'N' != 'N'
。因此,variable_answer == 'N'
永远不会成真。