用零替换偶数 - C 中的无限循环问题

Replacing even numbers with zero - Infinite loop issue in C

我编写了一个程序,用 0 替换偶数并将它们放在数组的末尾。

Input: 1 2 3 4 5 6 Output: 1 3 5 0 0 0

约束是仅使用一个循环两个变量,除了数组。我用 while 循环完成了它,但由于某些未知原因它无限循环。有人可以澄清一下吗?

#include<stdio.h>
#include<stdlib.h>
int main(){
    int arr[] = {1,2,3,4,5,6};
    int i=0,j=5;
    while(i<6){

        //Loops till the zero is swapped to the end of the array
        if(j!=5){
            arr[j] = arr[j] + arr[j+1];
            arr[j+1] = arr[j] - arr[j+1];
            arr[j] = arr[j] - arr[j+1];
            j++; continue;
        }

        //Checks for even number
        if(arr[i]%2==0 && arr[i]!=0){
            arr[i]==0;
            j=i;
            continue;
        }

        printf("%d ",arr[i]);
        i++;
    }
    return 0;       
}

导致无限循环的原因是这一行:

arr[i]==0;

这不会在 i = 1 时更新 arr[i] 的值,因此 arr[1] 始终为 2,这导致 i 始终停留在值 1 上。应该是没有比较表达式的赋值:

arr[i]=0;

注意:如果您在编译时启用警告,则相关行应该会产生警告。