算法提高 6-9删除数组中的0元素
时间限制:1.0s 内存限制:512.0MB
编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动。注意,CompactIntegers函数需要接收数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。
输入时首先读入数组长度,再依次读入每个元素。
将调用此函数后得到的数组和函数返回值输出。
输入时首先读入数组长度,再依次读入每个元素。
将调用此函数后得到的数组和函数返回值输出。
样例输入
7
2 0 4 3 0 0 5
2 0 4 3 0 0 5
样例输出
2 4 3 5
4
4
类似这题碰到不止两次了。
1 #include<stdio.h> 2 void Del(int a[],int N){ 3 int j=0; 4 for(int i=0;i<N;i++){ 5 if(a[i]!=0){ 6 a[j]=a[i]; 7 j++; 8 } 9 } 10 for(int i=0;i<j;i++){ 11 printf("%d ",a[i]); 12 } 13 printf(" %d",j); 14 } 15 int main(){ 16 int N; 17 scanf("%d",&N); 18 int a[N];//定义长度为N的一维数组 19 //输入数组 20 for(int i=0; i<N; i++){//录入数组a 21 scanf("%d",&a[i]); 22 } 23 Del(a,N); 24 }