这将如何执行

时间:2019-06-19 05:57:14

标签: c++

在此代码中,此行的作用是: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; 
}

1 个答案:

答案 0 :(得分:1)

arr[count++] = arr[i];
该语句的意思是:

arr[count]=arr[i];
count+=1;

因此,通过这种方式,您所有的非零值都将堆积在前面,并且使用while循环将非零值向后移动。

引用:https://www.geeksforgeeks.org/pre-increment-and-post-increment-in-c/

希望有帮助。干杯!