1.回文数:个位与万位相同,十位与千位相同,eg:12321
判断回文数 int count=0; for(int i=10000;i<=99999;i++){ if((i%10==i/10/10/10/10%10)&&(i/10%10==i/10/10/10%10)){//用双与表达式,因为如果左边是false,则右边不执行,总结果直接为false,比较有效率,单与的话就两边都要执行,没有效率 System.out.println(i+" "); count++; } } System.out.println("总共有:"+count+"个");
2.不死兔神:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对小兔子,假如兔子都不死,问第二十个月的兔子对有多少对?
* 分析:第一个月1对
* 第二个月1对
* 第三个月1+1对
* 第四个月1+1+1对
* 第五个月1+1+1+1+1对
* 关键:从出生后的那个月起算第一个月,所以实际只需要度过一个月,(即为到达第三个月,比如从第三月就有一对新生的【此时算为第一个月】,这对新生的再度过第四月后【此时算为第二个月】,到达在五月时【此时就是兔子长到第三个月】就可以生出一对),就能生兔子
规律:从第三个月起,每个月的对数是前两个月的相加和。(个人理解是,从第三个月起,只有前两个的对数可以生出对应对数的兔子,比如在第五个月时,只有第三个月的兔子对数可以全部再生,所以只需要在原有兔子基础上加上第三个月的兔子对数,即第四个月和第三个月兔子进行相加。)
使用数组索引进行对应数字进行相加即可。// 不死兔神问题 int []arr = new int[20];//定义20个数据长度 arr[0]=1; arr[1]=1; for(int i=2;i<arr.length;i++){ arr[i]=arr[i-1]+arr[i-2]; } System.out.println("第五个月的兔子对数为:"+arr[4]);//5 System.out.println("第二十个月的兔子对数为:"+arr[19]);
3.数组求和:数组为{171,72,19,16,118,51,210,7,18},求和的元素的个位和十位不能包含7,并且只能为偶数
//特定数组求和问题 int []arr={171,72,19,16,118,51,210,7,18}; int sum=0; for(int i=0;i<arr.length;i++){ if((arr[i]%10!=7)&&(arr[i]/10%10!=7)&&arr[i]%2==0){ sum+=arr[i]; } } System.out.println("特定数组的元素和为:"+sum);//362
4.评委评分:6个评委进行打分,分别是0-100的整数分,去掉最高分,去掉最低分,取剩下4个的平均分
//裁判评分问题 int []arr=new int[6]; Scanner sc=new Scanner(System.in); for(int i=0;i<arr.length;i++){ System.out.println("请输入第"+(i+1)+"个评委的评分:"); arr[i]=sc.nextInt(); } 求结果 int sum=sum(arr); int max=getMax(arr); int min=getMin(arr); System.out.println("平均分为:"+(sum-max-min)/(arr.length-2)); } // 获取评委最高分 public static int getMax(int []arr){//看这里的参数与103行的参数,虽然表明不一样,但是均可以正常使用 int max=arr[0]; for(int i=1;i<arr.length;i++){ if(max<arr[i]){ max=arr[i]; } } return max; } // 获取评委最低分 public static int getMin(int arr[]){ int min=arr[0]; for(int i=1;i<arr.length;i++){ if(min>arr[i]){ min=arr[i]; } } return min; } 获取评委总分 public static int sum(int arr[]){ int sum=0; for(int i=0;i<arr.length;i++){ sum+=arr[i]; } return sum; }
5.数组反转:键盘录入五个int类型的数据存储到数组arr中,使用方法将数组内容进行反转,随后进行遍历打印。
import java.util.Scanner; public class Two { public static void main(String[] args) { // TODO Auto-generated method stub int []arr=new int[6]; Scanner sc=new Scanner(System.in); for(int i=0;i<arr.length;i++){ System.out.println("请输入第"+(i+1)+"个数据:"); arr[i]=sc.nextInt(); } System.out.println("反转前的数组:"); print(arr); reserve(arr); System.out.println("反转后的数组:"); print(arr); } // 遍历数组方法 public static void print(int []arr){ System.out.print("["); for(int i=0;i<arr.length;i++){ if(i==arr.length-1){ System.out.println(arr[i]+"]"); } else{ System.out.print(arr[i]+","); } } } // 反转方法 public static void reserve(int []arr){ for(int start=0,end=arr.length-1;start<=end;start++,end--){//start<=end是关键 int middle=arr[start]; arr[start]=arr[end]; arr[end]=middle; } } }
数组反转图解
6.数组元素查找:给定数组元素{5,7,3,2,5},要查询的元素通过键盘录入的方式确定,定义一个查找数组元素第一次出现位置的方法
import java.util.Scanner; public class Three { public static void main(String[] args) { // TODO Auto-generated method stub int []arr={5,7,3,2,5}; Scanner sc=new Scanner(System.in); System.out.println("请输入要被查询的数据:"); int num =sc.nextInt(); int index=search(arr,num); System.out.println("索引为:"+index); } public static int search(int []arr,int value){ for(int i=0;i<arr.length;i++){ if(value==arr[i]){ return i; } } return -1;//表示找不到 } }
7.数据加密:键盘录入数据,要求数据是四位数的整数,需要对数据进行加密,加密规则如下:每位数字都加5,然后除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换
请把加密后的数字输出到控制台import java.util.Scanner; public class Four { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc =new Scanner(System.in); System.out.println("请输入一个四位数:"); int num=sc.nextInt(); // 将四位数拆开了 int []arr=new int[4]; arr[0]=num/10/10/10%10; arr[1]=num/10/10%10; arr[2]=num/10%10; arr[3]=num%10; // 进行加密,每位数字加5,然后除以10的余数代替该数字 for(int i=0;i<arr.length;i++){ arr[i]+=5; arr[i]%=10; } // 交换1,4和2,3位置 int middle=arr[0]; arr[0]=arr[3]; arr[3]=middle; middle=arr[1]; arr[1]=arr[2]; arr[2]=middle; // 打印数组 for(int i=0;i<arr.length;i++){ System.out.print(arr[i]); } } }
Java0基础day12(基础语法练习:回文数,不死兔神,数组特定元素求和,裁判评分,数组反转,数组元素查找-索引位置,数据加密)
于 2023-03-13 10:50:35 首次发布