我正在做一个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);
}