猜数字游戏

时间:2013-09-22 09:29:41

标签: c++ c

想一想1到100之间的数字。 然后,您的程序应该向您询问最少的问题,并根据您的答案确定您的号码。 程序的问题格式是NN(<,=,>)吗? 您可以通过3种方式回答该问题:<表示您的号码小于计算机的猜测,=表示该程序猜对了您的号码,并且>意味着你的号码大于计算机的猜测。 允许用户多次玩这个游戏。当用户准备退出时,输出平均#猜测/游戏。

使用单独的功能来玩游戏。根据需要从main()重复调用该函数。

所以输出应该如下所示:

猜一个1到100之间的数字(包括两者)并准备好回答几个问题。

是50(<,=,>)? <

是25(<,=,>)? <

是12(<,=,>)? >

是18(<,=,>)? >

是21(<,=,>)? <

是19(<,=,>)? >

你的猜测是20

这是一场精彩的比赛!你想再玩一次(是/否)? ÿ

猜一个1到100之间的数字(包括两者)并准备好回答几个问题。

是50(<,=,>)? >

是75(<,=,>)? <

是62(<,=,>)? >

是68(<,=,>)? >

是71(<,=,>)? =

这是一场精彩的比赛!

你想再玩一次(是/否)? Ñ


这是我到目前为止所拥有的。但是,playGame()函数甚至没有被执行。它给出了我没有任何计算的值50。

while ((round = 0)){
    printf("How about %d", guess);
    scanf("%c", &ans);

    if((ans = '<')){
        upper = guess;
        guess = (upper+lower)/2;
    }
    else if ((ans = '>')){
        lower = guess;
        guess = (upper+lower)/2;
    }
    else {
        round = 1;
        printf("Your number is %d", guess);
    }
}
return guess;
}

3 个答案:

答案 0 :(得分:3)

while ((round = 0)){  // This is an assignment. It evaluates to zero and the loop
                      // never executes

尝试

while ((round == 0)){  // This is a comparison.

答案 1 :(得分:2)

  

函数playGame()甚至没有被执行

当然可以。没有执行的是你的循环,因为

while ((round = 0))

是一项任务,而不是比较。

答案 2 :(得分:2)

您需要使用==来比较两件事,而不是=,它们将一个分配给另一个。你在三个地方犯了这个错误,所以即使你修复round = 0之后,它也会将每个答案视为<,直到你修复其他两个答案。

从您完成此操作的if条件的双括号中,我假设编译器警告您错误,并添加了额外的括号以禁用警告。如果您不知道自己在做什么,请不要忽略编译器警告。