cout >> "Please enter a number\n";
这是错误的,std::ostreams
只提供operator<<
插入格式化数据。改为使用cout << "Please enter a number\n";
。
getline(cin x);
首先,您缺少 a ,
,因为getline需要两个或三个参数。但既然x
是一个integer
而不是一个std::string
它仍然是错误的。想一想——你能在一个整数中存储一个文本行吗?改为使用cin >> x
。
int y = rand();
虽然这似乎没有错,但有一个逻辑错误。rand()
是一个伪随机数生成器。它使用种子作为起始值和某种算法 ( a*m + b
)。因此,您必须指定一个起始值,也称为种子。您可以使用srand()
. 相同的种子将产生相同的数字顺序,因此请使用类似srand(time(0))
.
while x != y
if x < y;
使用括号。并删除额外的;
. 程序中的杂散分号;
类似于空表达式。
编辑:工作代码:
#include <iostream>
#include <cstdlib>
#include <ctime>
int main(){
int x;
int y;
srand(time(0));
y = rand();
std::cout << "Please enter a number: ";
do{
if(std::cin >> x){
if(x < y)
std::cout << "Go higher: ";
if(x > y)
std::cout << "Go lower: ";
}
else{
// If the extraction fails, `std::cin` will evaluate to false
std::cout << "That wasn't a number, try again: ";
std::cin.clear(); // Clear the fail bits
}
}while(x != y);
std::cout << "Congratulations, you guessed my number :)";
return 0;
}