在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
问题描述: 从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动。注意,CompactIntegers函数需要接受数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。输出删除后数组中元素的个数并依次输出数组元素。 输入格式: 第一行输入一个整数,代表数组中有多少个数,第二行输入数组的元素。 输出格式: 第一行输出不为0的元素个数,第二行输出不为0的元素。 测试样例1: 输入: 5 3 4 0 0 2 输出: 3 3 4 2(3 4 2是以空格隔开的3个数) 测试样例2: 输入: 3 0 0 0 输出: 0 测试样例3: 输入: 7 0 0 7 0 0 9 0 输出: 2 7 9 思路:直接对整个数组进行遍历,遇到0就把0后面的元素往前移,然后减少数组的元素个数。 代码如下: 1 #include<iostream> 2 using namespace std; 3 int CompactIntegers(int *arr,int n) 4 { 5 //直接从头到尾遍历整个数组,是0就将n减1,同时数组下表往前移 6 for (int i = 0; i < n; i++) 7 { 8 if (arr[i] == 0) 9 { 10 //将所有元素向前移 11 int j = i; 12 for (; j < n - 1; j++) 13 { 14 arr[j] = arr[j + 1]; 15 } 16 //将要判断的元素的下标前移 17 i = i - 1; 18 //非0元素个数减1 19 n--; 20 } 21 } 22 return n; 23 } 24 25 int main(void) 26 { 27 int n; 28 cin >> n; 29 int* arr = new int[n]; 30 for (int i = 0; i < n; i++) 31 { 32 cin >> arr[i]; 33 } 34 int t = CompactIntegers(arr, n); 35 cout << t << endl; 36 if (t == 0) 37 { 38 return 0; 39 } 40 else 41 { 42 for (int i = 0; i < t - 1; i++) 43 { 44 cout << arr[i] << " "; 45 } 46 cout << arr[t - 1]; 47 } 48 return 0; 49 }
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论