50道經典的JAVA編程題 (1-5)


后天java考試,現在閑着也是閑着,來做做java題吧。

前不久在網上看見了50道java算法編程題,感覺還不錯,記得大一學C語言的時候做過一些,現在用java來回顧下吧,也算應付考試吧。

代碼要是有啥不完美的地方還請各位積極指出啊,小的還是菜鳥啦,出錯難免的哦~~~

暫時一篇帖子放5道吧,代碼比較占地方,等全部做完了發一個目錄吧


【程序1】 TestRabbit.java
題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
1.程序分析: 兔子的規律為數列1,1,2,3,5,8,13,21....

package test50;
 
         
/**
 * @author VellBibi
 *題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的總兔子對數為多少? 
 *1.程序分析: 兔子的規律為數列1,1,2,3,5,8,13,21...
 */
public class TestRabbit {
 
         
    /**
     * @param m 總月數
     * @return 這月兔子對數
     */
    public static int sumRabbitNumber(int m){
        int n = 1;//第0個月對數
        int e = 0;//第0個月對數
        int cup = 0;
        for(int i=1; i<m; i++){
            cup = n;
            n = e + n;
            e = cup;
        }
        return n;
    }
    
    public static void main(String[] args) {
        
        for(int i=1; i<=10; i++){
            System.out.print(sumRabbitNumber(i)+",");
        }
    }
 
         
}

 

image


【程序2】 FindPrimeNumber.java
題目:判斷101-200之間有多少個素數,並輸出所有素數。
1.程序分析:判斷素數的方法:用一個數分別去除2~sqrt(n)或者2~n/2,常用2~n/2,因為一個數的一半的平方大於其本身是從5開始的,解方程:n/2的平方>n .如果能被整除,
則表明此數不是素數,反之是素數。

package test50;
 
         
/**
 * @author VellBibi
 *題目:判斷101-200之間有多少個素數,並輸出所有素數。
 *1.程序分析:判斷素數的方法:用一個數分別去除2~sqrt(n)或者2~n/2,常用2~n/2,
 *因為一個數的一半的平方大於其本身是從5開始的,解方程:n/2的平方>n .如果能被整除, 
 *則表明此數不是素數,反之是素數。
 */
public class FindPrimeNumber {
 
         
    /**
     * 判斷n是不是質數
     * @param n
     * @return
     */
    public static boolean isPrimeNumber(int n){
        
        if(n == 2) return true;
        
        for(int i=2; i<=n/2; i++){
            if(n % i == 0) return false;
        }
        return true;
    }
 
         
    public static void main(String[] args) {
        int n = 0;
        for(int i=101; i<=200; i++){
            if(isPrimeNumber(i)){
                n++;
                System.out.print(i + ",");
            }
        }
        System.out.println("\n101-200之間有"+n+"個素數");
    }
}

 

image


【程序3】FindDaffodilNumber.java
題目:打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如:
153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。

package test50;
 
         
/**
 * @author VellBibi
 *題目:打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如: 
 *153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。 
 *1.程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。
 */
public class FindDaffodilNumber {
 
         
    public static boolean isDaffodNumber(int n){
        char[] ch = String.valueOf(n).toCharArray();
        int cup = 0;
        for(int i=0; i<ch.length; i++){
            cup = cup + (int)Math.pow(Integer.parseInt(String.valueOf(ch[i])), 3) ;
        }
        
        return (cup == n);
    }
    
    public static void main(String[] args) {
        for(int i=100; i<1000; i++){
            if(isDaffodNumber(i)){
                System.out.print(i + ",");
            }
        }
    }
 
         
}
image


【程序4】Explode.java
題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。
程序分析:對n進行分解質因數,應先找到一個最小的質數k,然后按下述步驟完成:
(1)運用兩層循環。
(2)外循環得到2~n之間的所有質數,內循環將n循環除以質數,知道不能整除。
(3)要是內循環n等於1了就說明n被完全整除了。

package test50;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
         
/**
 * @author VellBibi
 * 【程序4】Explode.java 
 *題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。 
 *程序分析:對n進行分解質因數,應先找到一個最小的質數k,然后按下述步驟完成: 
 *(1)運用兩層循環
 *(2)外循環得到2~n之間的所有質數,內循環將n循環除以質數,知道不能整除
 *(3)要是內循環n等於1了就說明n被完全整除了
 */
public class Explode {
    
    /**
     * 判斷n是不是質數
     * @param n
     * @return
     */
    public static boolean isPrimeNumber(int n){
        
        if(n == 2) return true;
        
        for(int i=2; i<=n/2; i++){
            if(n % i == 0) return false;
        }
        return true;
    }
 
         
    public static void main(String[] args) {
        BufferedReader buffer = new BufferedReader(new InputStreamReader(
                System.in));
        int N = 0;
        try {
            N = Integer.parseInt(buffer.readLine());
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.print(N+"=");
        for(int i=2; i<N; i++){
            if(!isPrimeNumber(i)) continue;
            while(N%i == 0){
                System.out.print(i);
                N = N/i;
                if(N != 1) System.out.print("*");
                else break;
            }
        }
        if(N != 1) System.out.println(N);
    }
 
         
}

 

image


【程序5】 ConditionOperator.java
題目:利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。
1.程序分析:(a>b)?a:b這是條件運算符的基本例子。

package test50;
 
         
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
         
/**
 * @author VellBibi
 *【程序5】 ConditionOperator.java 
 *題目:利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。 
 *1.程序分析:(a>b)?a:b這是條件運算符的基本例子。
 */
public class ConditionOperator {
 
         
    public static void main(String[] args) {
        BufferedReader buffer = new BufferedReader(new InputStreamReader(
                System.in));
        int N = 0;
        try {
            N = Integer.parseInt(buffer.readLine());
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        System.out.println("學習成績為:" + ((N < 60) ? "C" : (N < 90) ? "B" : "A"));
    }
 
         
}

 

imageimageimage


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM