編程合集: https://www.cnblogs.com/jssj/p/12002760.html
Java總結:https://www.cnblogs.com/jssj/p/11146205.html
【程序31】
題目:取一個整數a從右端開始的4~7位。
import java.util.Scanner; /** * 【程序31】 * 題目:取一個整數a從右端開始的4~7位。 */ public class Subject31 { public static void main(String[] args) { Scanner scanner =new Scanner(System.in); System.out.println("請輸入一個操作8位的整數"); String num = scanner.next(); intercept(num); } /** * 截取num * @param num */ private static void intercept(String num) { char[] arr = num.toCharArray(); int j=0; System.out.print("截取結果為:"); for(int i = arr.length-1 ; i >= 0;i--){ j++; if(j >= 4 && j<=7){ System.out.print(arr[i]+" "); } } } }
運行結果:
【程序32】
題目:打印出楊輝三角形(要求打印出10行如下圖) ,完美楊輝三角。
import java.util.ArrayList; import java.util.List; /** * 【程序32】 * 題目:打印出楊輝三角形(要求打印出10行如下圖) */ public class Subject32 { private static int num_1 = 10; private static List<int[]> list = new ArrayList<>(); public static void main(String[] args) { System.out.println("楊輝三角形打印如下:"); yangHuiTriangle(num_1); int maxLength = (list.get(list.size()-1)[num_1/2]+"").length(); boolean flag = isParity(maxLength); for (int i = 0 ; i < list.size(); i++) { int[] arr = list.get(i); printSpace(arr,maxLength); for (int j = 0; j < arr.length; j++) { System.out.print(arr[j]); int tmp = (arr[j]+"").length(); if(flag){ for (int k = 0; k < maxLength+2 - tmp; k++) { System.out.print(" "); } }else{ for (int k = 0; k < maxLength+1 - tmp; k++) { System.out.print(" "); } } } System.out.println(); } } /** * 判斷maxLength是奇數還是偶數 * @param maxLength * @return */ private static boolean isParity(int maxLength) { if(maxLength%2 == 1){ return false; }else { return true; } } /** * 獲取楊輝三角數據 * @param num * @return */ private static int[] yangHuiTriangle(int num) { if(num == 1){ int[] arr = new int[]{1}; list.add(arr); return arr; }else{ int[] arrPro = yangHuiTriangle(num-1); int[] arrAft = new int[num]; for (int i = 0; i < arrAft.length ; i++) { if(i == 0){ arrAft[i] = 0+arrPro[i]; }else if( i== arrAft.length-1){ arrAft[i] = arrPro[i-1]+0; }else{ arrAft[i] = arrPro[i-1] + arrPro[i]; } } list.add(arrAft); return arrAft; } } /** * 空格打印 * @param arr */ private static void printSpace(int[] arr,int maxLength) { for (int i = 0; i < num_1 - arr.length ; i++) { double loopNum = Math.ceil((maxLength+1)/2.0); for (int j = 0; j < loopNum; j++) { System.out.print(" "); } } } }
運行結果:
【程序33】
題目:輸入數組,最大的與第一個元素交換,最小的與最后一個元素交換,輸出數組。
/** * 【程序33】 * 題目:輸入數組,最大的與第一個元素交換,最小的與最后一個元素交換,輸出數組。 */ public class Subject33 { public static void main(String[] args) { int[] arr = new int[]{44,56,89,32,11,78,55,82,02,68,44,27}; printArray(arr); deal(arr); } private static void deal(int[] arr) { int maxNum = arr[0]; //最大數 int minNum = arr[0]; //最小數 int maxPosition = 0; //最大數在數組的位置。 int minPosition = 0; //最小數在數組的位置。 for (int i = 1; i < arr.length; i++) { if(arr[i] > maxNum){ maxNum = arr[i]; maxPosition = i; } if(arr[i] < minNum){ minNum = arr[i]; minPosition = i; } } /*********重組數組(最大的與第一個元素交換,最小的與最后一個元素)************/ int tmp = 0; tmp = arr[0]; arr[0] = arr[maxPosition]; arr[maxPosition] = tmp; tmp = arr[arr.length-1]; arr[arr.length-1] = arr[minPosition]; arr[minPosition] = tmp; /*********打印數組***********/ printArray(arr); } /** * 打印數組 * @param arr */ private static void printArray(int[] arr) { for (int i = 0; i < arr.length ; i++) { System.out.print(arr[i]+" "); } System.out.println(); } }
運行結果:
【程序34】
題目:有n個整數,使其前面各數順序向后移m個位置,最后m個數變成最前面的m個數
/** * 【程序34】 * 題目:有n個整數,使其前面各數順序向后移m個位置,最后m個數變成最前面的m個數 */ public class Subject34 { public static void main(String[] args) { int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; /**********************打印數組*************************/ printArray(arr); int m = 6; //偏移量 deviation(arr,m); } /** * 數組arr偏移m后的結果 * @param arr * @param m */ private static void deviation(int[] arr,int m) { int[] newArr = new int[m]; int count = m-1; /*******************將最后m為數保存到新數組中********************/ for (int i = arr.length-1; i >= arr.length-m ; i--) { newArr[count--] = arr[i]; } /********************將數組中的數據往后移動m位***************************/ for (int i = arr.length-1; i >= m; i--) { arr[i] = arr[i-m]; } /**********************數組前面的數據補充完整*************************/ for (int i = 0; i < newArr.length; i++) { arr[i] = newArr[i]; } /**********************打印數組*************************/ printArray(arr); } /** * 打印數組 * @param arr */ private static void printArray(int[] arr) { for (int i = 0; i < arr.length ; i++) { System.out.print(arr[i]+" "); } System.out.println(); } }
運行結果:
【程序35】
題目:有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位
import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * 【程序35】 * 題目:有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位 */ public class Subject35 { public static void main(String[] args) { System.out.println("請輸入人數:"); Scanner scanner = new Scanner(System.in); int n= scanner.nextInt(); numberGame(n); } /** * 數字游戲 * @param n */ private static void numberGame(int n) { List<Integer> list = new ArrayList<>(); /****************給50個人編號******************/ for (int i = 1; i <= n; i++) { list.add(i); } endGameByNum(list,1); } /** * 獲取最后留下的人 * @param list * @param ident */ private static void endGameByNum(List<Integer> list,int ident) { List<Integer> listTmp = new ArrayList<>(); if(list.size() >= 3 ) { for (int i = 0; i < list.size(); i++) { if ((i+ident)%3 != 0) { listTmp.add(list.get(i)); } } endGameByNum(listTmp,list.size()%3+1); }else{ for (int i = 0; i < list.size(); i++) { System.out.println("最后留下的人為"+list.get(i)+"號選手!"); } } } }
運行結果:
【程序36】
題目:寫一個函數,求一個字符串的長度,在main函數中輸入字符串,並輸出其長度。
import java.util.Scanner; /** * 【程序36】 * 題目:寫一個函數,求一個字符串的長度,在main函數中輸入字符串,並輸出其長度。 */ public class Subject36 { public static void main(String[] args) { System.out.println("請輸入一個字符串:"); Scanner scanner = new Scanner(System.in); String str = scanner.next(); stringLength(str); } /** * 輸出字符串長度 * @param str */ private static void stringLength(String str) { char[] arr = str.toCharArray(); System.out.println("字符串長度:"+ arr.length); } }
運行結果:
【程序37】
題目:編寫一個函數,輸入n為偶數時,調用函數求1/2+1/4+…+1/n,當輸入n為奇數時,調用函數1/1+1/3+…+1/n
import java.util.Scanner; /** * 【程序37】 * 題目:編寫一個函數,輸入n為偶數時,調用函數求1/2+1/4+…+1/n,當輸入n為奇數時,調用函數1/1+1/3+…+1/n */ public class Subject37 { private static double sum = 0; //求和 private static String str = ""; //拼接字符串 public static void main(String[] args) { System.out.println("請輸入一個正整數:"); Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); specialDeal(num); System.out.print(str.substring(0,str.length()-2)+"的和為:"); System.out.println(sum); } /** * 輸入n為偶數時,調用函數求1/2+1/4+…+1/n,當輸入n為奇數時,調用函數1/1+1/3+…+1/n * @param num */ private static void specialDeal(int num) { sum = sum+ 1.0/num; if(num > 2){ specialDeal(num-2); } str = str+"1/"+num+" + "; } }
運行結果:
【程序38】
題目:字符串排序。
/** * 【程序38】 * 題目:字符串排序。 */ public class Subject38 { public static void main(String[] args) { String[] arrStr = new String[]{"asd","bbb","dddd","add","eddd","ccdd","caaa","adds","cvf","dass"}; System.out.print("初始數組:"); printStrinArray(arrStr); stringOrder(arrStr); } /** * 字符串數組排序 * @param arrStr */ private static void stringOrder(String[] arrStr) { for (int i = 0; i <arrStr.length ; i++) { for (int j = i+1; j < arrStr.length; j++) { String tmp = ""; if(arrStr[i].compareTo(arrStr[j]) > 0){ tmp = arrStr[i]; arrStr[i] = arrStr[j]; arrStr[j] = tmp; } } } System.out.print("排序后數組:"); printStrinArray(arrStr); } /** * 字符串數組打印 * @param arrStr */ private static void printStrinArray(String[] arrStr) { for (int i = 0; i < arrStr.length; i++) { System.out.print(arrStr[i]+" "); } System.out.println(); } }
運行結果:
【程序39】
題目:海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據分為五份,多了一個,這只猴子把多的一個扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的,問海灘上原來最少有多少個桃子?
/** * 【程序39】 * 題目:海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據分為五份,多了一個,這只猴子把多的一個扔入海中,拿走了一份。
* 第二只猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的,
* 問海灘上原來最少有多少個桃子? */ public class Subject39 { private static int count = 0; //分桃次數 private static int tmp = 0; //桃子數量 public static void main(String[] args) { averagePeachTot(); } /** * 循環獲取桃子總數 */ private static void averagePeachTot() { int frequency = 4; while(true){ if(count == 6){ System.out.println(tmp); break; } count =0; averagePeach(frequency); frequency+=4; } } /** * 平分桃子 */ private static void averagePeach(int num) { count++; if(num%4 == 0 && count<=5){ tmp = num + 1 + num/4; averagePeach( tmp); } } }
運行結果:
【程序40】
題目:809*??=800*??+9*??+1
其中??代表的兩位數,8*??的結果為兩位數,9*??的結果為3位數。求??代表的兩位數,及809*??后的結果
/** * 【程序40】 * 題目:809*??=800*??+9*??+1 改成 809*??=800*??+9*?? * 其中??代表的兩位數,8*??的結果為兩位數,9*??的結果為3位數。求??代表的兩位數,及809*??后的結果, 題目錯誤 */ public class Subject40 { public static void main(String[] args) { mathematicsFormula(); } /** * 數學公式 */ private static void mathematicsFormula() { boolean flag = false; for (int i = 10; i < 100 ; i++) { if( 8*i < 100 && 9*i >100 && 809*i == 800*i+9*i){ flag = true; System.out.println("??=" + i); System.out.println("809*?? = " + 809*i); } } if(!flag){ System.out.println("為找到合適的數"); } } }
運行結果:
參考:https://blog.csdn.net/zzzzzzzhu/article/details/82355001