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

标签 c infinite-loop

<分区>

我编写了一个程序,用 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,这会导致我始终被值 1 卡住。应该是一个没有比较表达式的赋值:

arr[i]=0;

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

关于c - 用零替换偶数 - C 中的无限循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31901859/

相关文章:

c - 函数 HMAC_MD5 : Return succes but no value

javascript - setInterval 工作然后挂起浏览器 JavaScript

string - MIPS 问题 : Returning ($v0), 参数、jal 和 jr $ra(包含代码)

javascript - angularjs - 动态函数返回

java - 如何从 Java 循环中删除 while(true)?

.htaccess - 如何使用 .htaccess 将所有流量 302 重定向到主页?避免无限重定向循环?

c - 需要解释使用 c 完成的数学计算

c - 轮询并选择手动轮询[速度]

c++ - 您对大型项目的首选 C/C++ header 策略?

c - printf中的f是什么意思?