java基礎(chǔ)50道經(jīng)典練習(xí)題及答案.doc_第1頁(yè)
java基礎(chǔ)50道經(jīng)典練習(xí)題及答案.doc_第2頁(yè)
java基礎(chǔ)50道經(jīng)典練習(xí)題及答案.doc_第3頁(yè)
java基礎(chǔ)50道經(jīng)典練習(xí)題及答案.doc_第4頁(yè)
java基礎(chǔ)50道經(jīng)典練習(xí)題及答案.doc_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

沃克IT教育JAVA基礎(chǔ)編程練習(xí)題整理:Lemon【程序1】題目:古典問(wèn)題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問(wèn)每個(gè)月的兔子對(duì)數(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+個(gè)月兔子總數(shù)為+fun(n);private static int fun(int n)if(n=1 | n=2) return 1;else return fun(n-1)+fun(n-2);【程序2】題目:判斷101-200之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)。程序分析:判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù)),如果能被整除,則表明此數(shù)不是素?cái)?shù),反之是素?cái)?shù)。public class Prog2public static void main(String args)int m = 1;int n = 1000;int count = 0;/統(tǒng)計(jì)素?cái)?shù)個(gè)數(shù)for(int i=m;in;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+個(gè)素?cái)?shù));/判斷素?cái)?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ù)是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個(gè)水仙花數(shù),因?yàn)?53=1的三次方5的三次方3的三次方。 程序分析:利用for循環(huán)控制100-999個(gè)數(shù),每個(gè)數(shù)分解出個(gè)位,十位,百位。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*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】題目:將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5。程序分析:對(duì)n進(jìn)行分解質(zhì)因數(shù),應(yīng)先找到一個(gè)最小的質(zhì)數(shù)k,然后按下述步驟完成:(1)如果這個(gè)質(zhì)數(shù)恰等于n,則說(shuō)明分解質(zhì)因數(shù)的過(guò)程已經(jīng)結(jié)束,打印出即可。(2)如果nk,但n能被k整除,則應(yīng)打印出k的值,并用n除以k的商,作為新的正整數(shù)n,重復(fù)執(zhí)行第一步。(3)如果n不能被k整除,則用k+1作為k的值,重復(fù)執(zhí)行第一步。public 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分的同學(xué)用A表示,60-89分之間的用B表示,60分以下的用C表示。程序分析:(ab)?a:b這是條件運(yùn)算符的基本例子。 public class Prog5public static void main(String args)int n = -1;tryn = Integer.parseInt(args0);catch(ArrayIndexOutOfBoundsException e)System.out.println(請(qǐng)輸入成績(jī));return;grade(n);/成績(jī)等級(jí)計(jì)算private static void grade(int n)if(n100 | n=90)?分,屬于A等:(n60)?分,屬于B等:分,屬于C等); System.out.println(n+str);【程序6】題目:輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。程序分析:利用輾除法。public class Prog6public static void main(String args)int 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;m = temp;yshu = n;bshu /= n;System.out.println(m+和+n+的最大公約數(shù)為+yshu);System.out.println(m+和+n+的最小公倍數(shù)為+bshu);【程序7】題目:輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù)。程序分析:利用while語(yǔ)句,條件為輸入的字符不為n.import java.util.Scanner;public class Prog7_1public static void main(String args)System.out.print(請(qǐng)輸入一串字符:);Scanner scan = new Scanner(System.in);String str = scan.nextLine();/將一行字符轉(zhuǎn)化為字符串scan.close();count(str);/統(tǒng)計(jì)輸入的字符數(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 countOther = 0;char array_Char = str.toCharArray();/將字符串轉(zhuǎn)化為字符數(shù)組String array_String = new Stringarray_Char.length;/漢字只能作為字符串處理for(int i=0;iarray_Char.length;i+) array_Stringi = String.valueOf(array_Chari);/遍歷字符串?dāng)?shù)組中的元素for(String s: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(輸入的漢字個(gè)數(shù):+countChinese);System.out.println(輸入的字母?jìng)€(gè)數(shù):+countLetter);System.out.println(輸入的數(shù)字個(gè)數(shù):+countNumber);System.out.println(輸入的空格個(gè)數(shù):+countSpace);System.out.println(輸入的其它字符個(gè)數(shù):+countSpace);import java.util.*;public class Prog7_2public static void main(String args) System.out.println(請(qǐng)輸入一行字符:); Scanner scan = new Scanner(System.in); String str = scan.nextLine(); scan.close(); count(str);/統(tǒng)計(jì)輸入的字符private static void count(String str)List list = new ArrayList();char array_Char = str.toCharArray();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);/索引結(jié)束統(tǒng)計(jì)字符數(shù)if(list.get(end)=s) System.out.println(字符+s+有+(end-begin+1)+個(gè));【程序8】題目:求s=a+aa+aaa+aaaa+aa.a的值,其中a是一個(gè)數(shù)字。例如2+22+222+2222+22222(此時(shí)共有5個(gè)數(shù)相加),幾個(gè)數(shù)相加有鍵盤控制。 程序分析:關(guān)鍵是計(jì)算出每一項(xiàng)的值。import java.util.Scanner;public class Prog8public static void main(String args)System.out.print(求s=a+aa+aaa+aaaa+.的值,請(qǐng)輸入a的值:);Scanner scan = new Scanner(System.in).useDelimiter(s*);/以空格作為分隔符int a = scan.nextInt();int n = scan.nextInt();scan.close();/關(guān)閉掃描器System.out.println(expressed(2,5)+add(2,5); /求和表達(dá)式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();/求和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】題目:一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為完數(shù)。例如6=123.編程找出1000以內(nèi)的所有完數(shù)。public class Prog9public static void main(String args)int n = 10000;compNumber(n);/求完數(shù)private static void 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次落地時(shí),共經(jīng)過(guò)多少米?第10次反彈多高?import java.util.Scanner;public class Prog10public static void main(String args)System.out.print(請(qǐng)輸入小球落地時(shí)的高度和求解的次數(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)過(guò)的距離和反彈的高度private static void distance(int h,int n)double length = 0;for(int i=0;in;i+)length += h;h /=2.0 ;System.out.println(經(jīng)過(guò)第+n+次反彈后,小球共經(jīng)過(guò)+length+米,+第+n+次反彈高度為+h+米);【程序11】題目:有1、2、3、4個(gè)數(shù)字,能組成多少個(gè)互不相同且無(wú)重復(fù)數(shù)字的三位數(shù)?都是多少?程序分析:可填在百位、十位、個(gè)位的數(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+)for(int j=1;j5;j+)if(j=i) continue;for(int k=1;k1000000)profit = profit_sub-1000000;profit_sub = 1000000;prize += profit*0.01;if(profit600000)profit = profit_sub-600000;profit_sub = 600000;prize += profit*0.015; if(profit400000)profit = profit_sub-400000;profit_sub = 400000;prize += profit*0.03;if(profit200000)profit = profit_sub-200000;profit_sub = 200000;prize += prize*0.05;if(profit100000)profit = profit_sub-100000;profit_sub = 100000;prize += profit*0.075;prize += profit_sub*0.1;return prize;【程序13】題目:一個(gè)整數(shù),它加上100后是一個(gè)完全平方數(shù),再加上168又是一個(gè)完全平方數(shù),請(qǐng)問(wèn)該數(shù)是多少?程序分析:在10萬(wàn)以內(nèi)判斷,先將該數(shù)加上100后再開方,再將該數(shù)加上268后再開方,如果開方后的結(jié)果滿足如下條件,即是結(jié)果。public class Prog13public static void main(String args)int n=0;for(int i=0;i100001;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日為例,應(yīng)該先把前兩個(gè)月的加起來(lái),然后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于3時(shí)需考慮多加一天。import java.util.Scanner;public class Prog14public static void main(String args)Scanner scan = new Scanner(System.in).useDelimiter(D);/匹配非數(shù)字System.out.print(請(qǐng)輸入當(dāng)前日期(年-月-日):);int year = scan.nextInt();int month = scan.nextInt();int date = scan.nextInt();scan.close();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的值進(jìn)行交換,然后再用x與z進(jìn)行比較,如果xz則將x與z的值進(jìn)行交換,這樣能使x最小。import java.util.Scanner;public class Prog15public static void main(String args)Scanner scan = new Scanner(System.in).useDelimiter(D);System.out.print(請(qǐng)輸入三個(gè)數(shù):);int x = scan.nextInt();int y = scan.nextInt();int z = scan.nextInt();scan.close();System.out.println(排序結(jié)果:+sort(x,y,z);/比較兩個(gè)數(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(int j=1;j0;i-) m = 2*m + 2; System.out.println(小猴子共摘了+m+桃子);【程序18】題目:兩個(gè)乒乓球隊(duì)進(jìn)行比賽,各出三人。甲隊(duì)為a,b,c三人,乙隊(duì)為x,y,z三人。已抽簽決定比賽名單。有人向隊(duì)員打聽比賽的名單。a說(shuō)他不和x比,c說(shuō)他不和x,z比,請(qǐng)編程序找出三隊(duì)賽手的名單。 import java.util.ArrayList;public class Prog18String a,b,c;/甲隊(duì)成員public static void main(String args)String racer = x,y,z;/乙隊(duì)成員ArrayList arrayList = 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.add(prog18); for(Object obj:arrayList) System.out.println(obj);/構(gòu)造方法private Prog18(String a,String b,String c)this.a = a;this.b = b ;this.c = c;public String toString()return a的對(duì)手是+a+ +b的對(duì)手是+b+ +c的對(duì)手是+c;【程序19】題目:打印出如下圖案(菱形) * * * * * * * 程序分析:先把圖形分成兩部分來(lái)看待,前四行一個(gè)規(guī)律,后三行一個(gè)規(guī)律,利用雙重 for循環(huán),第一層控制行,第二層控制列。public 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-i-1) System.out.print(*);System.out.println();【程序20】題目:有一分?jǐn)?shù)序列:2/1,3/2,5/3,8/5,13/8,21/13.求出這個(gè)數(shù)列的前20項(xiàng)之和。程序分析:請(qǐng)抓住分子與分母的變化規(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 = 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 = 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個(gè)人坐在一起,問(wèn)第五個(gè)人多少歲?他說(shuō)比第4個(gè)人大2歲。問(wèn)第4個(gè)人歲數(shù),他說(shuō)比第3個(gè)人大2歲。問(wèn)第三個(gè)人,又說(shuō)比第2人大兩歲。問(wèn)第2個(gè)人,說(shuō)比第一個(gè)人大兩歲。最后問(wèn)第一個(gè)人,他說(shuō)是10歲。請(qǐng)問(wèn)第五個(gè)人多大? 程序分析:利用遞歸的方法,遞歸分為回推和遞推兩個(gè)階段。要想知道第五個(gè)人歲數(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(m-1,n)+n;【程序24】題目:給一個(gè)不多于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(這是一個(gè)+i+位數(shù),從個(gè)位起,各位數(shù)字依次為:);for(int j=0;ji;j+) System.out.print(aj+ );【程序25】題目:一個(gè)5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個(gè)位與萬(wàn)位相同,十位與千位相同。import java.io.*;public class Prog25public static void main(String args)int n = 0;System.out.print(請(qǐng)輸入一個(gè)5位數(shù):);BufferedReader bufin = new BufferedReader(new InputStreamReader(System.in);try n = Integer.parseInt(bufin.readLine();catch(IOException e)e.printStackTrace();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+是一個(gè)回文數(shù)); else System.out.println(m+不是回文數(shù)); 【程序26】題目:請(qǐng)輸入星期幾的第一個(gè)字母來(lái)判斷一下是星期幾,如果第一個(gè)字母一樣,則繼續(xù) 判斷第二個(gè)字母。程序分析:用情況語(yǔ)句比較好,如果第一個(gè)字母一樣,則判斷用情況語(yǔ)句或if語(yǔ)句判斷第二個(gè)字母。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.print(請(qǐng)輸入星期的英文單詞前兩至四個(gè)字母):); 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.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().equals

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論