我正在做一个C程序,只需要输入1&;C中的8。我做错了什么? #包括 #包括 内部主(空) { int n; 做 { n=get_int(“输入一个介于1和8之间的数字(包括8):”; } 而((n8)); printf(“%d\n”,n); }

我正在做一个C程序,只需要输入1&;C中的8。我做错了什么? #包括 #包括 内部主(空) { int n; 做 { n=get_int(“输入一个介于1和8之间的数字(包括8):”; } 而((n8)); printf(“%d\n”,n); },c,limit,do-while,cs50,C,Limit,Do While,Cs50,条件(n8)永远不会为真,因为当数字大于8时,任何数字都不小于1 您应该改用(n8)。n8为真(n8)是真的,当且仅当这两件事都是真的。它们永远不会同时为真,因为n永远不会同时小于1和大于8。提示:google“de Morgan定理”数字不能同时小于1和大于8,因此do while循环的条件永远不会为真。条件应该是在n小于1或大于8时继续重复循环。虽然您的陈述是正确的,OP也希望它介于8和1之间,或者可能是我弄错了?@ROOT抱歉,我不太理解您。你认为这不会是“介于8和1之间”吗?@MikeC

条件
(n8)
永远不会为真,因为当数字大于8时,任何数字都不小于1


您应该改用
(n8)

n<1
为真(如果
n
小于1,则产生值1)<如果
n
大于
8
,则code>n>8为真
(n<1)和&(n>8)
是真的,当且仅当这两件事都是真的。它们永远不会同时为真,因为
n
永远不会同时小于1和大于8。提示:google“de Morgan定理”数字不能同时小于1和大于8,因此do while循环的条件永远不会为真。条件应该是在n小于1或大于8时继续重复循环。虽然您的陈述是正确的,OP也希望它介于
8
1
之间,或者可能是我弄错了?@ROOT抱歉,我不太理解您。你认为这不会是“介于
8
1
之间”吗?@MikeCAT,是的,这就是我的意思。@ROOT你为什么这么认为?@MikeCAT,对不起,我的朋友,没关系,我没看到,我的坏朋友。
#include <stdio.h>
#include <cs50.h>

int main(void)
{
    int n;
    do
    {
     n = get_int("Enter a number between 1 and 8(including 8):  ");
    }
    while ((n<1) && (n>8));
    printf("%d\n",n);

}