简单的“随机数猜测游戏”/ IF ELSE在C中无法正常工作

时间:2013-10-08 05:05:11

标签: c if-statement random

我刚刚开始我的编程简介课程(所以请耐心等待我),我有点卡在第一个任务之一。

我应该编码一个数字猜谜游戏来存储1和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");
}

5 个答案:

答案 0 :(得分:3)

更改此行 -

if (UserGuess = RandomNum)

到此 -

if (UserInput == RandomNum)

第一个RandomNum中存储的用户输入分配<{1}}到UserGuess,然后隐式转换为true或false,然后是{的真值{1}}条件由编译器检查。我假设您输入非零值作为您的程序输入。如果是这种情况,那么C会认为它是真的。事实上,任何非零值(无论是正数,负数还是分数)都被C认为是真实的。

第二个表达式检查两个变量的相等性,而不是将两个变量分配给另一个变量。所以,你会得到理想的行为。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

您将===

混淆

if (UserGuess = RandomNum)不会给出布尔结果,你想检查猜测是否等于随机没有生成..

使用

if (UserGuess == RandomNum) 

答案 3 :(得分:0)

您确定atoi()函数采用整数参数吗? 因为atoi()函数用于将字符串转换为整数。

阅读this article

答案 4 :(得分: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");
}