条件返回到函数开始处



如果结果不符合标准,我试图返回或重复该函数。我尝试了各种方法,例如do while语句、设置BOOL标志等,但都没有成功。在满足条件之前重新启动函数的最佳方法是什么?

代码:

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
int main() {
        std:int nine;
        std::srand(std::time(NULL));
        std::cout << nine << (rand() % 10);
        std::cout << 'n';
    if (nine == 9) {
        std::cout << 'nine';
    } else {
        main();
    }
} 

在c++中不能递归调用main。此外,您的代码还包含一些其他错误。程序可以如下所示:

#include <iostream>
#include <cstdlib>
#include <ctime>
int main() 
{
        std::srand( ( unsigned )std::time( NULL) );
        int nine;
        do
        {      
                nine = std::rand() % 10;
        } while ( nine != 9 );
        std::cout << "nine" << std::endl;
}

您还可以添加一个输出语句

#include <iostream>
#include <cstdlib>
#include <ctime>
int main() 
{
        std::srand( ( unsigned )std::time( NULL) );
        int nine;
        do
        {      
                nine = std::rand() % 10;
                std::cout << nine << std::endl;
        } while ( nine != 9 );
        std::cout << "nine" << std::endl;
}

while循环应该可以正常工作:

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
int main() {
    int nine = 0;
    srand(std::time(NULL));
    while (nine != 9)
    {
      nine = (rand() % 10);
      std::cout << nine << std::endl;
      if (nine == 9) {
        std::cout << 'nine';
      }
    }
} 

我认为你的问题是在nine,你没有分配它

nine = rand()%10;

和基本循环应该是好的

while ( nine != 9){
      nine = rand()%10;
}

您可以这样做:

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
int main() {
     std::srand(std::time(NULL));
     do {
          std:int nine;
          std::cout << nine << (rand() % 10);
          std::cout << 'n';
          if(nine == 9) {
              std::cout << 'nine';
              break;
          } 
     } while(true);
} 

注意不要在代码中更改nine,循环将永远持续下去。

由于std:int(缺少冒号打字错误),这段特定的代码甚至无法编译。但是假设这个错别字被修复了,它也不会做任何事情,因为你从来没有给nine赋值。

无论如何,如果你想在你的代码中重复一个动作,你最好的选择是一个循环:
int nine = 0;
do {
  nine = rand() % 10;
} while (nine != 9);

相关内容

  • 没有找到相关文章

最新更新