在此代码中,此行的作用是:arr[count++] = arr[i];
?这是一个将所有零都移到末尾的程序,因此当执行arr[count++] = arr[i];
时,计数将增加到1,而arr[0]
将进入arr[1]
,因此arr [0 ]将空缺。这不是问题吗?当执行while (count < n)
时,计数将从零开始???
arr[count++] = 0;
#include <iostream>
using namespace std;
void pushZerosToEnd(int arr[], int n)
{
int count = 0; // Count of non-zero elements
for (int i = 0; i < n; i++)
if (arr[i] != 0)
arr[count++] = arr[i];
while (count < n)
arr[count++] = 0;
}
int main()
{
int arr[] = {1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0, 9};
int n = sizeof(arr) / sizeof(arr[0]);
pushZerosToEnd(arr, n);
cout << "Array after pushing all zeros to end of array :\n";
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
return 0;
}
答案 0 :(得分:1)
arr[count++] = arr[i];
该语句的意思是:
arr[count]=arr[i];
count+=1;
因此,通过这种方式,您所有的非零值都将堆积在前面,并且使用while
循环将非零值向后移动。
引用:https://www.geeksforgeeks.org/pre-increment-and-post-increment-in-c/
希望有帮助。干杯!