我刚刚开始我的编程简介课程(所以请耐心等待我),我有点卡在第一个任务之一。
我应该编码一个数字猜谜游戏来存储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");
}
答案 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");
}