c - 为什么 if 语句不打印 'well done' 以及为什么循环重复 questions()

标签 c loops if-statement random

我想做一个游戏,你可以轮流三轮从计算机猜测所选的数字。然而,即使你得到正确的数字(已经使用 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;
}

零错误和零警告。结果应该是你做得很好。

最佳答案

有两个问题:

  1. 您正在使用 break,如果第一个数字不匹配,则不允许再次尝试输入该数字,并且
  2. 循环中 questions() 的返回值未分配给 enteredNum(这意味着它将第二次尝试旧数字)。

关于c - 为什么 if 语句不打印 'well done' 以及为什么循环重复 questions(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57540435/

相关文章:

c - linux - 如何将编译器的所有输出捕获到文件以及需要显示输出

c - 将 execle 与 wget 命令一起使用

javascript - 创建对象数组只进行 1 次迭代

java - try..catch VS long if()

python - 支持 C 和 Python 之间的跨语言 (c) 标签的代码编辑器

c - 如果 union 的格式不同,C 如何解释来自 union 的数据?

java - Java中奇怪的 "for(;;)"死循环,这个有什么用?

mysql - 使用 'While' 回显数组结果不显示第 1 行

C 中的条件逻辑

c - IF - Else 语句不起作用