Java考試的題與答案2:數(shù)組最大最小值,棗,隨機(jī)與冒泡,完數(shù),月的天數(shù),水仙,質(zhì)數(shù)

1、定義一個(gè)數(shù)組{38,59,20,11,36,44,23},通過程序找出這個(gè)數(shù)組中的最大值和最小值,并打印出來?
package a1;
public class a1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?{
public static void main(String[] args)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
int[] arr = {38,59,20,11,36,44,23};
int i,j,tmp;
? ? for( i = 0;i<arr.length-1;i++){//外層循環(huán)n-1
? ? ? ? for( j = 0;j<arr.length-1;j++){//內(nèi)層循環(huán)n-1
? ? ? ? ? ? if(arr[j]>arr[j+1]){//從第一個(gè)開始,往后兩兩比較大小,如果前面的比后面的大,交換位置
? ? ? ? ? ? ? ? ?tmp = arr[j];
? ? ? ? ? ? ? ? arr[j] = arr[j+1];
? ? ? ? ? ? ? ? arr[j+1] = tmp;
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? System.out.println("最大值為"+arr[i]);
? ??
? ? System.out.println("最小值為"+arr[0]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
2、請寫出冒泡排序的核心代碼?
int[] arr = {38,59,20,11,36,44,23};
int i,j,tmp;
? ? for( i = 0;i<arr.length-1;i++){//外層循環(huán)n-1
? ? ? ? for( j = 0;j<arr.length-1;j++){//內(nèi)層循環(huán)n-1
? ? ? ? ? ? if(arr[j]>arr[j+1]){//從第一個(gè)開始,往后兩兩比較大小,如果前面的比后面的大,交換位置
? ? ? ? ? ? ? ? ?tmp = arr[j];
? ? ? ? ? ? ? ? arr[j] = arr[j+1];
? ? ? ? ? ? ? ? arr[j+1] = tmp;
? ? ? ? ? ? }
? ? ? ? }
? ? }
3、循環(huán)輸入10個(gè)整數(shù),統(tǒng)計(jì)這10個(gè)整數(shù)中有多少個(gè)偶數(shù)。
package a1;
import java.util.Scanner;
public class a1? ? {
public static void main(String[] args)? ? ? {
int a=0;
? ? for(int i = 1;i<=10;i++){
? ? System.out.println("請輸入第"+i+"個(gè)整數(shù)");
? ? Scanner s1=new Scanner(System.in);//聲明Scanner接收的類
? ?int b=s1.nextInt();//接收用戶輸入整形的數(shù)據(jù)
? ??
if(b%2==0){a++;}
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ??
? ? System.out.println("這10個(gè)整數(shù)中有多少"+a+"個(gè)偶數(shù)");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? }
4、循環(huán)輸入10個(gè)數(shù),之后逆序輸出這10個(gè)數(shù)?
package a1;
import java.util.Scanner;
public class a1? ? {
public static void main(String[] args)? ? ? {
int[] a= new int[10];
? ? for(int i =0;i<10;i++){
? ? System.out.print("請輸入第"+(i+1)+"個(gè)整數(shù)");
? ? Scanner s1=new Scanner(System.in);//聲明Scanner接收的類
? ?int b=s1.nextInt();//接收用戶輸入整形的數(shù)據(jù)
? ? a[i]=b;
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? System.out.println("逆序輸出這10個(gè)數(shù):");
? ? for(int i = 9;i>=0;i--){
? ? System.out.println(a[i]);
? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? }
1. 猴子摘了一堆棗N個(gè),第一天吃了一半,還嫌不過癮,
又多吃了一個(gè):第二天又吃了剩下的一半零一個(gè):
以后每天如此,到第十天,猴子一看只剩下一個(gè)了。
問最初有多少個(gè)棗子?
package a1;
public class a1{
public static void main(String[] args)?
{
int a=1;
for(int i=10;i>=1;i-- ){System.out.println("第"+i+"天有"+a+"個(gè)桃");a=(a+1)*2;}
}
}
2.使用隨機(jī)機(jī)器產(chǎn)生10個(gè)100以內(nèi)的整數(shù),并將其放入數(shù)組,然后用冒泡排序發(fā)將其進(jìn)行排序并使用循環(huán)輸出。
package a1;
import java.util.Random;
public class a1{
public static void main(String[] args)?
{? ? ? int[] nums=new int[10];//聲明一個(gè)空數(shù)組儲(chǔ)存10個(gè)數(shù)字
//使用for循環(huán)給這個(gè)數(shù)組進(jìn)行賦值
for(int i=0;i<nums.length;i++) {
Random r=new Random();//聲明一個(gè)隨機(jī)數(shù)的對(duì)象
nums[i]=r.nextInt(100);
}
//冒泡排序
for(int i=0;i<nums.length;i++) {
for(int j=0;j<nums.length;j++) {
if(nums[i]<nums[j]) {
int temp=nums[j];
nums[j]=nums[i];
nums[i]=temp;
}
}
}
//輸出的循環(huán)
for(int i=0;i<nums.length;i++) {
System.out.println(nums[i]);
}
}
}
3,輸入一個(gè)年份一個(gè)月份,然后判斷該月有多少天
package a1;
import java.util.Scanner;
public class a1{
public static void main(String[] args)?
{
System.out.println("輸入年");
Scanner b=new Scanner(System.in);
int z=b.nextInt();
System.out.println("輸入月");
Scanner b2=new Scanner(System.in);
int z2=b2.nextInt()
;
if(z%4==0&&z%100!=0||z%400==0){
int arr[]={31,29,31,30,31,30,31,31,30,31,30,31};
System.out.println("本月有"+arr[z2+1]+"天");}
else{
int arr[]={31,28,31,30,31,30,31,31,30,31,30,31};
System.out.println("本月有"+arr[z2+1]+"天");}
}
}
4、判斷101-200之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)(只能夠被1和自身整除的數(shù))。
package a1;
import java.util.Scanner;
public class a1{
public static void main(String[] args)?
{? ? ? ? ? ?int he=0;
for(int i=101;i<=200;i++) {
boolean b=true;//ture? false? ?30>20
for(int j=2;j<i;j++) {//判斷從2到小于自身1的數(shù)字
if(i%j==0) {//用本身除以2到自身小于1的數(shù)字,如果能被整除,這個(gè)就不是質(zhì)數(shù)
b=false;//如果不是直接就將b設(shè)為false
break;//跳出循環(huán)
? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? }
if(b) {//如果b它不是false,那這是數(shù)字就是質(zhì)數(shù)
he=he+1;
System.out.println(i);
? ? ? }
? ? ? ? ? ? ? ? ? ? ? }
System.out.print("有"+he+"個(gè)質(zhì)數(shù)");
}
}
5、打印出所有的"水仙花數(shù)",所謂"水仙花數(shù)"是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個(gè)"水仙花數(shù)",因?yàn)?53=1的三次方+5的三次方+3的三次方。
package a1;
public class a1{
?
public static void main(String[] args)?
{? ? ? ? ?
int i,j,k,n;
System.out.println("小于1000的水仙花數(shù)是");
n=100;
while(n<1000)
{i=n/100;
j=(n-i*100)/10;
k=n%10;
if(i*i*i+j*j*j+k*k*k==n)
System.out.println(n);
n++;}
}
? }
7、一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為"完數(shù)"。例如6=1+2+3.編程找出1000以內(nèi)的所有完數(shù)。
解法一:
package a1;
public class a1{
?
public static void main(String[] args)?
{? ? ? ? ?
int n=1000;?
int r,j,i;?
int he=0;
for(i=1;i<=n; i++){?
r = 0;?
for(j=1;j<i;j++){?
if(i%j == 0){?
r = r + j;?
? ? ? ? ? ? }?
? ? ? ? ? ? ? ? ?}?
if(r == i){ he=he+1;
System.out.println("1000以內(nèi)的第"+he+"個(gè)完數(shù)為:"+r);?
? ? ? ? ? }?
? ? ? ? ? ? ? ? ? ?}
}
}
解法二:
package a1;
public class a1{
?
public static void main(String[] args)?
{? ? ? ? ?
int n=1000;?
int r,j,i;?
int he=0;
System.out.println("1000以內(nèi)的所有完數(shù)為:");
for(i=1;i<=n; i++){?
r = 0; ?
for(j=1;j<i;j++){?
if(i%j == 0){?
r = r + j;?
? ? ? ? ? ? }?
? ? ? ? ? ? ? ? ?}?
if(r == i){ he=he+1;
System.out.println(r);?
? ? ? ? ? }?
? ? ? ? ? ? ? ? ? ?}
}
}