解题思路:
我们首先要设置一个输入的数,这是随机数的个数n,之后可以把n个数输入,之后我们要经过去重和排序之后才能达到目的。
去重:如果我们直接用两个for循环来寻找重复的话,这样不是太好算,并且还会出错,我刚开始的时候就是用两个for循环做的,可是调试了半个小时也没有能调试出来,所以就换了一种想法,我们可以在输入的时候动手脚,我们首先定义一个for循环来输入temp,如果temp等于我们事先定义的数组里的任意一个数的话,那么c++,首先c应该被定义为0,这样的话我们不做任何处理,则数组中的这个循环数为0,但是如果都循环完并且c还是为0的话,那么证明在数组里没有该数,所以我们可以把这个数给赋值进入这个数组中,然后这样可以把数给输入完,当最后数被输入完之后你会发现相同的数会有0,所以排序之后0应该会在最前面我们只需要把除0以外的数输出就可以了。
排序:使用冒泡排序
输出:最后输出的话把除0之外的数给输出即可。
注意事项:
1、可能会被题目的随机数给迷惑了,这个题的随机数就是你自己输入的数
2、最后输出的时候不能再数的最后输出个空格。
参考代码:
package itcast3; import java.util.Scanner; public class L1102 { static int n; public static void main(String[] args) { Scanner m=new Scanner (System.in); n=m.nextInt(); int array[]=new int[n]; int number=0; for(int i=0;i<array.length;i++) { int temp=m.nextInt(); int flag=0; for(int k=0;k<array.length;k++) { if(temp==array[k]) flag++; } if(flag==0) { array[i]=temp; number++; } } //for(int h=0;h<array.length;h++) // System.out.print(array[h]+" "); for(int i=0;i<array.length-1;i++) for(int k=i+1;k<array.length;k++) if(array[i]>array[k]) { int temp=array[i]; array[i]=array[k]; array[k]=temp; } // System.out.println(); System.out.println(number); for(int k=0;k<array.length-1;k++) if(array[k]!=0) System.out.print(array[k]+" "); System.out.println(array[array.length-1]); } }
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复