C如果陈述无效
发布时间:2020-12-16 07:08:09 所属栏目:百科 来源:网络整理
导读:Noob在这里尝试运行一些基本代码.我有一些if语句在我尝试一起运行时没有运行,但是当我通过注释掉其他语句来隔离最后一个if语句时,它是有效的(注释在那里让你看我是怎么做的).任何人都可以解释为什么if语句不能一起工作(如果它仍然没有用,我已经尝试了其他方
Noob在这里尝试运行一些基本代码.我有一些if语句在我尝试一起运行时没有运行,但是当我通过注释掉其他语句来隔离最后一个if语句时,它是有效的(注释在那里让你看我是怎么做的).任何人都可以解释为什么if语句不能一起工作(如果它仍然没有用,我已经尝试了其他方法)?在这里,您必须分别为x,y和z选择数字1,2和3,输出应随机将aaa,bbb或ccc指定为1.如果代码很丑,我很抱歉.谢谢!
int x,y,z,a,b,c,d,e,aaa,bbb,ccc,r; a = 0; b = 0; c = 0; aaa = 0; bbb = 0; ccc = 0; printf("Pick x:n"); scanf("%d",&x); printf("Pick y:n"); scanf("%d",&y); printf("Pick z:n"); scanf("%d",&z); printf("You chose %d,%d,%d.n",x,z); if (x == 1 || y == 1 || z == 1) {a = (1);} printf("a = %dn",a); if (x == 2 || y == 2 || z == 2) {b = (1);} printf("b = %dn",b); if (x == 3 || y == 3 || z == 3) {c = (1);} printf("c = %dn",c); if (a == 1 && b == 1 && c == 1 && d != 1 && e != 1) { /*if (aaa < bbb && aaa < ccc) {aaa = (aaa + 1);} if (bbb < aaa && bbb < ccc) {bbb = (bbb + 1);} if (ccc < bbb && ccc < aaa) {ccc = (ccc + 1);} if (aaa == bbb && aaa != ccc){int r = rand() % 2 + 1; printf("aRANDOM2 = %dn",r); if (r == 1) {aaa = (aaa + 1);} if (r == 2) {bbb = (bbb + 1);} if (aaa == ccc && aaa != bbb){int r = rand() % 2 + 1; printf("bRANDOM2 = %dn",r); if (r == 1) {aaa = (aaa + 1);} if (r == 2) {ccc = (ccc + 1);} if (ccc == bbb && aaa != ccc){int r = rand() % 2 + 1; printf("cRANDOM2 = %dn",r); if (r == 1) {ccc = (ccc + 1);} if (r == 2) {bbb = (bbb + 1);}*/ if (aaa == bbb && bbb == ccc){int r = rand() % 3 + 1; printf("RANDOM3 = %dn",r); if (r == 1) {aaa = (aaa + 1);} if (r == 2) {bbb = (bbb + 1);} if (r == 3) {ccc = (ccc + 1);} }}/*}}}*/ printf("aaa = %dn",aaa); printf("bbb = %dn",bbb); printf("ccc = %dn",ccc); return 0; 解决方法
在评论之前,最后三个aaa / bbb / ccc if语句中的每一个都嵌套在前一个if语句中.因此,当if(aaa == bbb&& aaa!= ccc)被测试为假时,所有代码的所有其余代码都被跳过了.
换句话说,它真正做到的是: if (aaa == bbb && aaa != ccc) { int r = rand() % 2 + 1; printf("aRANDOM2 = %dn",r); if (r == 1) {aaa = (aaa + 1);} if (r == 2) {bbb = (bbb + 1);} if (aaa == ccc && aaa != bbb) { int r = rand() % 2 + 1; printf("bRANDOM2 = %dn",r); if (r == 1) {aaa = (aaa + 1);} if (r == 2) {ccc = (ccc + 1);} if (ccc == bbb && aaa != ccc) { int r = rand() % 2 + 1; printf("cRANDOM2 = %dn",r); if (r == 1) {ccc = (ccc + 1);} if (r == 2) {bbb = (bbb + 1);} if (aaa == bbb && bbb == ccc) { int r = rand() % 3 + 1; printf("RANDOM3 = %dn",r); if (r == 1) {aaa = (aaa + 1);} if (r == 2) {bbb = (bbb + 1);} if (r == 3) {ccc = (ccc + 1);} } } } } } 可能你想要做的是将三个紧密的大括号移动到各自块的末尾,如下所示: if (aaa == bbb && aaa != ccc) { int r = rand() % 2 + 1; printf("aRANDOM2 = %dn",r); if (r == 1) {aaa = (aaa + 1);} if (r == 2) {bbb = (bbb + 1);} } if (aaa == ccc && aaa != bbb) { int r = rand() % 2 + 1; printf("bRANDOM2 = %dn",r); if (r == 1) {aaa = (aaa + 1);} if (r == 2) {ccc = (ccc + 1);} } if (ccc == bbb && aaa != ccc) { int r = rand() % 2 + 1; printf("cRANDOM2 = %dn",r); if (r == 1) {ccc = (ccc + 1);} if (r == 2) {bbb = (bbb + 1);} } if (aaa == bbb && bbb == ccc) { int r = rand() % 3 + 1; printf("RANDOM3 = %dn",r); if (r == 1) {aaa = (aaa + 1);} if (r == 2) {bbb = (bbb + 1);} if (r == 3) {ccc = (ccc + 1);} } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |