java經(jīng)典編程題二及詳細(xì)解答.docx_第1頁(yè)
java經(jīng)典編程題二及詳細(xì)解答.docx_第2頁(yè)
java經(jīng)典編程題二及詳細(xì)解答.docx_第3頁(yè)
java經(jīng)典編程題二及詳細(xì)解答.docx_第4頁(yè)
java經(jīng)典編程題二及詳細(xì)解答.docx_第5頁(yè)
已閱讀5頁(yè),還剩54頁(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)介

java經(jīng)典編程題二及詳細(xì)答案2.1上機(jī)練習(xí),基本題) 編程觀察如下輸出語(yǔ)句: 1System.out.println(hello test escape char); 在“escape”處換上各種轉(zhuǎn)義字符測(cè)試輸出效果。如何實(shí)現(xiàn)如下輸出: Hello test Hello test 2) 設(shè)有如下代碼段,考慮賦值轉(zhuǎn)換問(wèn)題: int a=234; byte b=a; System.out.println(a= a ,b= b); 將a,b的類型以及數(shù)據(jù)進(jìn)行各種替換,觀察什么時(shí)候能賦值,什么時(shí)候需要使用強(qiáng)制轉(zhuǎn)換,什么時(shí)候不能強(qiáng)制轉(zhuǎn)換,什么時(shí)候強(qiáng)制轉(zhuǎn)換會(huì)丟失數(shù)據(jù)。 23) 編寫一個(gè)程序求半徑R為10的圓的面積,結(jié)果保留2為有效小數(shù)。公式為:S=R 注:可用Math類的常量PI表示(即Math.PI)。保留小數(shù)請(qǐng)查閱DecimalFormat類 ,提高題1) 設(shè)有一個(gè)邊長(zhǎng)為30的等邊三角形,三角形內(nèi)有一個(gè)內(nèi)切圓,計(jì)算除內(nèi)切圓外三角形內(nèi)其它部分的面積。 【提示】先算三角形面積,再計(jì)算圓的面積,其差即為結(jié)果。h是等邊三角形的高,內(nèi)切圓的半徑r=h/3,面積s=h,/9。 2) 調(diào)試分析以下程序的運(yùn)行結(jié)果: public class test public static void main(String a) int m=10,n=517; System.out.println(n % m); System.out.println(n / m); System.out.println(m 2); System.out.println(m & n); System.out.println(Integer.toBinaryString(m); System.out.println(Integer.toBinaryString(m 2); 注意:Integer.toBinaryString(int)用于將一個(gè)整數(shù)轉(zhuǎn)化為二進(jìn)制形式的數(shù)字串。在進(jìn)行位運(yùn)算時(shí),注意觀察二進(jìn)制的數(shù)據(jù)變化規(guī)律。 2.2上機(jī)練習(xí),基本題1) 從鍵盤輸入4個(gè)學(xué)生的成績(jī),找出最高分和最低分。 【提示】引入兩個(gè)變量分別存放最高分和最低分,根據(jù)比較改變這兩個(gè)變量值。 2) 輸入一個(gè)百分制分?jǐn)?shù),輸出其對(duì)應(yīng)的五分制成績(jī),包括:優(yōu)、良、中、及格、不及格。 ,提高題1) 設(shè)有一元二次方程如下: 2 aX bx c=0 試根據(jù)從鍵盤輸入的a,b,c求解方程的根。 【提示】要考慮各種情形:一是a為0的情形,方程根為-c/b。還有就是根據(jù)判別式 2=b - 4ac進(jìn)行判斷,如果.0有兩個(gè)實(shí)根;=0,有一個(gè)實(shí)根;0 循環(huán) 4.1 根據(jù)whoplay的值決定是計(jì)算機(jī)拿x根還是提示人拿x根;計(jì)算機(jī)拿時(shí)最好帶有智能,人拿時(shí)要限制輸入數(shù)量。 4.2 修改 whoplay的值; 4.3 修改remain的值; (5) 根據(jù)whoplay的值決定勝者 4)某地刑偵大隊(duì)對(duì)涉及六個(gè)嫌疑人的一樁疑案進(jìn)行分析: A、B至少有一人作案; A、E、F三人中至少有兩人參與作案; A、D不可能是同案犯; B、C或同時(shí)作案,或與本案無(wú)關(guān); C、D中有且僅有一人作案;如果D沒有參與作案,則E也不可能參與作案。 試編一程序,將作案人找出來(lái)。 2.4 上機(jī)練習(xí),基本題1) 利用求n!的方法計(jì)算 2 4 5!的值。分別利用遞歸和非遞歸方法實(shí)現(xiàn)求n!。 2) 編寫根據(jù)三條邊求三角形面積的方法。利用該方法求以下兩個(gè)三角形面積。 (1)三條邊分別為:3,4,5 (2)三條邊分別為:5.3, 6.2, 8 3)從命令行參數(shù)獲取兩個(gè)整數(shù),找出兩個(gè)整數(shù)之間的所有素?cái)?shù),每行輸出3個(gè)數(shù)。 ,提高題1) 利用求素?cái)?shù)的方法,就6,20之間的所有偶數(shù)驗(yàn)證歌德巴赫猜想: 任何一個(gè)大于6的偶數(shù)可以分解為兩個(gè)素?cái)?shù)之和。 2) 分別編寫一個(gè)方法求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù),輸入兩個(gè)整數(shù),計(jì)算這兩個(gè)整的最大公約數(shù)和最小公倍數(shù)。 2.5上機(jī)練習(xí),基本題1)利用隨機(jī)函數(shù)產(chǎn)生20個(gè)學(xué)生的英語(yǔ)成績(jī)存入一個(gè)數(shù)組中。 ,輸出數(shù)組所有元素,每行輸出3個(gè)數(shù); ,求最高分、最低分; ,求平均成績(jī)。 2) 產(chǎn)生Fibonacci數(shù)列的頭20項(xiàng)存入一個(gè)一維數(shù)組中,按每行4個(gè)輸出數(shù)組的元素。 3) 利用隨機(jī)函數(shù)產(chǎn)生50,500之間的整數(shù)給一個(gè)6*6的矩陣賦值. l 求第3行的元素之和; l 求第2列的最小元素; l 求主對(duì)角線上最大元素; l 求數(shù)組所有元素之和。 4)利用隨機(jī)函數(shù)產(chǎn)生36個(gè)10,30之間的整數(shù)給一個(gè)6*6的矩陣賦值. ,求最大元素值,指出其在矩陣中的所有出現(xiàn)位置; ,求該矩陣的轉(zhuǎn)置矩陣。 5)利用數(shù)組元素間的關(guān)系輸出含8行的楊輝三角形; 楊輝三角形特點(diǎn): (1)第1列元素為1,對(duì)角線元素為1; (2)其他元素均為前一行的同一列位置元素和前一行的前一列元素之和。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 ,提高題1)產(chǎn)生20個(gè)范圍為0,50之間的不重復(fù)隨機(jī)整數(shù)存入到一個(gè)數(shù)組中,將數(shù)組中元素按由小到大輸出,并求數(shù)組所有元素的平均值。 【提示】每產(chǎn)生一個(gè)整數(shù)要跟前面已產(chǎn)生的數(shù)進(jìn)行比較,如果已存在,則不算,要重新產(chǎn)生,可以用一個(gè)循環(huán)來(lái)控制產(chǎn)生一個(gè)新數(shù),只有產(chǎn)生的數(shù)未出現(xiàn)過(guò),才能出循環(huán)。 2)利用隨機(jī)函數(shù)產(chǎn)生36個(gè)隨機(jī)整數(shù)給一個(gè)6*6的二維數(shù)組賦值。求出所有鞍點(diǎn),鞍點(diǎn)的條件是該元素在所在行是最大值,在所在列是最小值。 【提示】 先找出行上最大的元素,然后在判斷該元素在所在的列上是否是最小的。 3)利用排序算法將一數(shù)組按由小到大排列,輸入一個(gè)數(shù)據(jù),查找在數(shù)組中是否存在,采用“折半查找”加快查找速度。 所謂“折半查找”就是先與中間位置元素進(jìn)行比較,如果小于中間位置的元素,則在其上半部的中間位置繼續(xù)查找,否則在下半部的中間位置查找,該過(guò)程反復(fù)進(jìn)行,直到找到或發(fā)現(xiàn)不存在為止。 4) 構(gòu)造一個(gè)n階方陣,方陣的大小從鍵盤輸入,方陣的最外一圈元素為1,以后往內(nèi)依次為2,3,.n。例如: 1 1 1 1 1 1 2 2 2 1 1 2 3 2 1 1 2 2 2 1 1 1 1 1 1 詳細(xì)答案如下: 實(shí)驗(yàn)2.1 , 基本題 1)System.out.println(hello test escape char); 輸出結(jié)果是 hello test System.out.println(hello test escape char);輸出結(jié)果是hello est 2)int a=234; byte b=a;在這種情況下,由于a是int型,b是byte型而int的級(jí)別比byte高,故b不能被賦值,若要賦值必需利用強(qiáng)制轉(zhuǎn)換如:byte b=(byte)a; 當(dāng)a的取值在其范圍-128127內(nèi)時(shí)強(qiáng)制轉(zhuǎn)換不會(huì)丟失數(shù)據(jù),否則就會(huì)丟失數(shù)據(jù)。 通過(guò)各種數(shù)據(jù)類型的轉(zhuǎn)換可知:當(dāng)兩個(gè)數(shù)據(jù)類型相同或?qū)⒌图?jí)類型數(shù)據(jù)賦給高級(jí)類型時(shí)可以直接賦值;由于byte、short、char是平級(jí)的不能自動(dòng)轉(zhuǎn)換,必需使用強(qiáng)制轉(zhuǎn)換,另外由高級(jí)到低級(jí)時(shí)就要用到強(qiáng)制轉(zhuǎn)換;布爾類型不能與其他類型進(jìn)行轉(zhuǎn)換;在強(qiáng)制轉(zhuǎn)換中,當(dāng)某一數(shù)據(jù)超出它所聲明的類型的長(zhǎng)度范圍就會(huì)導(dǎo)致溢出或者降低數(shù)據(jù)精度而丟失數(shù)據(jù)。 3)程序如下: import java.text.DecimalFormat; public class Area public static void main(String args) int R=10; String S; DecimalFormat a= new DecimalFormat(#0.00); S=a.format(Math.PI*R*R); System.out.println (圓的面積為: S); 結(jié)果截圖: , 提高題 1)程序如下: public class Area public static void main(String s) double a1; double a2; double area; a1=225*Math.sqrt(3); a2=Math.PI*75; area=a1-a2; System.out.println(三角形的面積為: a1); System.out.println(內(nèi)切圓的面積為: a2); System.out.print(余下部分的面積為:); System.out.print(area); 結(jié)果截圖: 2)調(diào)試結(jié)果如下: 實(shí)驗(yàn)2.2 , 基本題 1)程序如下: import java.io.*; public class MyDemo public static void main(String args) throws NumberFormatException, IOException float score=new float4; BufferedReader in=new BufferedReader(new InputStreamReader(System.in); for(int i=0;iscore.length;i ) System.out.println(請(qǐng)輸入第 (i 1) 個(gè)成績(jī):); scorei=Float.parseFloat(in.readLine(); float min=32768; float max=0; for(int i=0;imax) max=scorei; if(scorei= 90) System.out.println(該成績(jī)?yōu)閮?yōu)); else if (grade = 80 & grade = 70 & grade = 60 & grade 0) System.out.println(第一個(gè)答案為 (-b Math.sqrt(b*b-4*a*c)/(2*a); System.out.println(第二個(gè)答案為 (-b-Math.sqrt(b*b-4*a*c)/(2*a); else System.out.println(對(duì)不起沒有答案); 截圖如下: 2) 程序如下: import java.util.Scanner; public class Tax public static void main(String args) double s; Scanner input = new Scanner(System.in); System.out.println(請(qǐng)輸入所得稅額t); double t=input.nextDouble(); if(t=500) System.out.println(應(yīng)納個(gè)人所得稅稅額為:25); else if(t=2000) s=0.1*t-25; System.out.println(應(yīng)納個(gè)人所得稅稅額為: s); else if (t=5000) s=0.15*t-125; System.out.println(應(yīng)納個(gè)人所得稅稅額為: s); else if (t=20000) s=0.2*t-375; System.out.println(應(yīng)納個(gè)人所得稅稅額為: s); else if (t=40000) s=0.25*t-1375; System.out.println(應(yīng)納個(gè)人所得稅稅額為: s); else if (t=60000) s=0.3*t-3375; System.out.println(應(yīng)納個(gè)人所得稅稅額為: s); else if (t=80000) s=0.35*t-6375; System.out.println(應(yīng)納個(gè)人所得稅稅額為: s); else if (t=100000) s=0.4*t-10375; System.out.println(應(yīng)納個(gè)人所得稅稅額為: s); else s=0.45*t-15375; System.out.println(應(yīng)納個(gè)人所得稅稅額為: s); 結(jié)果截圖: 實(shí)驗(yàn)2.3 , 基本題 1)程序如下: import java.io.*; public class Sanjiao public static void main(String args) int n=0; try BufferedReader in = new BufferedReader(new InputStreamReader(System.in); System.out.println(請(qǐng)輸入一個(gè)整數(shù):); String r = in.readLine(); n = Integer.parseInt(r); catch(Exception E) System.out.print(相應(yīng)三角形如下:); for(int i=0;i=n;i ) for(int j=0;ji;j ) System.out.print(#); System.out.println(); 結(jié)果截圖: 2)程序如下: public class sum public static void main(String args) float sum = 0F; for(int i = 1; i =100; i ) if(i % 2 = 0) sum -= (float)1 / i; else sum = (float)1 / i; System.out.println(1-1/2 1/3-1/4 1/5-1/6 .-1/100 = sum); 結(jié)果截圖: 3)程序如下: public class chengfa public static void main(String args) int sum; for(int i=1;i10;i ) for(int j=1;j10;j ) sum=i*j; System.out.printf(i * j = sum ); System.out.println(); 結(jié)果截圖: 4)程序如下: public class Fib public static void main(String args) int c; int a=1; int x=1; int b=1; System.out.print(a b); while (x=20) c=a b; System.out.print( c); a=b; b=c; x =1; 結(jié)果截圖: 5)程序如下: import java.lang.*; import java.io.*; public class Sin public static void main(String args) InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String s = ; double d = -10; System.out.println(請(qǐng)輸入一個(gè)90度以內(nèi)的角:); try s = br.readLine(); d = Double.valueOf(s); catch (Exception e) System.out.println(該角度對(duì)應(yīng)的正弦值為:); double di = Math.toRadians(d); double dou = Math.sin(di); double d2 = (double)(Math.round(dou*1000)/1000; System.out.println(d2); 結(jié)果截圖: , 提高題 1)程序如下: import java.util.Random; import java.util.Scanner; public class GuessNum public static final int EQUALS=0; public static final int GREATER_THAN=1; public static final int LITTLE_THAN=2; int count=0; private int generateNum() Random random = new Random(); return 10 random.nextInt(90); private int getTotal() return 110-(count 1)*10; public int compare(int guess, int random) if(guess=random) System.out.println(恭喜你,你猜對(duì)了); System.out.println(你猜對(duì)了. 你的得分是: getTotal(); return EQUALS; else if(guessrandom) count ; System.out.println(你已經(jīng)猜了 count 次了,你的數(shù)小了); return LITTLE_THAN; else count ; System.out.println(你已經(jīng)猜了 count 次了,你的數(shù)大了); return GREATER_THAN; public static void main(String args) GuessNum gn = new GuessNum(); Scanner scan = new Scanner(System.in); int num = gn.generateNum(); int guess; do System.out.println(請(qǐng)輸入一個(gè)10到99之間的數(shù)字); guess = scan.nextInt(); while(pare(guess, num)!=GuessNum.EQUALS); 結(jié)果截圖: 2)程序如下: import java.util.*; public class count public static void main(String args) int count = 0; List list = new ArrayList(); int i = 1; while(i = 100) int temp = 0; for(int j = 1; j = i; j ) if(i %j = 0) temp ; if(count =0) if(c=0) System.out.print(人拿火柴); double x=0; BufferedReader br=new BufferedReader(new InputStreamReader(System.in); try String s= br.readLine(); x=Double.parseDouble(s); catch(IOException e) if(x=1&x=3) remain-=(int)x; System.out.println(剩余火柴數(shù): remain); if(remain=0) System.out.print(人贏);break; if(remain0) System.out.print(計(jì)算機(jī)拿 remain); System.out.println(計(jì)算機(jī)贏);break; else System.out.println(最多只能拿三根); continue; System.out.print(計(jì)算機(jī)拿); int y=0; y=(int)(Math.random()*3 1); System.out.println( y); remain-=y; System.out.println(剩余火柴數(shù): remain); if(remain=0) System.out.print(人贏);break; if(d=0) System.out.print(計(jì)算機(jī)拿); int y=0; y=(int)(Math.random()*3 1); remain-=y; System.out.println( y); System.out.println(剩余火柴數(shù): remain); if(remain=0) System.out.print(計(jì)算機(jī)贏); break; /* while(remain=0) System.out.print(人拿火柴); double x=0; BufferedReader br=new BufferedReader(new InputStreamReader(System.in); try String s= br.readLine(); x=Double.parseDouble(s); catch(IOException e) if(x=1&x=3) remain-=(int)x; System.out.println(剩余火柴數(shù): remain); if(remain=0) System.out.print(人贏);break; if(remain0) System.out.print(計(jì)算機(jī)拿 remain); System.out.println(); System.out.println(計(jì)算機(jī)贏); break; else System.out.println(最多只能拿三根); continue; System.out.print(計(jì)算機(jī)拿); y=(int)(Math.random()*3 1); System.out.println( y); remain-=y; System.out.println(剩余火柴數(shù): remain); if(remain=0) System.out.println(人贏); break; break;*/ c=0; d=1; 結(jié)果截圖: 4)程序如下: public class zhencha public static void main(String args) String persons = A, B, C, D, E, F ; for (int i = 0; i = 0; j-) / 換成二進(jìn)制數(shù),保存在一個(gè)6個(gè)元素的一維數(shù)組中 if (t / 2 0) numj = t % 2; t = t / 2; else numj = t; break; / num0-num5代表A-F / 代表AB至少有一個(gè)人作案 if (num0 num1 = 1) / AEF 至少2個(gè)人作案 if (num0 num4 num5 = 2) / AD 不是同案犯。但可能都沒作案或其中一個(gè)作案 if (num0 num3 = 1) / BC 同時(shí)作案,或者同時(shí)沒作案 if (num1 num2 = 0 | num1 num2 = 2) / CD肯定有一個(gè)人作案了 if (num2 num3 = 1) / 如果D沒作案且E也沒作案,或者 D作案了了 if (num3 = 0 & num4 = 0 | num3 = 1) for (int index = 0; index num.length; index ) if (numindex = 1) System.out.println(作案人有: personsindex); 結(jié)果截圖: 實(shí)驗(yàn)2.4 , 基本題 1)程序如下: public class jiecheng public static void main(String args) int two = 2; int four = 4; int five = 5; int sum = calcFac(two) calcFac(four) calcFac(five); System.out.println(2! 4! 5! = sum); static int calcFac(int number) if(number = 1) return 1; else return calcFac(number - 1) * number; 結(jié)果截圖: 遞歸求n! import java.util.*; public class dgjc public static void main(String args) System.out.print(請(qǐng)輸入N值:); Scanner input = new Scanner(System.in); int N = input.nextInt(); System.out.print(factor(N); public static int factor(int n) if(n1) return 1; int s=n*factor(n-1); return s; 非遞歸求n! import java.util.*; public class fdgjc public static void main(String args ) System.out.print(請(qǐng)輸入N值:); Scanner input = new Scanner(System.in); int N= input.nextInt(); int s= 1; for (int i = 1; i =N; i ) s = s * i; System.out.println(則N!= s); 2)程序如下: public class mianji private double a; private double b; private double c; public mianji(double a, double b, double c) this.a = a; this.b = b; this.c = c; public static void main(String args) mianji triple = null; triple = new mianji(3, 4, 5); double area1 = triple.calcArea(); triple = new mianji(5.3, 6.2, 8); double area2 = triple.calcArea(); System.out.println(三條邊分別為3,4,5的三角形面積是: area1); System.out.println(三條邊分別為5.3, 6.2, 8的三角形面積是: area2); public double calcArea() double p = (a b c) / 2; return Math.sqrt(p * (p - a) * (p- b) * (p - c); 結(jié)果截圖: 3)程序如下: import java.util.*; public class sushu public static void main(String args) Scanner scan = new Scanner(System.in); System.out.print(請(qǐng)輸入一個(gè)整數(shù):); int x = scan.nextInt(); System.out.print(請(qǐng)輸入一個(gè)整數(shù):); int y = scan.nextInt(); int minNum = Math.min(x, y); int maxNum = Math.max(x, y); System.out.println(這兩個(gè)整數(shù)間的素?cái)?shù)有:); for(int i=minNum, count =0; imaxNum; i ) boolean isPrimeNumber = true; for(int j = 2; j i; j ) if(i % j = 0) isPrimeNumber = false; if(count = 3) System.out.println(); count = 0; if(isPrimeNumber) System.out.print(i ); count ; 結(jié)果截圖: , 提高題 1)程序如下: public class bahe / function:判斷temp是否為素?cái)?shù) public boolean checkPrime(int temp) boolean flag=true; int i=(int)Math.sqrt(temp); for(int j=2;j=i;j ) if(temp%j!=0) continue; else flag=false; j=i 1; return flag; /function:將temp分解為兩個(gè)素?cái)?shù)之和并打印 public void ChangeInt(int temp) int i=(int)(temp/2); for(int j=2;j=i;j ) if(checkPrime(j) int k=temp-j; if(checkPrime(k) System.out.println(整數(shù)temp temp 被分解為素?cái)?shù) j 和素?cái)?shù) k 之和); break; else continue; public static void main(String args) bahe ch=new bahe(); for(int i=6;i n) int h = m; m = n; n = h; if (n % m = 0) System.out.println(最大公約數(shù)為: m); else for (int i = n / 2; i 1; i-) if (m % i = 0 & n % i = 0) System.out.println(最大公約數(shù)為: i); break; public

溫馨提示

  • 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)論