編程合集: https://www.cnblogs.com/jssj/p/12002760.html
Java總結:https://www.cnblogs.com/jssj/p/11146205.html
【程序1】
題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子對數為多少?
import java.util.Scanner; /** * 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子對數為多少? * 分析 一月 1對, 2月 1對,3月 2對,4月 3對,5月5對,6月8對,7月13對,8月 21只 */ public class Subject1 { public static void main(String[] args) { System.out.print("請輸入你想知道的兔子數量的月份:"); Scanner scanner=new Scanner(System.in); int n=scanner.nextInt();//獲取輸入的整數 System.out.println(test(n)); System.out.println(fun(n)); scanner.close(); } /** * 菜鳥寫法 * @param i * @return */ public static int test(int i){ int tot = 0; int a = 0; int b = 1; for(int j = 0;j<i; j++){ tot = a+b; a = b; b = tot; } return a; } /** * 大神寫法 * @param * @return */ private static int fun(int n){ if(n==1 ||n==2) return 1; else return fun(n-1)+fun(n-2); } }
運行結果:
【程序2】
題目:判斷101-200之間有多少個素數,並輸出所有素數。
/**
* 【程序2】
* 題目:判斷101-200之間有多少個素數,並輸出所有素數。
*
* 分析:什么是素數,不能被自己和1整除的數。
*/
public class Subject2 {
public static void main(String[] args) {
getPrimeNumber(101,200);
}
/**
* 判斷a和b之間有多少個素數
* @param a
* @param b
*/
public static void getPrimeNumber(int a,int b){
int sum = 0;
if(a >= b){
System.out.println("a不能大於等於b!");
}
System.out.print("素數:");
for(int i=a;i<=b;i++){
if(isPrimeNumber(i)){
sum += 1;
System.out.print(i+" ");
}
}
System.out.println();
System.out.println("存在素數數量:"+sum);
}
/**
* 判斷num是否是一個素數
* @param i
* @return
*/
private static boolean isPrimeNumber(int i) {
boolean flag = true;
for(int j=2;j <= i/2;j++){
if(i%j == 0){
flag = false;
break;
}
}
return flag;
}
}
運行結果:
【程序3】
題目:打印出所有的”水仙花數”,所謂”水仙花數”是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個”水仙花數”,因為153=1的三次方+5的三次方+3的三次方。
/*** * 【程序3】 * 題目:打印出所有的”水仙花數”,所謂”水仙花數”是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個”水仙花數”,因為153=1的三次方+5的三次方+3的三次方。 */ public class Subject3 { public static void main(String[] args) { for(int i= 100 ; i<=999;i++){ if(isNarcissus(i)){ System.out.println("水仙花數:"+i); } } } public static boolean isNarcissus(int a){ int num1 = 0; //個位 int num2 = 0; //十位 int num3 = 0; //百位 num3 = a/100; num2 = (a - num3*100)/10; num1 = a - num3*100 - num2*10; if(Math.pow(num1,3) + Math.pow(num2,3) + Math.pow(num3,3) ==a){ return true; } return false; } }
運行結果:
【程序4】
題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。
/** * 【程序4】 * 題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。 */ public class Subject4 { public static void main(String[] args) { System.out.print("請輸入需要分解因數的整數:"); Scanner scanner=new Scanner(System.in); int a = scanner.nextInt();//獲取輸入的整數 decompose(a); } /** * 分解質因數 * @param num * @return */ public static void decompose(int num){ int tmp = num/2; for(int i=2;i <= tmp ;i++){ if(num%i == 0){ num = num/i; System.out.println("質因數為:"+i); i=1; continue; } } } }
運行結果:
【程序5】
題目:利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。
/** * 【程序5】 * 題目:利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。 */ public class Subject5 { public static void main(String[] args) { System.out.println("請輸入學生成績:"); Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); String result = a>=90? "A" : (60<=a && a<90? "B" :"C"); System.out.println("該學生的最終評級為:"+result); } }
運行結果:
【程序6】
題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。
import java.util.Scanner; /** * 【程序6】 * 題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。 */ public class Subject6 { public static void main(String[] args) { System.out.println("請輸入第一個正整數:"); Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); System.out.println("請輸入第二個正整數:"); int b = scanner.nextInt(); int maxCommonDivisor = maxCommonDivisor(a,b); System.out.println("最大公約數:"+ maxCommonDivisor); int minCommonMultiple = (a*b)/maxCommonDivisor; System.out.println("最小公倍數:"+ minCommonMultiple); scanner.close(); } /** * 獲取num1和num2的最大公約數 * @param num1 * @param num2 * @return */ public static int maxCommonDivisor(int num1,int num2){ int result = 1; int tmp = num1>num2? num2 :num1; for (int i = 2; i <= tmp; i++) { if(num1%i == 0 && num2%i == 0){ result = i*result; num1 = num1/i; num2 = num2/i; i=1; } } return result; } }
運行結果:
【程序7】
題目:輸入一行字符,分別統計出其英文字母、空格、數字和其它字符的個數。
import java.util.Scanner; /** * 【程序7】 * 題目:輸入一行字符,分別統計出其英文字母、空格、數字和其它字符的個數。 */ public class Subject7 { public static void main(String[] args) { System.out.println("請輸入字符串:" ); Scanner scanner=new Scanner(System.in); scanner.useDelimiter("\n"); String tmpStr = scanner.next(); classify(tmpStr); } public static void classify(String str){ char[] strArr = str.toCharArray(); int num1 = 0; //字母 String num1Str = ""; int num2 = 0; //數字 String num2Str = ""; int space = 0; //空格 String spaceStr = ""; int other = 0; //其他 String otherStr = ""; for (int i = 0; i < strArr.length ; i++) { int ascii = (int)strArr[i]; if( 48<= ascii && ascii <= 57){ num2 = num2 + 1; num2Str = num2Str +strArr[i] +" "; }else if(ascii == 32){ space = space +1; }else if((65<= ascii && ascii <= 90) || (97 <= ascii && ascii <= 122)){ num1 = num1 + 1; num1Str = num1Str +strArr[i] +" "; }else{ other = other + 1; otherStr = otherStr +strArr[i] +" "; } } System.out.println("存在字母個數:" + num1); System.out.println("存在字母如下:" + num1Str); System.out.println("存在數字個數:" + num2); System.out.println("存在數字如下:" + num2Str); System.out.println("存在空格個數:" + space); System.out.println("存在其他個數:" + other); System.out.println("存在其他如下:" + otherStr); } }
運行結果:
【程序8】
題目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加有鍵盤控制。輸出結果的形式如:2+22+222=246;
import java.math.BigDecimal; import java.util.Scanner; /** * 【程序8】 * 題目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加有鍵盤控制。輸出結果的形式如:2+22+222=246; */ public class Subject8 { public static void main(String[] args) { System.out.println("請輸入數字1(小於10):" ); Scanner scanner=new Scanner(System.in); int a = scanner.nextInt(); System.out.println("請輸入數字2(1-10):" ); int b = scanner.nextInt(); sum(a,b); } /** * 求和 * @param num1 * @param num2 */ public static void sum(int num1,int num2) { String numStr = ""; String result = ""; BigDecimal bigDecimal = new BigDecimal("0"); for(int i=0;i< num1; i++ ){ numStr = numStr+num2; if(i==0){ result = result+numStr; }else{ result = result+"+"+numStr; } bigDecimal = bigDecimal.add(new BigDecimal(numStr)); } result = result +"=" +bigDecimal.toString(); System.out.println("結果:"+result); } }
運行結果:
【程序9】
題目:一個數如果恰好等於它的因子之和,這個數就稱為”完數”。例如6=1+2+3.編程找出1000以內的所有完數。
import java.util.ArrayList; import java.util.List; /*** * 【程序9】 * 題目:一個數如果恰好等於它的因子之和,這個數就稱為”完數”。例如6=1+2+3.編程找出1000以內的所有完數。 */ public class Subject9 { public static void main(String[] args) { for (int i = 0; i <1000 ; i++) { perfectNum(i); } } /** * 判斷是否是完數 */ public static void perfectNum(int num){ List<Integer> list = decompose(num); int sum = 0; for(int i :list){ sum = sum + i; } if(num == sum && num != 1){ System.out.println("完數:"+num); } } /** * 分解質因數 * @param num * @return */ public static List decompose(int num){ List<Integer> list = new ArrayList(); list.add(1); int tmp = num/2; for(int i=2;i <= tmp ;i++){ if(num%i == 0){ list.add(i); continue; } } return list; } }
運行結果:
【程序10】
題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半;n次落地經過路線總長度和下次反彈的高度。
import java.util.Scanner; /** * 【程序10】 * 題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半;n次落地經過路線總長度和下次反彈的高度。 */ public class Subject10 { public static void main(String[] args) { System.out.println("請選擇第幾次落地:"); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); sumLength(n); } public static void sumLength(int n){ double height = 100; double sumLength = 0; for(int i=1; i<=n; i++){ if(i==1){ sumLength = sumLength + height; }else{ sumLength = sumLength + height*2; } height = height/2; } System.out.println("總運動距離為:"+sumLength); System.out.println("反彈高度為:"+height); } }
運行結果:
參考:https://blog.csdn.net/zzzzzzzhu/article/details/82355001