我想做一个游戏,你可以轮流三轮从计算机猜测所选的数字。然而,即使你得到正确的数字(已经使用 printf 语句进行了测试),它也永远不会说做得好,并且循环也会因继续或运行两次而变得困惑。
我尝试过删除中断。 我已放入 printf 语句来检查 randomise 和 questions 是否确实存储了正确的值,它们确实存储了正确的值。
# include <stdio.h>
# include <stdlib.h>
# include <math.h>
# include <time.h>
int questions() {
int num;
printf("Chose a number between one - ten: ");
scanf("%d",&num);
return num;
}
int randomise() {
int roll;
srand(time(NULL));
roll = rand()%10 + 1;
return roll;
}
int main() {
int chosenNum, enteredNum, i;
chosenNum = randomise();
enteredNum = questions();
for(i = 0; i < 10; i++) {
if(chosenNum != enteredNum) {
questions();
break;
}
else if(chosenNum == enteredNum) {
printf("WELL DONE !!!");
}
}
return 0;
}
零错误和零警告。结果应该是你做得很好。
最佳答案
有两个问题:
- 您正在使用
break
,如果第一个数字不匹配,则不允许再次尝试输入该数字,并且 - 循环中
questions()
的返回值未分配给enteredNum
(这意味着它将第二次尝试旧数字)。
关于c - 为什么 if 语句不打印 'well done' 以及为什么循环重复 questions(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57540435/