有条件地返回到函数的开头

时间:2014-03-12 07:30:04

标签: c++ loops while-loop

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

CODE:

#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();
    }
} 

5 个答案:

答案 0 :(得分:2)

您可能无法在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;
}

答案 1 :(得分:1)

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';
      }
    }
} 

答案 2 :(得分:1)

我认为您的问题出在nine,您没有指定

nine = rand()%10;

并且使用基本循环它应该没问题

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

答案 3 :(得分:1)

您可以执行以下操作:

#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,循环将永远存在。

答案 4 :(得分:0)

由于std:int(缺少冒号错误),此特定代码甚至无法编译。但假设输入错误是固定的,它也不会做任何事情,因为你从未给nine赋值。

无论如何,如果你想在你的代码中重复一个动作,你最好的选择是循环:

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