版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 44579-2024熱塑性塑料分集水器
- 借款合同訴訟時效及其影響因素
- 無底薪勞動合同樣本
- 貨物銷售合同格式
- 二手車交易協(xié)議書模板示例
- 財務(wù)咨詢協(xié)議書
- 2024年肉類供貨合同范本
- 個人信貸代理協(xié)議
- 2024年項目合作協(xié)議書撰寫大全
- 承攬合同-網(wǎng)頁制作協(xié)議
- 當(dāng)前臺海局勢分析課件
- 戰(zhàn)爭中的經(jīng)濟學(xué)家
- 成長賽道-模板參考
- 浙江省9+1高中聯(lián)盟2022-2023學(xué)年高二上學(xué)期期中考試地理試題(解析版)
- 新生兒家庭參與式護理課件
- 大數(shù)據(jù)對智能能源的應(yīng)用
- 潛式排污泵安裝與調(diào)試方案
- 雅培奶粉的營銷策劃
- 自然災(zāi)害救助培訓(xùn)課件
- 環(huán)氧樹脂畢業(yè)設(shè)計
- 裝飾公司企業(yè)策劃及發(fā)展規(guī)劃
評論
0/150
提交評論