2

我刚刚开始我的编程入门课程(所以请多多包涵),我有点卡在第一个作业上。

我应该编写一个数字猜谜游戏,将 1 到 10 之间的随机数存储到一个变量中,提示用户输入一个数字,并通知用户是否猜到了相同的数字。

我已经搞砸了一段时间了,代码和我开始的时候相比有了很大的变化。目前,无论我猜什么,该程序都在说“恭喜,你是赢家”......

如果有人能指出我做错的方向,那就太好了。

自最初发布问题以来,代码已被编辑

#include <stdio.h>
#include <ctype.h>
#include <time.h>
#include <stdlib.h>

int main()
{

    //Declare Variables 
    int RandomNum;
    int UserGuess;

    //Initialize Variables
    RandomNum=0;
    srand ( (unsigned)time ( NULL ) );
    char UserInput = 'a';
    int a = UserInput;

    //Generate RandomNum
    RandomNum = (rand() % 10)+1;

    //Prompt User for UserInput
    printf("Guess the random number!\n");
    printf("Enter your guess now!\n");
    scanf("%d", &UserInput);

    //Determine Outcome
    if (UserInput == RandomNum) 
        printf("You're a WINNER!\n");
    else
        printf("Incorrect! The number was %d\n", RandomNum);

    //Stay Open
    system("PAUSE");
}
4

5 回答 5

3

改变这一行 -

if (UserGuess = RandomNum)

对此——

if (UserInput == RandomNum)

第一个存储在 中的用户输入分配RandomNumUserGuess,然后将其隐式转换为真或假,然后if编译器检查条件的真值。我假设您正在输入非零值作为程序输入。如果是这种情况,那么 C 将认为它是真的。事实上,任何非零值(无论是正数、负数还是小数)都被 C 认为是真的。

第二个表达式检查两个变量是否相等,而不是将一个分配给另一个。因此,您将获得所需的行为。

于 2013-10-08T05:06:25.463 回答
1

=你很困惑==

if (UserGuess = RandomNum)不会给出您要检查猜测是否等于随机未生成的布尔结果。

利用

if (UserGuess == RandomNum) 
于 2013-10-08T05:09:07.713 回答
1

if的不正确。==是相等,=是赋值。

于 2013-10-08T05:06:35.017 回答
0

Are you sure that atoi() function takes an integer argument ? because atoi() function is used to convert string to integer.

Read this article.

于 2013-10-08T06:03:26.090 回答
0

更改的类型UserInput,删除UserGuess和虚假调用atoi(),它会工作:

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main() {

//Declare Variables
    int RandomNum;
    int UserInput;      //  Changed to int

//Initialize Variables
    RandomNum = 0;
    UserInput = 0;      // Changed initialization
    srand((unsigned) time(NULL));

//Generate RandomNum
    RandomNum = (rand() % 10) + 1;

//Prompt User for UserInput
    printf("Guess the random number!\n");
    printf("Enter your guess now!\n");
    scanf("%d", &UserInput);

//Determine Outcome
    if (UserInput == RandomNum)
        printf("You're a WINNER!\n");

    else
        printf("Incorrect! The number was %d\n", RandomNum);

//Stay Open
    system("PAUSE");
}
于 2013-10-08T06:36:42.830 回答