• 习题-四季-回文数-不死神兔



    1-键盘录入月份,输出对应的季节。一年有四季;3,4,5春季;6,7,8夏季;9,10,11秋季;12,1,2冬季
    public class Demo02Test {
         public static void main(String[] args) {
             // 键盘录入一个月份,用Scanner实现
             Scanner sc = new Scanner(System.in);
             // 接收数据
             System.out.println("请输入月份(1-12):");
             int month = sc.nextInt();
             //通过case穿透现象改进代码
             switch(month) {
                 case 1:
                 case 2:
                 case 12:
                     System.out.println("冬季");
                     break;
                 case 3:
                 case 4:
                 case 5:
                     System.out.println("春季");
                     break;
                 case 6:
                 case 7:
                 case 8:
                     System.out.println("夏季");
                     break;
                 case 9:
                 case 10:
                 case 11:
                     System.out.println("秋季");
                     break;
                 default:
                         System.out.println("你输入的月份有误");
                         break;
             }
         }
    }


    2-打印5位数中所有的回文数:什么是回文数呢?举例:12321是回文数,个位与万位相同,十位与千位相同。
    public class Demo03Test {
         public static void main(String[] args) {
             //5位数告诉了我们数据的范围,用for循环实现
             for(int x=10000; x<100000; x++) {
                 //获取每一个5位数,然后得到它的个位,十位,千位,万位
                 int ge = x%10;
                 int shi = x/10%10;
                 int qian = x/10/10/10%10;
                 int wan = x/10/10/10/10%10;
                
                 //把满足条件的数据输出即可
                 if((ge==wan) && (shi==qian)) {
                     System.out.println(x);
                 }
             }
         }
    }


    3-定义一个int类型的一维数组,内容为{171,72,19,16,118,51,210,7,18}。求出该数组中满足以下要求的元素和。求和的元素的个位和十位不能包含7,并且只能为偶数。
    public class Demo05Test {
         public static void main(String[] args) {
             //定义一个int类型的一维数组
             int[] arr = {171,72,19,16,118,51,210,7,18};
            
             //定义一个求和变量
             int sum = 0;
            
             //遍历数组,获取到数组中的每一个元素
             for(int x=0; x<arr.length; x++) {
                 //判断该元素是否满足如下要求,如果是就累加,否则,不处理它
                 if((arr[x]%10 != 7) && (arr[x]/10%10 !=7) && (arr[x]%2 == 0)) {
                     sum += arr[x];
                 }
             }
             //输出结果
             System.out.println("sum:"+sum);
         }
    }

    4-(1)在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
    (2)选手的最后得分为:去掉一个最高分和一个最低分后 其余4个选手的平均值。
    (3)请写代码实现。(不考虑小数部分)
    public class Demo06Test {
         public static void main(String[] args) {
             //定义一个长度为6的数组
             int[] arr = new int[6];
            
             //通过键盘录入的方式给出评委的分数
             Scanner sc = new Scanner(System.in);
             for(int x=0; x<arr.length; x++) {
                 System.out.println("请给出第"+(x+1)+"个评委的分数(0-100):");
                 /*int number = sc.nextInt();
                 arr[x] = number;*/
                 arr[x] = sc.nextInt();
             }
            
             //写方法实现获取数组中的最大值,最小值
             int max = getMax(arr);
             int min = getMin(arr);
            
             //写方法实现数组元素的求和
             int sum = sum(arr);
            
             //(和-最高分-最低分)/(arr.length-2)
             int avg = (sum-max-min)/(arr.length-2);
            
             //输出分数即可
             System.out.println("该选手的最终得分是:"+avg);
         }
        
         //数组元素求和
         public static int sum(int[] arr) {
             int sum = 0;
            
             for(int x=0; x<arr.length; x++) {
                 sum += arr[x];
             }
            
             return sum;
         }
        
         //数组中的最小值
         public static int getMin(int[] arr) {
             int min = arr[0];
            
             for(int x=1; x<arr.length; x++) {
                 if(arr[x] < min) {
                     min = arr[x];
                 }
             }
            
             return min;
         }
        
         //数组中的最大值
         public static int getMax(int[] arr) {
             int max = arr[0];
            
             for(int x=1; x<arr.length; x++) {
                 if(arr[x] > max) {
                     max = arr[x];
                 }
             }
            
             return max;
         }
    }


    5-(1)键盘录入5个int类型的数据存储数组arr中
    (2)定义方法将arr数组中的内容反转
    (3)定义方法对反转后的数组进行遍历
    public class Demo07Test {
         public static void main(String[] args) {
             // 定义一个长度为5的数组
             int[] arr = new int[5];

            // 通过键盘录入数据给数组中的元素赋值
             Scanner sc = new Scanner(System.in);
             for (int x = 0; x < arr.length; x++) {
                 System.out.println("请给出第" + (x + 1) + "个元素");
                 arr[x] = sc.nextInt();
             }
            
             System.out.println("反转前的数组元素:");
             printArray(arr);

            // 定义方法将arr数组中的内容反转
             reverse(arr);
            
             System.out.println("反转后的数组元素:");
             //定义方法遍历数组
             printArray(arr);
         }
        
         //遍历数组
         public static void printArray(int[] arr) {
             System.out.print("[");
             for(int x=0;x<arr.length; x++){
                 if(x == arr.length-1) {
                     System.out.println(arr[x]+"]");
                 }else {
                     System.out.print(arr[x]+", ");
                 }
             }
         }
        
         /*
          * 两个明确: 返回值类型:void 参数列表:int[] arr
          */
         public static void reverse(int[] arr) {
             /*
             利用for循环遍历数组
                 初始化表达式定义两个指针,记录第一个元素和最后一个元素:int min = 0,max = arr.length-1;
                 布尔表达式:min<max;
                 步进表达式:min++,max--;
             */
             for(int min=0,max=arr.length-1;min < max;min++,max--) {
                 //利用第三方变量完成数组中的元素交换
                 int temp = arr[min];
                 arr[min] = arr[max];
                 arr[max] = temp;
             }
         }
    }

    6-需求:数组元素查找(查找指定元素第一次在数组中出现的索引)
    (1)给定数组int[] arr = {5,7,3,2,5};
    (2)要查询的元素通过键盘录入的方式确定
    (3)定义一个查找数组元素第一次出现位置的方法(注,要查找的元素就是键盘录入的数据), 如果没有找到返回-1
    public class Demo08Test {
         public static void main(String[] args) {
             // 给定数组int[] arr = {5,7,3,2,5};
             int[] arr = {5, 7, 3, 2, 5};

            //要查询的元素通过键盘录入的方式确定
             Scanner sc = new Scanner(System.in);
            
             System.out.println("请输入要查找的元素:");
             int number = sc.nextInt();
            
             //定义一个查找数组元素第一次出现位置的方法
             //调用方法
             int index =getIndex(arr, number);
             System.out.println("index:"+index);
         }
        
         /*
          * 两个明确:
          *         返回值类型:int
          *         参数列表:int[] arr,int value
          */
         public static int getIndex(int[] arr,int value) {
             //遍历数组,获取到每一个元素和要查找的元素进行比较,
             /*
             for(int x=0; x<arr.length; x++) {
                 if(arr[x] == value) {
                     //如果相等,就直接把该处的索引返回。
                     return x;
                 }
             }
             //遍历完毕,没有相等的返回-1。
             return -1;
             */
            
             int index = -1;
             for(int x=0; x<arr.length; x++) {
                 if(arr[x] == value) {
                     index = x;
                     break;
                 }
             }
             return index;
         }
    }

    7-有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?
    public class Demo04Test {
         public static void main(String[] args) {
             //定义数组
             int[] arr = new int[20];
            
             //初始化第一个月和第二个月的兔子对数
             arr[0] = 1;
             arr[1] = 1;
            
             //从第三个月开始,每个月的兔子对数是前两个月的兔子对数之和
             for(int x=2; x<arr.length; x++) {
                 arr[x] = arr[x-2] + arr[x-1];
             }
            
             System.out.println("第二十个月的时候的兔子对数是:"+arr[19]);
         }
    }

  • 相关阅读:
    React Native 实现MQTT 推送调研 (1)
    bpmn的依赖注入
    vdom diff
    浏览器渲染与event loop
    uni-app 通过后缀名区分不同渠道版本
    网页定宽 栅格布局
    网页顶部菜单导航和左侧菜单导航的区别?
    Android利用tcpdump和wireshark抓取网络数据包
    就算做了
    我眼中的Serverless
  • 原文地址:https://www.cnblogs.com/huguangqin/p/7123974.html
Copyright © 2020-2023  润新知