0

还不是很擅长调试,但我遇到了一些错误。一些预期的 '(' ')' 和 ';' 也没有前面的 'if' 的 'else',在 cout 中不匹配 'operator>>'

我知道这很容易,但仍然试图让我踏上大门。谢谢 :)

#include <iostream>
#include <cstdlib>
using namespace std;

int main()   // guess number game
{
    int x;
    cout >> "Please enter a number\n";
    getline(cin x);
    int y = rand();

    while x != y
    {

        if x < y;
           cout >> "Go higher";
        else;
           cout >> "Go lower";
    }


}
4

5 回答 5

5
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;
}
于 2012-04-18T21:06:26.807 回答
1

试试这个:

void main()
{
  int x;
  cout << "Please enter a number\n";
  getline(cin, x);
  int y = rand();

  while(x != y)
  {
   if(x < y)
    cout << "Go higher";
   else
     cout << "Go lower";
  }
}
于 2012-04-18T21:06:15.467 回答
1

不太熟悉 C++ 但我很确定 while/if 应该看起来像这样

 while (x != y)
{

 if (x < y)
    cout << "Go higher";
 else
    cout << "Go lower";
}

if 和 while 循环的条件都应该用括号嵌套。

于 2012-04-18T21:06:35.127 回答
0

您上面列出的所有内容都是语法错误。这可以通过阅读 c++ 的语法轻松解决

http://www.cs.duke.edu/csed/tapestry/howtoa.pdf

它应该看起来更像这样:

 while (x != y)
 {

     if (x < y)
        cout >> "Go higher";
     else
        cout >> "Go lower";
  }
于 2012-04-18T21:03:22.173 回答
0

让我们看看所有的错误:

#include <iostream>
#include <cstdlib>
using namespace std;

int main()   // guess number game
{
    int x;
    cout >> "Please enter a number\n"; // should be `cout <<` cin uses >>
    getline(cin x); // incorrect number of arguments should be 2 or 3 plus x is an int not string could use cin instead
    int y = rand();

    while x != y // error condition checks should be parentheses like (x != y)
    {

        if x < y; // error condition should be parentheses also by adding a semicolon here you terminate the statement
           cout >> "Go higher";
        else; // technically not an error but unintended code is executed cout >> "Go higher" is always executed because of the semi colon ;
           cout >> "Go lower";
    }

// no return of value, you declared main to return an int so you should
}

试试这个:

#include <iostream>
#include <cstdlib>
using namespace std;

int main()   // guess number game
{
    int x;
    cout << "Please enter a number\n";
    cin >> x;
    int y = rand();

    while (x != y)
    {

        if (x < y)
           cout >> "Go higher";
        else
           cout >> "Go lower";
    }

    return 0;
}
于 2012-04-18T21:13:27.663 回答