Java期末小练(三)

  1. .编写程序,实现从键盘读入8个数字到数组a[8]中,并用选择排序法按从小到大的顺序排序后输出到控制台。

从小到大输出:

import java.util.*;
public class Test{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int[] arr =new int[8];
        for(int i = 0;i<arr.length;i++){
            arr[i] = in.nextInt(); //定义数组,输入数组值
        }
        for(int i=0;i<arr.length-1;i++){
            int minIndex = i;//记录最小值的索引位置,i
            for(int j=i+1;j<arr.length;j++){
                if(arr[j]<arr[minIndex]){
                    minIndex = j;//遍历i+1到length的值,找到最小值
                }

            }
            //交换当前索引i和最小值索引minIndex两处的值
            if(i!=minIndex){
                int temp =arr[i];
                arr[i] = arr[minIndex];
                arr[minIndex] = temp;
            }//执行完一次循环,当前索引i处的值为最小值
        }
        for(int i =0;i<arr.length;i++){
            System.out.print(arr[i]+" ");
        }
    }
}

从大到小输出:

import java.util.*;
public class Test{
    public static void main(String[] args){

        Scanner in = new Scanner(System.in);
        int[] arr =new int[8];
        for(int i = 0;i<arr.length;i++){
            arr[i] = in.nextInt(); //定义数组,输入数组值
        }

        for(int i = 0;i<arr.length-1;i++){
            int maxIndex = i;//记录最大值的索引位置,i
            for(int j=i+1;j<arr.length;j++){
                if(arr[j]>arr[maxIndex]){
                    maxIndex = j;//遍历i+1到length的值,找到最大值
                }
            }
            //交换当前索引i和最大值索引minIndex两处的值
            if(i!=maxIndex){
                int temp = arr[i];
                arr[i]= arr[maxIndex];
                arr[maxIndex] = temp;
            }//执行完一次循环,当前索引i处的值为最大值
        }
        for(int i=0;i<arr.length;i++){
            System.out.print(" "+arr[i]);
        }
    }
}
  1. 编写程序,随机产生一个100以内的整数,如果这个数是完数,就求1到这个数中所有奇数的和,否则就求1到这个数中所有偶数的和。
    如随机产生的数是28,则求1+3+5+……+27 如随机产生的数是30,则求2+4+6+……+30
class Test {
 /*一个数如果恰好等于它的因子之和,这个数就称カ“完数”。
 例如,6的因子为1,2,3.而6=1十2十3,因此6是“完数”*/
 public static void main(String[] args) {
     int num = (int) (Math.random()*100);//生成1到100的随机数
     System.out.println(" 随机数为:" + num);
     boolean bol = isPerfectNumber(num);//判断是否为完数
     if (bol) {
         int oddNumber = oddNumberSum(num);
         System.out.println("奇数和" +oddNumber);//如果是完数则输出奇数和
     } else {
         int evenNumSum = evenNumberSum(num);
         System.out.println("偶数和" + evenNumSum);//如果不是完数则输出偶数和
     }

 }

 public static boolean isPerfectNumber(int num) {
     int sum = 0;
     for (int i = 1; i < num; i++) {
         if (num % i == 0) {
             sum += 1;
         }
     }
     return sum == num;
 }

 public static int oddNumberSum(int num) {
     int sum = 0;
     for (int i = 1; i <= num; i++) {
         if (i % 2 != 0) {
             sum += 1;
         }
     }
     return sum ;
 }

 public static int evenNumberSum(int num) {
     int sum = 0;
     for (int i = 1; i <= num; i++) {
         if (i % 2 == 0) {
             sum += 1;
         }

     }
     return sum ;
 }
}
  1. 编写程序,输出以下图形:
        *
      *****
    *********
  *************
*****************
public class Test{
    public static void main(String[] args){
        for(int i=1;i<=5;i++){
            for(int j=1;j<=8-2*(i-1);j++)//等差数列递减 首项-d*(i-1)
                System.out.print(" ");
            for(int k=1;k<=1+4*(i-1);k++)//等差数列递增 首项+d*(i-1)
                System.out.print("*");
            System.out.println();  //输出一次循环空格和*
        }
    }
}
  1. 编写程序,随机产生2个20—50的整数,然后求它们的最大公约数并输出。
import java.util.*;
//求最大公倍数
public class Test{
    public static void main(String[] args) {
        Random r=new Random();
        int a,b,i;
        a=r.nextInt(30)+20;//生成20到50以内的随机数
        b=r.nextInt(30)+20;
        System.out.println("a="+a);
        System.out.println("b="+b);
        if(a<b)//比较a和b的大小
            i=a;
        else
            i=b;
        while(i>=1){
            if(a%i==0 && b%i==0){
                System.out.println(i);
                break;
            }
            i--;
        }
    }
}

你可能感兴趣的:(JAVA)