10道Java基礎編程練習題

1.指數計算問題

有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子對數為多少?

程序分析: 兔子的規律為數列1,1,2,3,5,8,13,21....

public class Prog1{

??? public static voidmain(String[] args){

??????? int n = 10;

???????System.out.println("第"+n+"個月兔子總數為"+fun(n));

??? }

??? private staticint fun(int n){

??????? if(n==1 ||n==2)

?????????? return 1;

??????? else

?????????? returnfun(n-1)+fun(n-2);

??? }

}

2.指定范圍包含的素數

判斷101-200之間有多少個素數,并輸出所有素數。

程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,則表明此數不是素數,反之是素數。

public class Prog2{

??? public static voidmain(String[] args){

??????? int m = 1;

??????? int n = 1000;

??????? int count =0;

??????? //統計素數個數

??????? for(inti=m;i

??????????? if(isPrime(i)){

???????????????count++;

??????????????? System.out.print(i+"");

??????????????? if(count%10==0){

???????????????????System.out.println();

??????????????? }

??????????? }

??????? }

???????System.out.println();

???????System.out.println("在"+m+"和"+n+"之間共有"+count+"個素數");

??? }

??? //判斷素數

??? private staticboolean isPrime(int n){

??????? booleanflag = true;

??????? if(n==1)

????????? flag = false;

??????? else{

??????????? for(inti=2;i<=Math.sqrt(n);i++){

??????????? if((n%i)==0|| n==1){

???????????????flag = false;

??????????????? break;

??????????? }

???????????? else

?????????????? flag= true;

????????? }

??????? }

??????? returnflag;

??? }

}

3.水仙花數

打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等于該數本身。例如:153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。

程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。

public class Prog3{

??? public static voidmain(String[] args){

??????? for(int i=100;i<1000;i++){

??????????? if(isLotus(i))

??????????????System.out.print(i+" ");

??????? }

???????System.out.println();

??? }

??? //判斷水仙花數

??? private staticboolean isLotus(int lotus){

??????? int m = 0;

??????? int n =lotus;

??????? int sum = 0;

??????? m = n/100;

??????? n? -= m*100;

??????? sum =m*m*m;

??????? m = n/10;

??????? n -= m*10;

??????? sum +=m*m*m + n*n*n;

??????? if(sum==lotus)

??????????? return true;

??????? else

??????????? return false;

??????? }

}

4.分解質因數

將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。

程序分析:對n進行分解質因數,應先找到一個最小的質數k,然后按下述步驟完成:

(1)如果這個質數恰等于n,則說明分解質因數的過程已經結束,打印出即可。

(2)如果n<>k,但n能被k整除,則應打印出k的值,并用n除以k的商,作為新的正整數n,重復執行第一步。

(3)如果n不能被k整除,則用k+1作為k的值,重復執行第一步。


public class Prog4{

??? public static voidmain(String[] args){

??????? int n = 13;

???????decompose(n);

??? }

??? private static voiddecompose(int n){

???????System.out.print(n+"=");

??????? for(int i=2;i

??????????? while(n%i==0&& n!=i){

?????????????? ?n/=i;

???????????????System.out.print(i+"*");

??????????? }

??????????? if(n==i){

???????????????System.out.println(i);

??????????????? break;

??????????? }

??????? }

??? }

}

5.條件運算符使用

利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。

程序分析:(a>b)?a:b這是條件運算符的基本例子。

public class Prog5{

??? public static voidmain(String[] args){

??????? int n = -1;

??????? try{

??????????? n =Integer.parseInt(args[0]);

??????? }catch(ArrayIndexOutOfBoundsExceptione){

???????????System.out.println("請輸入成績");

????? ??????return;

??????? }

??????? grade(n);

??? }

??? //成績等級計算

??? private static voidgrade(int n){

??????? if(n>100|| n<0)

?????????System.out.println("輸入無效");

??????? else{

????????? Stringstr = (n>=90)?"分,屬于A等":((n>60)?"分,屬于B等":"分,屬于C等");

????????? System.out.println(n+str);

??????? }

??? }

}

6.公約數和公倍數

輸入兩個正整數m和n,求其最大公約數和最小公倍數。

程序分析:利用輾除法。

public class Prog6{

??? public static voidmain(String[] args){

??????? int m,n;

??????? try{

??????????? m =Integer.parseInt(args[0]);

??????????? n =Integer.parseInt(args[1]);

??????? }catch(ArrayIndexOutOfBoundsExceptione){

???????????System.out.println("輸入有誤");

??????????? return;

??????? }

???????max_min(m,n);

??? }

??? //求最大公約數和最小公倍數

??? private static voidmax_min(int m, int n){

??????? int temp = 1;

?? ?????int yshu = 1;

??????? int bshu =m*n;

??????? if(n

??????????? temp =n;

??????????? n = m;

??????????? m =temp;

??????? }

??????? while(m!=0){

??????????? temp =n%m;

??????????? n = m;

??????????? m =temp;

??????? }

??????? yshu = n;

??????? bshu /= n;

???????System.out.println(m+"和"+n+"的最大公約數為"+yshu);

???????System.out.println(m+"和"+n+"的最小公倍數為"+bshu);

??? }

}

7.統計字符串中類型個數

輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。

程序分析:利用while語句,條件為輸入的字符不為'\n'.

import java.util.Scanner;

public class Prog7_1{

??? public static voidmain(String[] args){

???????System.out.print("請輸入一串字符:");

??????? Scannerscan = new Scanner(System.in);

??????? String str= scan.nextLine();//將一行字符轉化為字符串

???????scan.close();

??????? count(str);

??? }

??? //統計輸入的字符數

??? private static voidcount(String str){

??????? String E1 ="[\u4e00-\u9fa5]";//漢字

??????? String E2 ="[a-zA-Z]";

??????? String E3 ="[0-9]";

??????? String E4 ="\\s";//空格

??????? intcountChinese = 0;

??????? intcountLetter = 0;

??????? intcountNumber = 0;

? ??????int countSpace = 0;

??????? intcountOther = 0;

??????? char[]array_Char = str.toCharArray();//將字符串轉化為字符數組

??????? String[]array_String = new String[array_Char.length];//漢字只能作為字符串處理

??????? for(int i=0;i

?????????array_String[i] = String.valueOf(array_Char[i]);

??????? //遍歷字符串數組中的元素

??????? for(Strings:array_String){

??????????? if(s.matches(E1))

?????????????countChinese++;

??????????? else if(s.matches(E2))

?????????????countLetter++;

??????????? else if(s.matches(E3))

????????????? countNumber++;

??????????? else if(s.matches(E4))

?????????????countSpace++;

??????????? else

?????????????countOther++;

??????? }

???????System.out.println("輸入的漢字個數:"+countChinese);

???????System.out.println("輸入的字母個數:"+countLetter);

???? ???System.out.println("輸入的數字個數:"+countNumber);

???????System.out.println("輸入的空格個數:"+countSpace);

???????System.out.println("輸入的其它字符個數:"+countSpace);

??? }

}


import java.util.*;

public class Prog7_2{

??? public static voidmain(String[] args){

????? System.out.println("請輸入一行字符:");

????? Scanner scan= new Scanner(System.in);

????? String str =scan.nextLine();

????? scan.close();

????? count(str);

??? }

??? //統計輸入的字符

??? private static voidcount(String str){

??????? Listlist = new ArrayList();

??????? char[]array_Char = str.toCharArray();

??????? for(charc:array_Char)

????????? list.add(String.valueOf(c));//將字符作為字符串添加到list表中

???????Collections.sort(list);//排序

??????? for(Strings:list){

??????????? intbegin = list.indexOf(s);

??? ????????int end = list.lastIndexOf(s);

??????????? //索引結束統計字符數

??????????? if(list.get(end)==s)

?????????????System.out.println("字符‘"+s+"’有"+(end-begin+1)+"個");

??????? }

??? }

}

8.求s=a+aa+aaa+aaaa+aa...a的值

求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加有鍵盤控制。

程序分析:關鍵是計算出每一項的值。

import java.util.Scanner;


public class Prog8{

??? public static voidmain(String[] args){

???????System.out.print("求s=a+aa+aaa+aaaa+...的值,請輸入a的值:");

??????? Scannerscan = new Scanner(System.in).useDelimiter("\\s*");//以空格作為分隔符

??????? int a =scan.nextInt();

??????? int n =scan.nextInt();

???????scan.close();//關閉掃描器

???????System.out.println(expressed(2,5)+add(2,5));

??? }

??? //求和表達式

??? private static Stringexpressed(int a,int n){

??????? StringBuffersb = new StringBuffer();

???????StringBuffer subSB = new StringBuffer();

??????? for(int i=1;i

????????? subSB =subSB.append(a);

????????? sb =sb.append(subSB);

????????? if(i

??????????? sb =sb.append("+");

??????? }

??????? sb.append("=");

??????? returnsb.toString();

??? }

??? //求和

??? private staticlong add(int a,int n){

??????? long sum = 0;

??????? long subSUM= 0;

??????? for(int i=1;i

??????????? subSUM= subSUM*10+a;

??????????? sum =sum+subSUM;

??????? }

??????? return sum;

??? }

}

9.指定范圍的完數

一個數如果恰好等于它的因子之和,這個數就稱為"完數"。例如6=1+2+3.編程找出1000以內的所有完數。

public class Prog9{

??? public static voidmain(String[] args){

??????? int n = 10000;

???????compNumber(n);

??? }

??? //求完數

??? private static void compNumber(int n){

???? ???int count = 0;

???????System.out.println(n+"以內的完數:");

??????? for (int i= 1; i <= 10000; i++) {

??????????? inttemp = 0;//定義因子之和變量

??????????? for(int n = 1; n < i / 2 + 1; n++) {

??????????????? if(i % n == 0) {

???????????????????temp += n;//能被整除的除數則被加到temp中

??????????????? }

??????????? }

??????????? if(temp == i) {//如果因子之和與原數相等的話,說明是完數

???????????????System.out.println(i + " ");//輸出完數

??????????? }

??????? }

??? }

}

10.反指數計算

一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地時,共經過多少米?第10次反彈多高?

import java.util.Scanner;

public class Prog10{

??? public static voidmain(String[] args){

???????System.out.print("請輸入小球落地時的高度和求解的次數:");

??????? Scannerscan = new Scanner(System.in).useDelimiter("\\s");

??????? int h =scan.nextInt();

??????? int n =scan.nextInt();

???????scan.close();

???????distance(h,n);

??? }


??? //小球從h高度落下,經n次反彈后經過的距離和反彈的高度

??? private static voiddistance(double h,int n){

??????? doublelength = 0;

??????? for(int i=0;i

??????????? length+= h;

??????????? h *=0.5;

??????????? length+= h;

??????? }

???????System.out.println("經過第"+n+"次反彈后,小球共經過"+length+"米,"+"第"+n+"次反彈高度為"+h+"米");

??? }

}

如果有想從事java開發或者需要2018學習資料的小伙伴,可以私信我【工作】或者【資料】,我會第一時間回復你哦

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,572評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,071評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,409評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,569評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,360評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,895評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,979評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,123評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,643評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,559評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,742評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,250評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,981評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,363評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,622評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,354評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,707評論 2 370

推薦閱讀更多精彩內容

  • 50道經典Java編程練習題,將數學思維運用到編程中來。抱歉哈找不到文章的原貼了,有冒犯的麻煩知會聲哈~ 1.指數...
    OSET我要編程閱讀 6,984評論 0 9
  • 【程序1】 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔...
    葉總韓閱讀 5,146評論 0 41
  • Java經典問題算法大全 /*【程序1】 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子...
    趙宇_阿特奇閱讀 1,885評論 0 2
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,707評論 18 399
  • 時間如一場夢,時間如那正在燃燒的木頭,時間如一個擁抱,時間就如你的眼睛一眨一眨。 ...
    海似你眼眸讓我看不透閱讀 230評論 0 0