蓝桥杯寒假任务之删除数组零元素

  算法训练 删除数组零元素  
时间限制:1.0s   内存限制:512.0MB
    
从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动。注意,CompactIntegers函数需要接受数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。输出删除后数组中元素的个数并依次输出数组元素。
样例输入: (输入格式说明:5为输入数据的个数,3 4 0 0 2 是以空格隔开的5个整数)
5
3 4 0 0 2
样例输出:(输出格式说明:3为非零数据的个数,3 4 2 是以空格隔开的3个非零整数)
3
3 4 2
样例输入: 
7
0 0 7 0 0 9 0
样例输出:
2
7 9
样例输入: 
3
0 0 0
样例输出:
0
 这题写了很久,因为刚开始在自己写的时候,测试的时候出现错误,但是自己并不知道,改了很久都没有改出来。还把eclipse的工作区间转换了找不到之前的工作区间,搞了很久。后来在switch workspace里找到原来默认的工作区间。早上的时候花了差不多一个小时去改程序,才发现测试数据搞错了,然后开始去改,怎么改都改不多,后来找了别人的代码看了看,才发现错误。

这题是数组方面的,数组方面做过的题比较多,这题相对来说比较简单。收获:删除一个数组中的元素,一般都是再建立一个数组。
import java.util.Scanner;
public class Main {


public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int a[] = new int[n];
for(int i=0;i<n;i++){
a[i] = input.nextInt();
}
CompactIntegers(a,n);
}

    
public static void CompactIntegers(int a[],int n){
int j=0;
int b[] = new int[n];
for(int i=0;i<n;i++){
if(a[i]!=0){
b[j] = a[i];
j++;
}
   }
System.out.println(j);
for(int k=0;k<j;k++){
System.out.print(b[k]+" ");//下标从零开始,如果输出b[j]
}
}                                                                                          #include <stdio.h>
int main()
{
int n,i;
int count = 0;
int flag = 0;
scanf("%d",&n);
int a[n];
for(i = 0;i < n;i++)
{
scanf("%d",&a[i]);
}
for(i = 0;i < n;i++)
{
if(a[i] != 0)
{
count++;
}
}
printf("%d\n",count);
for(i = 0;i < n;i++)
{
if(a[i] != 0)
{
printf("%d ",a[i]);
}
}
}

                                                                                            


发布了48 篇原创文章 · 获赞 9 · 访问量 7918

猜你喜欢

转载自blog.csdn.net/trh_csdn/article/details/57080376
今日推荐