Java基礎編程題_第1頁
Java基礎編程題_第2頁
Java基礎編程題_第3頁
Java基礎編程題_第4頁
Java基礎編程題_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、50道JAVA基礎編程練習題【程序1】題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子對數(shù)為多少? 程序分析: 兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,21. public class Prog1public static void main(String args)int n = 10;System.out.println(第+n+個月兔子總數(shù)為+fun(n);private static int fun(int n)if(n=1 | n=2) return 1;else return fun(n-

2、1)+fun(n-2);【程序2】題目:判斷101-200之間有多少個素數(shù),并輸出所有素數(shù)。程序分析:判斷素數(shù)的方法:用一個數(shù)分別去除2到sqrt(這個數(shù)),如果能被整除,則表明此數(shù)不是素數(shù),反之是素數(shù)。public class Prog2public static void main(String args)int m = 1;int n = 1000;int count = 0;/統(tǒng)計素數(shù)個數(shù)for(int i=m;in;i+)if(isPrime(i)count+;System.out.print(i+ );if(count%10=0)System.out.println();Syste

3、m.out.println();System.out.println(在+m+和+n+之間共有+count+個素數(shù));/判斷素數(shù)private static boolean isPrime(int n)boolean flag = true;if(n=1) flag = false;elsefor(int i=2;i=Math.sqrt(n);i+)if(n%i)=0 | n=1)flag = false;break; else flag = true; return flag;【程序3】題目:打印出所有的水仙花數(shù),所謂水仙花數(shù)是指一個三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個水

4、仙花數(shù),因為153=1的三次方5的三次方3的三次方。 程序分析:利用for循環(huán)控制100-999個數(shù),每個數(shù)分解出個位,十位,百位。public class Prog3public static void main(String args)for(int i=100;i1000;i+)if(isLotus(i) System.out.print(i+ );System.out.println();/判斷水仙花數(shù)private static boolean isLotus(int lotus)int m = 0;int n = lotus;int sum = 0;m = n/100;n -= m

5、*100;sum = m*m*m;m = n/10;n -= m*10;sum += m*m*m + n*n*n;if(sum=lotus)return true;elsereturn false;【程序4】題目:將一個正整數(shù)分解質因數(shù)。例如:輸入90,打印出90=2*3*3*5。程序分析:對n進行分解質因數(shù),應先找到一個最小的質數(shù)k,然后按下述步驟完成:(1)如果這個質數(shù)恰等于n,則說明分解質因數(shù)的過程已經(jīng)結束,打印出即可。(2)如果nk,但n能被k整除,則應打印出k的值,并用n除以k的商,作為新的正整數(shù)n,重復執(zhí)行第一步。(3)如果n不能被k整除,則用k+1作為k的值,重復執(zhí)行第一步。pu

6、blic class Prog4public static void main(String args)int n = 13;decompose(n);private static void decompose(int n)System.out.print(n+=);for(int i=2;i=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。程序分析:(ab)?a:b這是條件運算符的基本例子。 public class Prog5public static void main(String args)int n = -1;tryn = Integer.parseInt(

7、args0);catch(ArrayIndexOutOfBoundsException e)System.out.println(請輸入成績);return;grade(n);/成績等級計算private static void grade(int n)if(n100 | n=90)?分,屬于A等:(n60)?分,屬于B等:分,屬于C等); System.out.println(n+str);【程序6】題目:輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。程序分析:利用輾除法。public class Prog6public static void main(String args)int

8、m,n;trym = Integer.parseInt(args0);n = Integer.parseInt(args1);catch(ArrayIndexOutOfBoundsException e)System.out.println(輸入有誤);return;max_min(m,n);/求最大公約數(shù)和最小公倍數(shù)private static void max_min(int m, int n)int temp = 1;int yshu = 1;int bshu = m*n;if(nm)temp = n;n = m;m = temp;while(m!=0)temp = n%m;n = m;

9、m = temp;yshu = n;bshu /= n;System.out.println(m+和+n+的最大公約數(shù)為+yshu);System.out.println(m+和+n+的最小公倍數(shù)為+bshu);【程序7】題目:輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數(shù)字和其它字符的個數(shù)。程序分析:利用while語句,條件為輸入的字符不為n.import java.util.Scanner;public class Prog7_1public static void main(String args)System.out.print(請輸入一串字符:);Scanner scan = new

10、 Scanner(System.in);String str = scan.nextLine();/將一行字符轉化為字符串scan.close();count(str);/統(tǒng)計輸入的字符數(shù)private static void count(String str)String E1 = u4e00-u9fa5;/漢字String E2 = a-zA-Z;String E3 = 0-9;String E4 = s;/空格int countChinese = 0;int countLetter = 0;int countNumber = 0;int countSpace = 0;int countO

11、ther = 0;char array_Char = str.toCharArray();/將字符串轉化為字符數(shù)組String array_String = new Stringarray_Char.length;/漢字只能作為字符串處理for(int i=0;iarray_Char.length;i+) array_Stringi = String.valueOf(array_Chari);/遍歷字符串數(shù)組中的元素for(String s:array_String)if(s.matches(E1) countChinese+;else if(s.matches(E2) countLetter

12、+;else if(s.matches(E3) countNumber+;else if(s.matches(E4) countSpace+;else countOther+;System.out.println(輸入的漢字個數(shù):+countChinese);System.out.println(輸入的字母個數(shù):+countLetter);System.out.println(輸入的數(shù)字個數(shù):+countNumber);System.out.println(輸入的空格個數(shù):+countSpace);System.out.println(輸入的其它字符個數(shù):+countSpace);import

13、 java.util.*;public class Prog7_2public static void main(String args) System.out.println(請輸入一行字符:); Scanner scan = new Scanner(System.in); String str = scan.nextLine(); scan.close(); count(str);/統(tǒng)計輸入的字符private static void count(String str)List list = new ArrayList();char array_Char = str.toCharArray

14、();for(char c:array_Char) list.add(String.valueOf(c);/將字符作為字符串添加到list表中Collections.sort(list);/排序for(String s:list)int begin = list.indexOf(s);int end = list.lastIndexOf(s);/索引結束統(tǒng)計字符數(shù)if(list.get(end)=s) System.out.println(字符+s+有+(end-begin+1)+個);【程序8】題目:求s=a+aa+aaa+aaaa+aa.a的值,其中a是一個數(shù)字。例如2+22+222+22

15、22+22222(此時共有5個數(shù)相加),幾個數(shù)相加有鍵盤控制。 程序分析:關鍵是計算出每一項的值。import java.util.Scanner;public class Prog8public static void main(String args)System.out.print(求s=a+aa+aaa+aaaa+.的值,請輸入a的值:);Scanner scan = new Scanner(System.in).useDelimiter(s*);/以空格作為分隔符int a = scan.nextInt();int n = scan.nextInt();scan.close();/關

16、閉掃描器System.out.println(expressed(2,5)+add(2,5); /求和表達式private static String expressed(int a,int n)StringBuffer sb = new StringBuffer();StringBuffer subSB = new StringBuffer();for(int i=1;in+1;i+) subSB = subSB.append(a); sb = sb.append(subSB); if(in) sb = sb.append(+);sb.append(=);return sb.toString

17、();/求和private static long add(int a,int n)long sum = 0;long subSUM = 0;for(int i=1;in+1;i+)subSUM = subSUM*10+a;sum = sum+subSUM;return sum;【程序9】題目:一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為完數(shù)。例如6=123.編程找出1000以內(nèi)的所有完數(shù)。public class Prog9public static void main(String args)int n = 10000;compNumber(n);/求完數(shù)private static vo

18、id compNumber(int n)int count = 0;System.out.println(n+以內(nèi)的完數(shù):);for(int i=1;in+1;i+)int sum = 0;for(int j=1;ji/2+1;j+)if(i%j)=0)sum += j;if(sum=i) System.out.print(i+ ); if(count+)%5=0) System.out.println(); 【程序10】題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地時,共經(jīng)過多少米?第10次反彈多高?import java.util.Scanne

19、r;public class Prog10public static void main(String args)System.out.print(請輸入小球落地時的高度和求解的次數(shù):);Scanner scan = new Scanner(System.in).useDelimiter(s);int h = scan.nextInt();int n = scan.nextInt();scan.close();distance(h,n);/小球從h高度落下,經(jīng)n次反彈后經(jīng)過的距離和反彈的高度private static void distance(int h,int n)double leng

20、th = 0;for(int i=0;in;i+)length += h;h /=2.0 ;System.out.println(經(jīng)過第+n+次反彈后,小球共經(jīng)過+length+米,+第+n+次反彈高度為+h+米);【程序11】題目:有1、2、3、4個數(shù)字,能組成多少個互不相同且無重復數(shù)字的三位數(shù)?都是多少?程序分析:可填在百位、十位、個位的數(shù)字都是1、2、3、4。組成所有的排列后再去 掉不滿足條件的排列。public class Prog11public static void main(String args)int count = 0;int n = 0;for(int i=1;i5;i

21、+)for(int j=1;j5;j+)if(j=i) continue;for(int k=1;k)profit = profit_sub-;profit_sub = ;prize += profit*0.01;if(profit)profit = profit_sub-;profit_sub = ;prize += profit*0.015; if(profit)profit = profit_sub-;profit_sub = ;prize += profit*0.03;if(profit)profit = profit_sub-;profit_sub = ;prize += prize

22、*0.05;if(profit)profit = profit_sub-;profit_sub = ;prize += profit*0.075;prize += profit_sub*0.1;return prize;【程序13】題目:一個整數(shù),它加上100后是一個完全平方數(shù),再加上168又是一個完全平方數(shù),請問該數(shù)是多少?程序分析:在10萬以內(nèi)判斷,先將該數(shù)加上100后再開方,再將該數(shù)加上268后再開方,如果開方后的結果滿足如下條件,即是結果。public class Prog13public static void main(String args)int n=0;for(int i=0

23、;i;i+)if(isCompSqrt(i+100) & isCompSqrt(i+268)n = i;break;System.out.println(所求的數(shù)是:+n);/判斷完全平方數(shù)private static boolean isCompSqrt(int n)boolean isComp = false;for(int i=1;iMath.sqrt(n)+1;i+)if(n=Math.pow(i,2)isComp = true;break;return isComp;【程序14】題目:輸入某年某月某日,判斷這一天是這一年的第幾天?程序分析:以3月5日為例,應該先把前兩個月的加起來,然

24、后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于3時需考慮多加一天。import java.util.Scanner;public class Prog14public static void main(String args)Scanner scan = new Scanner(System.in).useDelimiter(D);/匹配非數(shù)字System.out.print(請輸入當前日期(年-月-日):);int year = scan.nextInt();int month = scan.nextInt();int date = scan.nextInt();scan.clos

25、e();System.out.println(今天是+year+年的第+analysis(year,month,date)+天);/判斷天數(shù)private static int analysis(int year, int month, int date)int n = 0;int month_date = new int 0,31,28,31,30,31,30,31,31,30,31,30;if(year%400)=0 | (year%4)=0)&(year%100)!=0) month_date2 = 29;for(int i=0;iy則將x與y的值進行交換,然后再用x與z進行比較,如果x

26、z則將x與z的值進行交換,這樣能使x最小。import java.util.Scanner;public class Prog15public static void main(String args)Scanner scan = new Scanner(System.in).useDelimiter(D);System.out.print(請輸入三個數(shù):);int x = scan.nextInt();int y = scan.nextInt();int z = scan.nextInt();scan.close();System.out.println(排序結果:+sort(x,y,z);

27、/比較兩個數(shù)的大小private static String sort(int x,int y,int z)String s = null;if(xy)int t = x;x = y;y = t;if(xz)int t = x;x = z;z = t;if(yz)int t = z;z = y;y = t;s = x+ +y+ +z;return s;【程序16】題目:輸出9*9口訣。程序分析:分行與列考慮,共9行9列,i控制行,j控制列。public class Prog16public static void main(String args)for(int i=1;i10;i+)for(

28、int j=1;j0;i-) m = 2*m + 2; System.out.println(小猴子共摘了+m+桃子);【程序18】題目:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單。 import java.util.ArrayList;public class Prog18String a,b,c;/甲隊成員public static void main(String args)String racer = x,y,z;/乙隊成員ArrayList a

29、rrayList = new ArrayList();for(int i=0;i3;i+) for(int j=0;j3;j+) for(int k=0;k3;k+) Prog18 prog18 = new Prog18(raceri,racerj,racerk); if(!prog18.a.equals(prog18.b) & !prog18.a.equals(prog18.c) & !prog18.b.equals(prog18.c) & !prog18.a.equals(x) & !prog18.c.equals(x) & !prog18.c.equals(z) arrayList.ad

30、d(prog18); for(Object obj:arrayList) System.out.println(obj);/構造方法private Prog18(String a,String b,String c)this.a = a;this.b = b ;this.c = c;public String toString()return a的對手是+a+ +b的對手是+b+ +c的對手是+c;【程序19】題目:打印出如下圖案(菱形) * * * * * * * 程序分析:先把圖形分成兩部分來看待,前四行一個規(guī)律,后三行一個規(guī)律,利用雙重 for循環(huán),第一層控制行,第二層控制列。publi

31、c class Prog19public static void main(String args)int n = 5;printStar(n);/打印星星private static void printStar(int n)/打印上半部分for(int i=0;in;i+)for(int j=0;j2*n;j+) if(j=n-i & j=n+i) System.out.print(*); System.out.println();/打印下半部分for(int i=1;in;i+)System.out.print( );for(int j=0;j2*n-i;j+)if(j=i & j2*n

32、-i-1) System.out.print(*);System.out.println();【程序20】題目:有一分數(shù)序列:2/1,3/2,5/3,8/5,13/8,21/13.求出這個數(shù)列的前20項之和。程序分析:請抓住分子與分母的變化規(guī)律。public class Prog20public static void main(String args)double n1 = 1;double n2 = 1;double fraction = n1/n2;double Sn = 0;for(int i=0;i20;i+) double t1 = n1; double t2 = n2; n1 =

33、 t1+t2; n2 = t1; fraction = n1/n2; Sn += fraction; System.out.print(Sn);【程序21】題目:求1+2!+3!+.+20!的和 程序分析:此程序只是把累加變成了累乘。public class Prog21public static void main(String args)long sum = 0;for(int i=0;i20;i+) sum += factorial(i+1);System.out.println(sum);/階乘private static long factorial(int n)int mult =

34、 1;for(int i=1;in+1;i+) mult *= i;return mult;【程序22】題目:利用遞歸方法求5!。程序分析:遞歸公式:fn=fn_1*4!public class Prog22public static void main(String args)System.out.println(fact(10);/遞歸求階乘private static long fact(int n)if(n=1) return 1;else return fact(n-1)*n;【程序23】題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數(shù),他說比第3個人大

35、2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一個人,他說是10歲。請問第五個人多大? 程序分析:利用遞歸的方法,遞歸分為回推和遞推兩個階段。要想知道第五個人歲數(shù),需知道第四人的歲數(shù),依次類推,推到第一人(10歲),再往回推。public class Prog23public static void main(String args)System.out.println(getAge(5,2);/求第m位同志的年齡private static int getAge(int m,int n)if(m=1) return 10;else return getAge(

36、m-1,n)+n;【程序24】題目:給一個不多于5位的正整數(shù),要求:一、求它是幾位數(shù),二、逆序打印出各位數(shù)字。public class Prog24public static void main(String args)int n = Integer.parseInt(args0); int i = 0;int a = new int5;doai = n%10; n /= 10; +i;while(n!=0);System.out.print(這是一個+i+位數(shù),從個位起,各位數(shù)字依次為:);for(int j=0;ji;j+) System.out.print(aj+ );【程序25】題目:

37、一個5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個位與萬位相同,十位與千位相同。import java.io.*;public class Prog25public static void main(String args)int n = 0;System.out.print(請輸入一個5位數(shù):);BufferedReader bufin = new BufferedReader(new InputStreamReader(System.in);try n = Integer.parseInt(bufin.readLine();catch(IOException e)e.printSta

38、ckTrace();finallytry bufin.close();catch(IOException e)e.printStackTrace();palin(n);private static void palin(int n)int m = n;int a = new int5;if(n99999)System.out.println(輸入的不是5位數(shù)!);return;else for(int i=0;i5;i+) ai = n%10; n /= 10; if(a0=a4 & a1=a3) System.out.println(m+是一個回文數(shù)); else System.out.pr

39、intln(m+不是回文數(shù)); 【程序26】題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續(xù) 判斷第二個字母。程序分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母。import java.io.*;public class Prog26public static void main(String args)String str = new String(); BufferedReader bufIn = new BufferedReader(new InputStreamReader(System.in); System.out.

40、print(請輸入星期的英文單詞前兩至四個字母):); try str = bufIn.readLine(); catch(IOException e) e.printStackTrace(); finally try bufIn.close(); catch(IOException e) e.printStackTrace(); week(str);private static void week(String str)int n = -1;if(str.trim().equalsIgnoreCase(Mo) | str.trim().equalsIgnoreCase(Mon) | str.

41、trim().equalsIgnoreCase(Mond) n = 1;if(str.trim().equalsIgnoreCase(Tu) | str.trim().equalsIgnoreCase(Tue) | str.trim().equalsIgnoreCase(Tues) n = 2; if(str.trim().equalsIgnoreCase(We) | str.trim().equalsIgnoreCase(Wed) | str.trim().equalsIgnoreCase(Wedn) n = 3;if(str.trim().equalsIgnoreCase(Th) | str.trim().equalsIgnoreCase(Thu) | str.trim().equalsIgnoreCase(Thur) n = 4; if(str.trim().equalsIgnoreCase(Fr) | str.trim().equalsIgnoreCase(Fri) | str.trim().equalsIgnoreCase(Frid) n = 5;if(str.trim().equalsIgnoreCase(Sa) | str.trim().equalsIgnoreCase(Sat) | str.trim().equalsIgnoreCas

溫馨提示

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

評論

0/150

提交評論