我做了一个程序,用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;
}
答案 0 :(得分:3)
造成无限循环的原因是这一行:
arr[i]==0;
这不会在arr[i]
时更新i = 1
的值,因此arr[1]
始终为2,这会导致我总是卡住值1.应该是一项任务没有比较表达式:
arr[i]=0;
注意:如果在编译时启用警告,则相关行应生成一个。