我想要计数在0和1的数组中发生的0的数量。如果数组的一半是0,我保留它。如果不是,我改变它。为了方便起见,我开始计算第二位数(索引1)。我不关心索引0,不计算它。我不知道为什么我得到这个无限循环..难道是在不知道为什么这将返回一个无限循环
if (z == 4){
g = 1;
}
#include "stdlib.h"
#include "stdio.h"
int main(){
int i, j, z, g;
z = 0;
int ar[9] = {0,0,0,0,0,0,0,0,0};
g = 0;
while(!g){
for(i = 1; i < 9; i++){
printf("%d", ar[i]);
if (ar[i] == 0){
z++;
}
}
if (z == 4){
g = 1;
}
else {
for (i = 1; i < 5; i++){
ar[i] = 0;
}
for (i = 5; i < 9; i++){
ar[i] = 1;
}
}
}
printf("\n %d", z);
return 0;
}
'其他{' - >'否则{Z = 0;' – BLUEPIXY
不会照顾这个问题吗?如果else语句有效,它将是4 .. – shoestringfries
不,因为如果z!= 4,你进入for循环,但是z已经大于4,所以你永远不会达到(g = 1) – CIsForCookies