習題-四季-回文數-不死神兔
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]);
}
}
習題-四季-回文數-不死神兔