如果结果不符合标准,我试图返回或重复该函数。我尝试了各种方法,例如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);