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

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]);
     }

}

时间: 2024-08-04 16:14:30

习题-四季-回文数-不死神兔的相关文章

判断一个数是否为回文数

#include <stdio.h> int is_palindromic(int num) {  char _old = num;  char _new = 0;  while (num)  {   _new = _new * 10 + (num % 10);   num = num / 10;  }  if (_new == _old)  {   return 1;  }  else  {   return 0;  } } int main() {  int num = 0;  scanf

LeetCode 9 Palindrome Number (回文数)

翻译 确定一个整数是否是回文数.不能使用额外的空间. 一些提示: 负数能不能是回文数呢?(比如,-1) 如果你想将整数转换成字符串,但要注意限制使用额外的空间. 你也可以考虑翻转一个整数. 然而,如果你已经解决了问题"翻转整数(译者注:LeetCode 第七题), 那么你应该知道翻转的整数可能会造成溢出. 你将如何处理这种情况? 这是一个解决该问题更通用的方法. 原文 Determine whether an integer is a palindrome. Do this without ex

要求循环输入一个数,判断是否为回文数

import java.util.Scanner; public class HuiWenShu { public static void main(String[] args) { Scanner input = new Scanner(System.in); char c = 'y'; //初始化c为y,为下面的循环做好准备 while(c == 'y'){ while(c == 'y'){ System.out.println("请随意输入一个大于三位的奇位数"); //回文数属

回文数 第N个回文数

判断回文数还是不难,如果能转为字符串就更简单了. 如果是求第N个回文数呢. 12321是一个回文数,这里先考虑一半的情况. 回文数的个数其实是有规律的.如: 1位回文数: 9个 2位回文数: 9个 3位回文数: 90个 4位回文数: 90个 5位回文数: 900个 6位回文数: 900个 … 我们看到9.90.900,是不是很有规律,那是什么原因?很简单,我们把回文数拆开两半 [123321]来看.两半的变化一样的,那我们只算其中一半就行了.首位不能是0,所以左半最小为 100,最大为999,共

Palindrome Number (回文数)

回文数是指这样的数字:正读和倒读都是一样的.如:595,2332都是回文数,234不是回文数. 注意:负数不是回文数 Determine whether an integer is a palindrome. Do this without extra space. Some hints: Could negative integers be palindromes? (ie, -1) If you are thinking of converting the integer to string

洛谷 P1207 [USACO1.2]双重回文数 Dual Palindromes

题目描述 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做"回文数".例如,12321就是一个回文数,而77778就不是.当然,回文数的首和尾都应是非零的,因此0220就不是回文数. 事实上,有一些数(如21),在十进制时不是回文数,但在其它进制(如二进制时为10101)时就是回文数. 编一个程序,从文件读入两个十进制数N (1 <= N <= 15)S (0 < S < 10000)然后找出前N个满足大于S且在两种或两种以上进制(二进制至十进制)上是

一个5位数,判断它是不是回文数

题目:一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. 1 package com.li.FiftyAlgorthm; 2 3 import java.util.Scanner; 4 5 /** 6 * 题目:一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. 7 * @author yejin 8 */ 9 public class Palindrom { 10 public static void main(Strin

输出1-256之间一个数的平方是回文数

方法: 通过一个函数求出这个数一共是几位数 循环取余数依次放入临时数组 通过数组下标循环判断 1 //功能:打印所有不超过 n( n<256)的其平方具有对称性的数(也称回文数) 2 3 4 5 #include<stdio.h> 6 #include<stdlib.h> 7 8 int judg(int); 9 int getBit(int); //返回整数值的位数 10 11 void main(){ 12 for (int i = 0; i < 256; i++)

9. 回文数 Palindrome Number

Determine whether an integer is a palindrome. Do this without extra space. 题意:判断一个数字是否为回文数 如何取得一个Integer的最高位?假设x = 688答:x / mask. 设置一个和x位数一样的mask,mask = 100,然后用x/mask,表示x里面有几个mask,即是最高位数字. 688里有6个100,即为6. 如何删去一个Integer的最高位?假设x = 688答:x = x % mask. 还是