Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
它赢了';t返回main()。为什么? #包括 #包括 #包括 #包括 内部主(空) { 浮点数; printf(“Hello\n”); 对于(;;) { printf(“继续[Y或N]?”); 变量_answer=toupper(getchar()); getchar(); if(变量_answer=='Y') return main();/*在这里*/ else if(变量_answer=='N') 返回退出成功; } }_C_Codeblocks - Fatal编程技术网

它赢了';t返回main()。为什么? #包括 #包括 #包括 #包括 内部主(空) { 浮点数; printf(“Hello\n”); 对于(;;) { printf(“继续[Y或N]?”); 变量_answer=toupper(getchar()); getchar(); if(变量_answer=='Y') return main();/*在这里*/ else if(变量_answer=='N') 返回退出成功; } }

它赢了';t返回main()。为什么? #包括 #包括 #包括 #包括 内部主(空) { 浮点数; printf(“Hello\n”); 对于(;;) { printf(“继续[Y或N]?”); 变量_answer=toupper(getchar()); getchar(); if(变量_answer=='Y') return main();/*在这里*/ else if(变量_answer=='N') 返回退出成功; } },c,codeblocks,C,Codeblocks,程序编译得很好,一直运行到最后,当它到达“是或否”部分时,无论我输入Y还是N,它都会重复打印“是或否”。首先,此代码有效 你没有那么好的练习,它们是: 比较浮点数与字符: variable\u answer==“Y” 但是这没关系(如果你不是严格的,只是关心代码是否有效),因为variable\u answer仍然可以存储输入字符的值 递归调用main() 这会使你的程序出错。事实上,有些编译器允许您这样做,有些则不允许 C标准没有提到禁止递归主调用 如果代码可以编译和执行,请检查您是否

程序编译得很好,一直运行到最后,当它到达“是或否”部分时,无论我输入Y还是N,它都会重复打印“是或否”。

首先,此代码有效

你没有那么好的练习,它们是:

  • 比较
    浮点数
    字符

    variable\u answer==“Y”

    但是这没关系(如果你不是严格的,只是关心代码是否有效),因为
    variable\u answer
    仍然可以存储输入字符的值

  • 递归调用
    main()

    这会使你的程序出错。事实上,有些编译器允许您这样做,有些则不允许

    C标准没有提到禁止递归主调用


如果代码可以编译和执行,请检查您是否传递了正确的输入字符(例如:您可能传递的是
y
,而不是
y
)。

只需更改
浮点变量\u答案
int变量\u答案。将
variable\u answer
声明为浮点数没有意义,因为它只用于保存字符


在我的机器上,您的代码运行良好:当我输入“n”或“n”时,代码终止。也许
float
在您的实现中相对较小,因此
(float)'N'!='N'
。因此,
variable\u answer==“N”
永远不会为真。

将浮点与字符进行比较,
variable\u answer==“Y”
还可以使用“return main();”不像你想象的那样:(@Rakesh_Kulkarni代表换行符。这与浮点iif有关,如果OP在89和78不能表示为浮点的系统上运行代码。代码实际上在这里工作,(在main上递归…)@Ildividicodino和?有什么问题吗?哈哈,原谅我,我对这一切还是新手。还有一件事,它是否在你的机器上打印两次“是”或“否”部分?我的打印两次。是什么原因造成的?你能提供完整的输入和输出吗?“打印两次“是”或“否”部分有点含糊不清
#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;
    }
}