Java基礎(chǔ)編程練習(xí)題50題及答案2017_第1頁
Java基礎(chǔ)編程練習(xí)題50題及答案2017_第2頁
Java基礎(chǔ)編程練習(xí)題50題及答案2017_第3頁
Java基礎(chǔ)編程練習(xí)題50題及答案2017_第4頁
Java基礎(chǔ)編程練習(xí)題50題及答案2017_第5頁
已閱讀5頁,還剩108頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、2017年Java基礎(chǔ)編程經(jīng)典練習(xí)題50道【程序1】   題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數(shù)為多少?   /這是一個菲波拉契數(shù)列問題public class lianxi01 public static void main(String args) System.out.println("第1個月的兔子對數(shù):    1");System.out.println("第2個月

2、的兔子對數(shù):    1");int f1 = 1, f2 = 1, f, M=24;     for(int i=3; i<=M; i+)       f = f2;      f2 = f1 + f2;      f1 = f;      System.out.println("第" + i

3、 +"個月的兔子對數(shù): "+f2);         【程序2】   題目:判斷101-200之間有多少個素數(shù),并輸出所有素數(shù)。 程序分析:判斷素數(shù)的方法:用一個數(shù)分別去除2到sqrt(這個數(shù)),如果能被整除, 則表明此數(shù)不是素數(shù),反之是素數(shù)。   public class lianxi02 public static void main(String args)     int count = 0;

4、60;   for(int i=101; i<200; i+=2)      boolean b = false;     for(int j=2; j<=Math.sqrt(i); j+)              if(i % j = 0) b = false; break;         

5、 else           b = true;              if(b = true) count +;System.out.println(i );                  

6、0;                   System.out.println( "素數(shù)個數(shù)是: " + count);【程序3】   題目:打印出所有的 "水仙花數(shù) ",所謂 "水仙花數(shù) "是指一個三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個 "水仙花數(shù) ",因為153=1的三次方5的三次方3的三次方。p

7、ublic class lianxi03 public static void main(String args)      int b1, b2, b3;      for(int m=101; m<1000; m+)       b3 = m / 100;      b2 = m % 100 / 10;      b1 = m %  &#

8、160; 10;      if(b3*b3*b3 + b2*b2*b2 + b1*b1*b1) = m)       System.out.println(m+"是一個水仙花數(shù)");         【程序4】   題目:將一個正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5。   程序分析:對n進行分解質(zhì)因數(shù),應(yīng)先找到一個最小的質(zhì)數(shù)

9、k,然后按下述步驟完成:   (1)如果這個質(zhì)數(shù)恰等于n,則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié)束,打印出即可。   (2)如果n <> k,但n能被k整除,則應(yīng)打印出k的值,并用n除以k的商,作為新的正整數(shù)你n,重復(fù)執(zhí)行第一步。   (3)如果n不能被k整除,則用k+1作為k的值,重復(fù)執(zhí)行第一步。  import java.util.*;public     class     lianxi04 

10、60;   public static void main(String args)         Scanner s = new Scanner(System.in);        System.out.print( "請鍵入一個正整數(shù):     ");         int  &

11、#160; n    = s.nextInt();        int k=2;         System.out.print(n + "=" );        while(k <= n)           if(k = n) Sys

12、tem.out.println(n);break;            else if( n % k = 0) System.out.print(k + "*");n = n / k;                     else    k+;

13、                            【程序5】   題目:利用條件運算符的嵌套來完成此題:學(xué)習(xí)成績> =90分的同學(xué)用A表示,60-89分之間的用B表示,60分以下的用C表示。   import java.util.*;public class lianxi05

14、public static void main(String args)      int x;     char grade;     Scanner s = new Scanner(System.in);     System.out.print( "請輸入一個成績: ");      x = s.nextInt();    

15、0;  grade = x >= 90 ? 'A'           : x >= 60 ? 'B'           :'C'    System.out.println("等級為:"+grade);   【程序6】   題

16、目:輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。   /*在循環(huán)中,只要除數(shù)不等于0,用較大數(shù)除以較小的數(shù),將小的一個數(shù)作為下一輪循環(huán)的大數(shù),取得的余數(shù)作為下一輪循環(huán)的較小的數(shù),如此循環(huán)直到較小的數(shù)的值為0,返回較大的數(shù),此數(shù)即為最大公約數(shù),最小公倍數(shù)為兩數(shù)之積除以最大公約數(shù)。* /import java.util.*;public    class     lianxi06     public static void main(String ar

17、gs) int     a ,b,m;Scanner s = new Scanner(System.in);System.out.print( "鍵入一個整數(shù): "); a = s.nextInt();System.out.print( "再鍵入一個整數(shù): "); b = s.nextInt();      deff cd = new deff();      m = cd.deff(a,b);  

18、;    int n = a * b / m;      System.out.println("最大公約數(shù): " + m);      System.out.println("最小公倍數(shù): " + n); class deffpublic int deff(int x, int y)      int t;     if(x < y) &#

19、160;     t = x;      x = y;      y = t;            while(y != 0)       if(x = y) return x;      else      

20、;  int k = x % y;       x = y;       y = k;                return x; 【程序7】   題目:輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數(shù)字和其它字符的個數(shù)。   package WuYang;import ja

21、va.util.*;public class lianxi07 public static void main(String args) int abcCount=0;/英文字母個數(shù) int spaceCount=0;/空格鍵個數(shù) int numCount=0;/數(shù)字個數(shù) int otherCount=0;/其他字符個數(shù) Scanner scan = new Scanner(System.in);/掃描器接受控制臺的輸入信息 System.out.println("輸入一組字符");String str=scan.nextLine();/取出控制臺的一行信息,也就是你輸入的

22、信息 char ch = str.toCharArray();/把取道的字符串變成一個char數(shù)組 for(int i=0;i<ch.length;i+) if(Character.isLetter(chi) /判斷是否字母 abcCount+; else if(Character.isDigit(chi) /判斷是否數(shù)字 numCount+; else if(Character.isSpaceChar(chi) /判斷是否空格鍵 spaceCount+; else /以上都不是則認(rèn)為是其他字符 otherCount+; System.out.println("字母個數(shù):&qu

23、ot;+abcCount); System.out.println("數(shù)字個數(shù):"+numCount); System.out.println("空格個數(shù):"+spaceCount); System.out.println("其他字符個數(shù):"+otherCount);【程序8】   題目:求s=a+aa+aaa+aaaa+aa.a的值,其中a是一個數(shù)字。例如2+22+222+2222+22222(此時共有5個數(shù)相加),幾個數(shù)相加有鍵盤控制。   import java.uti

24、l.*;public class lianxi08 public static void main(String args)      long a , b = 0, sum = 0;     Scanner s = new Scanner(System.in);     System.out.print("輸入數(shù)字a的值: ");     a = s.nextInt();   

25、0; System.out.print("輸入相加的項數(shù):");     int n = s.nextInt();     int i = 0;     while(i < n)       b = b + a;      sum = sum + b;      a = a * 10; 

26、60;    + i;           System.out.println(sum); 【程序9】   題目:一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為 "完數(shù) "。例如6=123.編程     找出1000以內(nèi)的所有完數(shù)。   public class lianxi09 public static void main(String args) &#

27、160;    System.out.println("1到1000的完數(shù)有: ");     for(int i=1; i<1000; i+)       int t = 0;      for(int j=1; j<= i/2; j+)        if(i % j = 0)     

28、60;   t = t + j;                   if(t = i)        System.out.print(i + "     ");           【程序10】 

29、  題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地時,共經(jīng)過多少米?第10次反彈多高? public class lianxi10 public static void main(String args) double h = 100,s = 0; for(int i=1; i<=10; i+) s = s + 2*h; h = h / 2; s=s-100; System.out.println("經(jīng)過路程:" + s); System.out.println("最后高度:&quo

30、t; + h); 【程序11】   題目:有1、2、3、4四個數(shù)字,能組成多少個互不相同且一個數(shù)字中無重復(fù)數(shù)字的三位數(shù)?并把他們都輸入。   public class lianxi11 public static void main(String args)      int count = 0;     for(int x=1; x<5; x+)       for(int y=1; y<5;

31、 y+)        for(int z=1; z<5; z+)         if(x != y && y != z && x != z)          count +;         System.out.println(x*100 + y*10 + z )

32、;                               System.out.println("共有" + count + "個三位數(shù)"); 【程序12】   題目:企業(yè)發(fā)放的獎金根據(jù)利潤提成。利潤(I)低于或等于10萬元時,獎金可提10%;利潤高于10萬元,低

33、于20萬元時,低于10萬元的部分按10%提成,高于10萬元的部分,可可提成7.5%;20萬到40萬之間時,高于20萬元的部分,可提成5%;40萬到60萬之間時高于40萬元的部分,可提成3%;60萬到100萬之間時,高于60萬元的部分,可提成1.5%,高于100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當(dāng)月利潤,求應(yīng)發(fā)放獎金總數(shù)?   import java.util.*;public class lianxi12 public static void main(String args)      double x =

34、 0,y = 0;     System.out.print("輸入當(dāng)月利潤(萬):");     Scanner s = new Scanner(System.in);     x = s.nextInt();     if(x > 0 && x <= 10)      y = x * 0.1;     el

35、se if(x > 10 && x <= 20)       y = 10 * 0.1 + (x - 10) * 0.075;     else if(x > 20 && x <= 40)       y = 10 * 0.1 + 10 * 0.075 + (x - 20) * 0.05;     else if(x > 40 && x &

36、lt;= 60)       y = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (x - 40) * 0.03;     else if(x > 60 && x <= 100)       y = 20 * 0.175 + 20 * 0.05 + 20 * 0.03 + (x - 60) * 0.015;      else if(x > 100) &#

37、160;     y = 20 * 0.175 + 40 * 0.08 + 40 * 0.015 + (x - 100) * 0.01;          System.out.println("應(yīng)該提取的獎金是 " + y + "萬");【程序13】   題目:一個整數(shù),它加上100后是一個完全平方數(shù),再加上168又是一個完全平方數(shù),請問該數(shù)是多少?   public cla

38、ss lianxi13 public static void main(String args)      for(int x =1; x<100000; x+)       if(Math.sqrt(x+100) % 1 = 0)        if(Math.sqrt(x+168) % 1 = 0)         System.out.println(x + &qu

39、ot;加100是一個完全平方數(shù),再加168又是一個完全平方數(shù)");                  /*按題意循環(huán)應(yīng)該從-100開始(整數(shù)包括正整數(shù)、負(fù)整數(shù)、零),這樣會多一個滿足條件的數(shù)-99。但是我看到大部分人解這道題目時都把題中的“整數(shù)”理解成正整數(shù),我也就隨大流了。*/【程序14】  題目:輸入某年某月某日,判斷這一天是這一年的第幾天?   import java.util.*

40、;public class lianxi14 public static void main(String args)      int year, month, day;     int days = 0;     int d = 0;     int e;     input fymd = new input();     do   

41、   e = 0;     System.out.print("輸入年:");     year =fymd.input();     System.out.print("輸入月:");     month = fymd.input();     System.out.print("輸入天:");  

42、;   day = fymd.input();     if (year < 0 | month < 0 | month > 12 | day < 0 | day > 31)      System.out.println("輸入錯誤,請重新輸入!");     e=1 ;           while( e=1); 

43、;     for (int i=1; i <month; i+)       switch (i)       case 1:      case 3:      case 5:      case 7:      case 8:  

44、;    case 10:      case 12:       days = 31;      break;      case 4:      case 6:      case 9:      case

45、 11:       days = 30;      break;      case 2:       if (year % 400 = 0) | (year % 4 = 0 && year % 100 != 0)         days = 29;   &#

46、160;   else         days = 28;              break;            d += days;           System.out.printl

47、n(year + "-" + month + "-" + day + "是這年的第" + (d+day) + "天。");class inputpublic int input()      int value = 0;     Scanner s = new Scanner(System.in);     value = s.nextInt();    

48、return value;【程序15】   題目:輸入三個整數(shù)x,y,z,請把這三個數(shù)由小到大輸出。   import java.util.*;public class lianxi15 public static void main(String args)      input fnc = new input();     int x=0, y=0, z=0;     System.out.print("

49、;輸入第一個數(shù)字:");      x = fnc.input();     System.out.print("輸入第二個數(shù)字:");      y = fnc.input();     System.out.print("輸入第三個數(shù)字:");      z = fnc.input();  &#

50、160;    if(x > y)       int t = x;      x = y;      y = t;         if(x > z)       int t = x;      x = z;  &#

51、160;   z = t;         if(y > z)       int t = y;      y = z;      z = t;         System.out.println( "三個數(shù)字由小到大排列為: "+x + " &quo

52、t; + y + " " + z);class inputpublic int input()      int value = 0;     Scanner s = new Scanner(System.in);     value = s.nextInt();     return value; 【程序16】題目:輸出9*9口訣。     public class

53、 lianxi16 public static void main(String args)      for(int i=1; i<10; i+)       for(int j=1; j<=i; j+)        System.out.print(j + "*" + i + "=" + j*i + "    " );  

54、;       if(j*i<10)System.out.print(" ");          System.out.println();     【程序17】   題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不癮,又多吃了一個     第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每

55、天早上都吃了前一天剩下     的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。   public class lianxi17 public static void main(String args)      int x = 1;     for(int i=2; i<=10; i+)       x = (x+1)*2;   

56、       System.out.println("猴子第一天摘了 " + x + " 個桃子");【程序18】   題目:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單。   public class lianxi18 static char m = 'a', 'b', &#

57、39;c' ;static char n = 'x', 'y', 'z' ;public static void main(String args)    for (int i = 0; i < m.length; i+)     for (int j = 0; j < n.length; j+)      if (mi = 'a' && nj = 'x')   

58、0;   continue; else if (mi = 'a' && nj = 'y')       continue;     else if (mi = 'c' && nj = 'x')       | (mi = 'c' && nj = 'z')   

59、60;   continue;     else if (mi = 'b' && nj = 'z')       | (mi = 'b' && nj = 'y')       continue;     else      System.out

60、.println(mi + " vs " + nj);【程序19】   題目:打印出如下圖案(菱形)        *      *    *   *    *      *       *   pu

61、blic class lianxi19 public static void main(String args)     int H = 7, W = 7;/高和寬必須是相等的奇數(shù)    for(int i=0; i<(H+1) / 2; i+)      for(int j=0; j<W/2-i; j+)       System.out.print(" ");     &

62、#160;    for(int k=1; k<(i+1)*2; k+)       System.out.print('*');          System.out.println();        for(int i=1; i<=H/2; i+)      for(int j=1; j<=i;

63、j+)       System.out.print(" ");          for(int k=1; k<=W-2*i; k+)       System.out.print('*');          System.out.println();    【程

64、序20】   題目:有一分?jǐn)?shù)序列:2/1,3/2,5/3,8/5,13/8,21/13.求出這個數(shù)列的前20項之和。 public class lianxi20 public static void main(String args)     int x = 2, y = 1, t;    double sum = 0;    for(int i=1; i<=20; i+)      sum = sum + (doubl

65、e)x / y;     t = y;     y = x;     x = y + t;     System.out.println("前20項相加之和是: " + sum);【程序21】   題目:求1+2!+3!+.+20!的和   public class lianxi21 public static void main(String args)

66、    long sum = 0;     long fac = 1;    for(int i=1; i<=20; i+)      fac = fac * i;     sum += fac;        System.out.println(sum);【程序22】   題目:利用遞歸方法求5!。  

67、60;public class lianxi22 public static void main(String args)        int n = 5;    rec fr = new rec();    System.out.println(n+"! = "+fr.rec(n);class recpublic long rec(int n)     long value = 0 ;   

68、if(n =1 )      value = 1;    else        value = n * rec(n-1);        return value; 【程序23】   題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數(shù),他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一個人,他說是10歲

69、。請問第五個人多大?   public class lianxi23 public static void main(String args)     int age = 10;     for(int i=2; i<=5; i+)      age =age+2;        System.out.println(age); 【程序24】   題目:給一個不

70、多于5位的正整數(shù),要求:一、求它是幾位數(shù),二、逆序打印出各位數(shù)字。   /使用了長整型最多輸入18位import java.util.*;public class lianxi24 public static void main(String args)    Scanner s = new Scanner(System.in);   System.out.print("請輸入一個正整數(shù):");   long a = s.nextLong();   String s

71、s = Long.toString(a);    char ch = ss.toCharArray();    int j=ch.length;    System.out.println(a + "是一個"+ j +"位數(shù)。");    System.out.print("按逆序輸出是:");    for(int i=j-1; i>=0; i-)   

72、60; System.out.print(chi);         【程序25】   題目:一個5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個位及萬位相同,十位及千位相同。   import java.util.*;public class lianxi25 public static void main(String args)     Scanner s = new Scanner(System.in);  

73、60; int a;    do     System.out.print("請輸入一個5位正整數(shù):");      a = s.nextInt();      while(a<10000|a>99999);     String ss =String.valueOf(a);     char ch = ss.toC

74、harArray();     if(ch0=ch4&&ch1=ch3)     System.out.println("這是一個回文數(shù)");     else System.out.println("這不是一個回文數(shù)");        /這個更好,不限位數(shù)import java.util.*;public class lianxi25a public sta

75、tic void main(String args)    Scanner s = new Scanner(System.in);   boolean is =true;   System.out.print("請輸入一個正整數(shù):");   long a = s.nextLong();   String ss = Long.toString(a);   char ch = ss.toCharArray();   int j=ch.len

76、gth;   for(int i=0; i<j/2; i+)    if(chi!=chj-i-1)is=false;      if(is=true)System.out.println("這是一個回文數(shù)");     else System.out.println("這不是一個回文數(shù)");       【程序26】   題目:請輸入星期幾的第一個字

77、母來判斷一下是星期幾,如果第一個字母一樣,則繼續(xù)   判斷第二個字母。   import java.util.*;public class lianxi26 public static void main(String args)     getChar tw = new getChar();    System.out.println("請輸入星期的第一個大寫字母:");    char ch = tw.getChar(); 

78、;   switch(ch)      case 'M':       System.out.println("Monday");      break;     case 'W':       System.out.println("Wednesday"); 

79、60;    break;     case 'F':      System.out.println("Friday");      break;     case 'T':       System.out.println("請輸入星期的第二個字母:");

80、0;     char ch2 = tw.getChar();      if(ch2 = 'U') System.out.println("Tuesday");       else if(ch2 = 'H') System.out.println("Thursday");       else System.out.println(

81、"無此寫法!");            ;       break;     case 'S':        System.out.println("請輸入星期的第二個字母:");      char ch2 = tw.getChar();

82、      if(ch2 = 'U') System.out.println("Sunday");        else if(ch2 = 'A') System.out.println("Saturday");        else System.out.println("無此寫法!");   

83、60;        ;      break;default:System.out.println("無此寫法!");   class getCharpublic char getChar()     Scanner s = new Scanner(System.in);    String str = s.nextLine();    char ch =

84、 str.charAt(0);    if(ch<'A' | ch>'Z')      System.out.println("輸入錯誤,請重新輸入");     ch=getChar();        return ch;  【程序27】   題目:求100之內(nèi)的素數(shù)   /使用除

85、sqrt(n)的方法求出的素數(shù)不包括2和3public class lianxi27 public static void main(String args)     boolean b =false;    System.out.print(2 + " ");    System.out.print(3 + " ");    for(int i=3; i<100; i+=2)      f

86、or(int j=2; j<=Math.sqrt(i); j+)       if(i % j = 0) b = false;                      break;       elseb = true;     &

87、#160;  if(b = true) System.out.print(i + " ");       /該程序使用除1位素數(shù)得2位方法,運行效率高通用性差。public class lianxi27a public static void main(String args)     int a = new int2, 3, 5, 7;   for(int j=0; j<4; j+)System.out.print(aj + " ");&

88、#160;   boolean b =false;    for(int i=11; i<100; i+=2)      for(int j=0; j<4; j+)       if(i % aj = 0) b = false;                  &#

89、160;   break;       elseb = true;        if(b = true) System.out.print(i + " ");       【程序28】   題目:對10個數(shù)進行排序   import java.util.*;public class lianxi28 public static

90、 void main(String args) Scanner s = new Scanner(System.in);   int a = new int10;   System.out.println("請輸入10個整數(shù):");   for(int i=0; i<10; i+)     ai = s.nextInt();      for(int i=0; i<10; i+)     for(int j

91、=i+1; j<10; j+)      if(ai > aj)       int t = ai;      ai = aj;      aj = t;               for(int i=0; i<10; i+)     System.out.print(ai + " ");   【程序29】   題目:求一個3*3矩陣對角線元素之和 &

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論