編程題目:
36.現有1~100共一百個自然數,已隨機放入一個有98個元素的數組a[98]。要求寫出一個儘量簡單的方案,找出沒有被放入數組的那2個數,並在屏幕上打印這2個數。
示例代碼:
package program.calculation.exercise36;
/**
* 36.現有1~100共一百個自然數,已隨機放入一個有98個元素的數組a[98]。
* 要求寫出一個儘量簡單的方案,找出沒有被放入數組的那2個數,並在屏幕上打印這2個數。
*
*/
public class SelectNoArray {
public static void main(String[] args) {
int[] a = new int[98];
int[] num = new int[100];
//產生1~100共100個自然數
for(int i=0;i<num.length;i++){
num[i] = i + 1;
}
//將產生的100個自然數隨機放入數組中
//方法 :在隨機插入的過程中把插入的全置爲0,剩下的就是沒插入的
for(int i=0;i<a.length;i++){
while(true){
int index = (int) (Math.random()*100);//隨機獲取自然數數組的下標
if(num[index] != 0){
//a[i] = index+1; //將自然數放入數組中,注意:自然數從1開始到100結束,所以下標+1
a[i] = num[index];//或者
num[index] = 0; //將取過的自然數全賦值爲0,以保證不重複
break;
}
}
}
//輸出放入數組的98個數
System.out.println("輸出放入數組的98個數:");
for(int i=0;i<a.length;i++){
if(i%10 == 0 && i>0){//按照每行10個數排列
System.out.println();
}
System.out.print(a[i]+"\t");
}
//輸出沒有被放入數組的2個數
System.out.println();
System.out.println("沒有被放入數組的2個數:");
for(int i=0;i<num.length;i++){
if(num[i] != 0){
System.out.print(num[i]+"\t");
}
}
}
}