解题思路:
我们首先要设置一个输入的数,这是随机数的个数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语言代码)--此题的题目描述有问题浏览:1844 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:268 |
简单的a+b (C语言代码)浏览:572 |
企业奖金发放 (C语言代码)浏览:2462 |
格式化数据输出 (C语言代码)浏览:882 |
C二级辅导-等差数列 (C语言代码)浏览:891 |
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:1029 |
10月月赛题解浏览:554 |
C二级辅导-公约公倍 (C语言代码)浏览:1325 |
孤独的骑士 (C语言代码)浏览:1416 |