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

int main(){
int min = 1;
int max = 100;
int count = 0;
int randomint = min + (rand() % (int)(max - min + 1));
bool isCorrect = true;
while(!isCorrect){
    int guess = 0;
    cout << "What is your guess? " << endl;
    cin >> guess;
    if(guess < randomint){
        cout << "Too low!" << endl;
        count++;
    } else if (guess > randomint){
        cout << "Too high!" << endl;
        count++;
    } else{
        cout << "Correct!" << endl;
        cout << "Number of Guesses: " << count << endl;
        isCorrect = true;
    }
}
}

新的 C++ 编程。我无法用它来编译一个 IDEOne,因为它没有我运行这个程序所需的输入系统。我必须尽快提交这个课程,但考虑到我的较大磁盘(存储我所有软件的地方)昨晚已损坏。
我为这个问题的愚蠢道歉。

4

2 回答 2

1

是的,它在语法上是正确的,但在逻辑上是不正确的,因为

bool isCorrect = true;

防止循环启动,它应该是

bool isCorrect = false;

并且像魅力一样工作(但通过例如运行来初始化随机数生成器是合理的srand(time(NULL));

于 2013-09-21T05:04:35.240 回答
0

您的程序中有两件事在逻辑上是错误的:

  1. 游戏根本不会运行,因为isCorrect最初是真的。
  2. 随机数生成器没有种子,因此rand()每次运行都会返回相同的值并且randomint始终相同。你应该srand( seed )事先打电话,哪里seed是无符号的(例如time(0))。*

*实际上,如果你不这样做,你的游戏仍然可以运行,但第一次尝试后很容易被击败

于 2013-09-21T05:07:22.360 回答