2 gudong1996 gudong1996 于 2016.04.07 15:31 提问

新人问一个c语言问题,拜托各位帮我解释一下

要求找出一个x,使其除以5余1,除以6余5,除以7余4,除以11余10
我写的代码
int main()
{
int x=0;
do{
x++;
}while(x%5!=1&&x%6!=5&&x%7!=4&&x%11!=10);
printf("%d",x);

return 0;

}
问题出现在while括号里面条件,参考答案是while(!(x%5==1&&x%6==5&&x%7==4&&x%11==10));
请问我写的while括号里的条件错在哪里?

9个回答

qq423399099
qq423399099   Ds   Rxr 2016.04.07 15:44
已采纳

while(!(x%5==1&&x%6==5&&x%7==4&&x%11==10))等价于
while(x%5!=1||x%6!=5||x%7!=4||x%11!=10))

u013410745
u013410745   2016.04.07 15:37

改为或关系就行了,,,,,(非要10个字图片说明

suwu150
suwu150   2016.04.07 16:21

把条件改为(x%5==1&&x%6==5&&x%7==4&&x%11==10)啊。

u012862619
u012862619   2016.04.07 16:44

x%5==1&&x%6==5&&x%7==4&&x%11==10

rwerty
rwerty   2016.04.07 16:51

去看看离散数学中的知识

yongqizi12
yongqizi12   2016.04.07 17:05

运算符的优先级的问题,while((x%5!=1)&&(x%6!=5)&&(x%7!=4)&&(x%11!=10)); &&他是有短路的作用的

herozhangbz
herozhangbz   2016.04.07 17:28

你把所有且取非就是所有或啊,所有且跟所有或组成一个全集。

q793799535
q793799535   2016.04.07 18:01

兄弟,”=“是赋值运算符啊,“==”才是我们传统数学中说的等号

suwu150
suwu150   2016.04.08 12:47

while(x%5!=1&&x%6!=5&&x%7!=4&&x%11!=10);,
你这句话的意思是,
x%5!=1-----当X除以5的余数不为1时
x%6!=5-----当X除以6的余数不为5时
x%7!=4-----当X除以7的余数不为4时
x%11!=10-----当X除以11的余数不为10时
,你用的是“!=”即不等于,此处的逻辑判断应该是等于“==”。
也就是

把条件改为(x%5==1&&x%6==5&&x%7==4&&x%11==10)啊。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!