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

时间:2015-08-09 07:20:23

标签: c infinite-loop

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

  

输入:1 2 3 4 5 6   输出: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;       
}

1 个答案:

答案 0 :(得分:3)

造成无限循环的原因是这一行:

arr[i]==0;

这不会在arr[i]时更新i = 1的值,因此arr[1]始终为2,这会导致我总是卡住值1.应该是一项任务没有比较表达式:

arr[i]=0;

注意:如果在编译时启用警告,则相关行应生成一个。