




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、Java經(jīng)典邏輯編程50題【程序1】 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數(shù)為多少? 1) 程序分析:兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,21. (斐波那契數(shù)列)2) 參考代碼import java.util.Scanner;public class RabbitNum public static void main(String args)
2、;Scanner in = new Scanner(System.in); System.out.println("你想知道前幾個月的兔子的數(shù)量"); int month = in.nextInt();
3、; int mon = new intmonth; if(month < 3) System.out.println("第" + month + "個月有 1 對兔子,共 2 只");
4、160; else for(int i = 2; i < month; i+) mon0 = m
5、on1 = 1; moni = moni - 1 + moni - 2; System.out.printf("第 %d 個月有 %d 對兔子,共 %d 只兔子n", i + 1, moni, 2 *
6、 moni); 【程序2】 題目:判斷101-200之間有多少個素數(shù),并輸出所有素數(shù)。 1 ) 程序分析:判斷素數(shù)的方法:用一個數(shù)分別去除2到sqrt(這個數(shù)),如果能被整除, 則表明此數(shù)不是素數(shù),反之是素數(shù)。 (java.lang.Math.sqrt(double a) 返回正確舍入的一個double值的正平方根)2) 參考代碼public class Prime
7、60; public static void main(String args) System.out.print("101-200中的素數(shù)有:"); for(int i = 101; i <= 200; i+) if(isPrim
8、e(i) System.out.print(" " + i); /isPrime方法用來判斷一個數(shù)是否是素數(shù) private static b
9、oolean isPrime(int i) for(int j = 2; j <= Math.sqrt(i); j+) if(i % j = 0) return fa
10、lse; return true; 【程序3】 題目:打印出所有的 "水仙花數(shù) ",所謂 "水仙花數(shù) "是指一個三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個 "水仙花數(shù) ",因為153=1的三次方5的三次方3的三次方。1 ) 程序分析:利用for循環(huán)控制100-999個數(shù),每個數(shù)分解出個位,
11、十位,百位。 2) 參考代碼public class NarcissisticNum public static void main(String args) System.out.print("水仙花數(shù)有:"); for(int num = 100; num < 1000; num+)
12、 if(isNarcissisticNum(num) System.out.println(" " + num); &
13、#160; /一個判斷正整數(shù)是否為水仙花數(shù)的方法 private static boolean isNarcissisticNum(int num) / TODO Auto-generated method stub int a = num / 100;
14、160; /分離出百位 a int b = (num / 10) % 10; /分離出十位 b int c = num % 10; /分離出個位 c int su
15、m = a * a * a + b * b * b + c * c * c; if(sum = num) return true; else
16、; return false; 【程序4】 題目:將一個正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5。 程序分析:對n進行分解質(zhì)因數(shù),應(yīng)先找到一個最小的質(zhì)數(shù)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í)行第一步。
17、參考代碼:import java.util.Scanner; public class PrimeFactorOfInteger public static void main(String args) Scanner input = new Scanner(System.in);
18、0; System.out.println("請輸入一個大于 3 的正整數(shù)"); int num = input.nextInt(); System.out.print(num + "的素因數(shù):"); factor(num);
19、60; private static void factor(int num) for(int i = 2; i <= Math.sqrt(num); i+) if(num % i = 0)
20、 System.out.print(i + " * "); if(isPrime(num / i)
21、60; System.out.println(num / i); else &
22、#160; factor(num / i); break;
23、60; private static boolean isPrime(int i) for(int j = 2; j <= Math.sqrt(i); j+) if(i % j = 0)
24、160; return false; return true; 【程序5】 題目:利用條件運算符的嵌套來完成此題:學(xué)習(xí)成績> =90分的同學(xué)用A表示,60-89分之間的用B表示,60分以下的用C表示。
25、0;1. 程序分析:(a> b)?a:b這是條件運算符的基本例子。 參考代碼import java.util.Scanner; public class ConditionalOperator public static void main(String args) Scanner in = new Scanner(System.in);
26、0; System.out.println("請輸入你的分?jǐn)?shù)"); int score = in.nextInt(); if(score >= 90)
27、; System.out.println("A 恭喜"); else if(score >= 60)
28、;System.out.println("B 不錯"); else System.out.println("C 加油");
29、; 【程序6】 題目:輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。 1.程序分析:利用輾除法。 參考代碼import java.util.Scanner; public class Example6 public static void main(String args) Scanner in = new Scanner(System.in);
30、60; System.out.println("請輸入第一個數(shù)"); int a = in.nextInt(); System.out.println("請輸入第二個數(shù)");
31、0; int b = in.nextInt(); System.out.println("這兩個數(shù)的最大公約數(shù)是 " + MaxCommonDivisor(a, b); System.out.print
32、ln("這兩個數(shù)的最小公倍數(shù)是 " + MinCommonMultiple(a, b); private static int MaxCommonDivisor(int a, int b) if(a < b) int temp =
33、 a; a = b; b = temp; while(a % b != 0) &
34、#160; int temp = a % b; a = b; b = temp;
35、; return b; private static int MinCommonMultiple(int a, int b) return a * b / MaxCommonDivisor(a, b); 【程序7】 題目:輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數(shù)字和其它字符的個數(shù)。 1. 程序分析:利用while語句,條件為輸入的字符不為
36、 'n '. 參考代碼import java.util.Scanner; public class Statistic public static void main(String args) Scanner in = new Scanner(System.in);
37、160; System.out.println("Input one sentance."); String s = in.nextLine(); int
38、 letter = 0, symbol = 0, space = 0, number = 0; char strArray = s.toCharArray(); for (int i = 0; i < strArray.length; i+)
39、0; char c = strArrayi; if('a' <= c && c <= 'z') | ('A' <= c && c <= 'Z')
40、160; letter+; else if(48 <= c && c <= 57) /注意!數(shù)字0-9的ASCII碼是48-57
41、160; number+; else if(c = ' ') space+;
42、;else symbol+; System.out.println("This sentance have " + letter + " letters, ");
43、60; System.out.println("have "+ number + " numbers, "); System.out.println("have " + space + " spaces, " + "and " + symbol + " symbols.");
44、160;【程序8】 題目:求s=a+aa+aaa+aaaa+aa.a的值,其中a是一個數(shù)字。例如2+22+222+2222+22222(此時共有5個數(shù)相加),幾個數(shù)相加有鍵盤控制。 1.程序分析:關(guān)鍵是計算出每一項的值。 參考代碼import java.util.Scanner; public class Example8 public static void main(String args) Scanner
45、input = new Scanner(System.in); System.out.println("請輸入相加的基數(shù)"); int n = input.nextInt(); System
46、.out.println("請輸入要相加的個數(shù)"); int i = input.nextInt(); long total = 0L; long temp = n;
47、 for(int j = 0; j < i; j+) total += temp; temp = temp * 10 + n;
48、60; System.out.println("和為" + total); 【程序9】 題目:一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為 "完數(shù) "。例如6=123.編程找出1000以內(nèi)的所有完數(shù)。 參考代碼public class WholeNumber public static void main(String args)
49、; System.out.println("1000以內(nèi)的完數(shù)有:"); for(int num = 1; num < 1000; num+) isWholeNumber(num); &
50、#160; private static void isWholeNumber(int num) int sum = 0; for(int i = 1; i <= num / 2; i+) &
51、#160; if(num % i = 0) sum += i; &
52、#160; if(sum = num) System.out.println(num); 【程序10】 題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地時,共經(jīng)過多少米?第10次反彈多高? 1:注意彈球一上一下的距離2:參考代碼import j
53、ava.util.Scanner; public class Pinball public static void main(String args) Scanner in = new Scanner(System.in);
54、0; System.out.println("請輸入原始高度。"); double s = in.nextDouble(); System.out.println("要求第幾次落地后的距離。"); int n = in.nextInt();
55、160; double total = s; System.out.printf("第%d次落地后共走的距離是:" , n); if(n = 1)
56、0; System.out.println(total); System.out.printf("第%d次反彈的距離是%f。", n, s / 2); &
57、#160; else for(int i = 1; i < n; i+)
58、; s = s / 2; total += 2 * s; /一上一下共兩倍的彈跳距離
59、160; System.out.print(total); System.out.println(); System.out.printf("第%d次反
60、彈的距離是%f。", n, s / 2); 【程序11】 題目:有1、2、3、4個數(shù)字,能組成多少個互不相同且無重復(fù)數(shù)字的三位數(shù)?都是多少? 1. 程序分析:可填在百位、十位、個位的數(shù)字都是1、2、3、4。組成所有的排列后再去掉不滿足條件的排列。2. 參考代碼public class Three_digitNum public static void main(String a
61、rgs) int i, j, k; /分別代表個、十、百位 int num; /用來輸出符合要求的三位數(shù)
62、60;int count = 0; /用來統(tǒng)計符合要求的三位數(shù)有多少個 System.out.println("符合要求的三位數(shù)有:"); for(i = 1; i <=
63、 4; i+) for(j = 1; j <= 4; j+) if(i != j) /提前把有重復(fù)的部分情況過濾掉,減少運行次數(shù),優(yōu)化性能
64、160; for(k = 1; k <= 4; k+) if(i != k &&
65、; j != k) num = i + j * 10 + k * 100;
66、 System.out.println(num); count+;
67、;
68、; System.out.println("符合要求的三位數(shù)共有" + count + "個"); 【程序12】 題目:企業(yè)發(fā)放的獎金根據(jù)利潤提成。利潤(I)低于或等于10萬元時,獎金可提10%;利潤高于10萬元,低于20萬元時,低于10萬元的部分按10%提成,高于10萬元的部分,可可提成7.5%;2
69、0萬到40萬之間時,高于20萬元的部分,可提成5%;40萬到60萬之間時高于40萬元的部分,可提成 3%;60萬到100萬之間時,高于60萬元的部分,可提成1.5%,高于100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當(dāng)月利潤I,求應(yīng)發(fā)放獎金總數(shù)? 1. 程序分析:請利用數(shù)軸來分界,定位。注意定義時需把獎金定義成長整型。 【程序13】 題目:一個整數(shù),它加上100后是一個完全平方數(shù),再加上168又是一個完全平方數(shù),請問該數(shù)是多少? 1.程序分析:在10萬以內(nèi)判斷,先將該數(shù)加上100后再開方,再將該數(shù)加上268后再開方,如果開方后的結(jié)果滿
70、足如下條件,即是結(jié)果。參考代碼public class FundNum public static void main(String args) long i, j, k; for(i = 1; i < 100000; i +)
71、; for(j = 0; j < 1000; j+) if(j * j = i + 100) &
72、#160; for(k = j; k < 1000; k+)
73、0; if(k * k = i + 268)
74、60; System.out.println(i);
75、; 【程序14】 題目:輸入某年某月某日,判斷這一天是這一年的第幾天? 1. 程序分析:以3月5日為例,應(yīng)該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于3時需考慮多加一天。 2. 參考代碼import
76、 java.util.Scanner; public class DayOfYear public static void main(String args) Scanner in = new Scanner(System.in);
77、 System.out.println("請輸入年份。"); int year = in.nextInt(); System.out.println("請輸入月份。"); int month = in.nextInt();
78、; System.out.println("請輸入日期。"); int day = in.nextInt(); int sum = 0;
79、60; switch(month - 1) case 0: sum = 0; break; case 1: sum = 31; break; case 2: sum = 59; break;
80、; case 3: sum = 90; break; case 4: sum = 120; break; case 5: sum = 151; break; case 6: sum = 181; break;
81、160; case 7: sum = 212; break; case 8: sum = 243; break; case 9: sum = 273; break; case 10: sum = 304; break;
82、60; case 11: sum = 334; break; if(month > 2)&&isLeap(year) System.out.printf("這天是這年第%d天。", sum +
83、 day + 1); else System.out.printf("這天是這年第%d天。", sum + day); private static boolean isLeap(int y
84、ear) if(year % 100 != 0)&&(year % 4 = 0) | (year % 400 = 0) return true; else
85、160; return false; 【程序15】 題目:輸入三個整數(shù)x,y,z,請把這三個數(shù)由小到大輸出。 1. 程序分析:我們想辦法把最小的數(shù)放到x上,先將x與y進行比較,如果x> y則將x與y的值進行交換,然后再用x與z進行比較,如果x> z則將x與z的值進行交換,這樣能使x最小。 2. 參考代碼import java.util.Scanner; public class MinOfThre
86、e public static void main(String args) Scanner in = new Scanner(System.in); System.out.println("請輸入三個整數(shù)");
87、; System.out.println("請輸入第1個整數(shù)"); int a = in.nextInt(); System.out.println("請輸入第2個整數(shù)"); int b = in.nextI
88、nt(); System.out.println("請輸入第3個整數(shù)"); int c = in.nextInt(); System.out.print("從小到大的順序為:"); i
89、f(a < b) if(b < c) System.out.printf("%d<%d<%d", a, b, c);
90、 else if(a < c) System.out.printf("%d<%d<%d", a, c
91、, b); else System.out.printf("%d<%d<%d", c, a, b);
92、160; else if(c < b) System.out.print
93、f("%d<%d<%d", c, b, a); else if(c < a)
94、; System.out.printf("%d<%d<%d", b, c, a); else
95、 System.out.printf("%d<%d<%d", b, a, c); 【程序16】 題目:輸出9*9口訣。 1. 程序分析:分行與列考慮,共9行9列,i控制行,j控制列。 2. 參考代碼public cla
96、ss JiujiuBiao public static void main(String args) for (int i = 1; i < 10; i+) for
97、(int j = 1; j <= i; j+) int total = 0;
98、160;total = i * j; System.out.printf("%d * %d = %-5d", j, i, total); &
99、#160; System.out.println(); 【程序17】 題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不癮,又多吃了一個第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天
100、剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。 1. 程序分析:采取逆向思維的方法,從后往前推斷。 2. 參考代碼public class EatPeach public static void main(String args) int total = 1;
101、0; /day = 1的時候,算出來的total其實是第9天有的桃子 /day = 9的時候,算出來的total就是第1天的桃子 for(int day = 1; day < 10; day+) total
102、 = 2 * (total + 1); System.out.println("一開始共有 " + total + " 桃子"); 【程序18】 題目:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,
103、乙隊為x,y,z三人。已抽簽決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單。 1. 程序分析:判斷素數(shù)的方法:用一個數(shù)分別去除2到sqrt(這個數(shù)),如果能被整除,則表明此數(shù)不是素數(shù),反之是素數(shù)。 2. 參考代碼public class MatchCP public static void main(String args) char i, j, k; &
104、#160; /i,j,k分別是a,b,c的對手 for(i = 'X' i <= 'Z' i+) for(j = 'X' j <= 'Z' j+)
105、; if(i != j) for(k = 'X' k < 'Z' k+) &
106、#160; if(i != k && j != k) if(i != 'X' && k != 'X
107、9; && k != 'Z') System.out.printf("a - %cnb - %cnc - %c", i, j, k);
108、0;
109、0; 【程序19】 題目:打印出如下圖案(菱形)代碼略【程序20】 題目:有一分?jǐn)?shù)序列:2/1,3/2,5/3,8/5,13/8,21/13.求出這個數(shù)列的前20項之和。 1. 程序分析:請抓住分子與
110、分母的變化規(guī)律。 2. 參考代碼public class FractionSum public static void main(String args) float i = 2.0f, j = 1.0f; /i為分子,j為分母 float num = 2.0f;
111、160; /num是分?jǐn)?shù),sum是分?jǐn)?shù)的和 float sum = 2.0f; for(int m = 1; m < 20; m+) /m = 1時,num已經(jīng)是第2個加數(shù)了,所以m < 20
112、160; i = i + j; j = i - j; /變化前的 i 賦值給 j num = i / j;
113、0; sum += num; System.out.println("前20個分?jǐn)?shù)的和為 " + sum); 【程序21】 題目:求1+2!+3!+.+20!的和 1. 程序分析:此程序只是把累加變成了累乘
114、。 2. 參考代碼import java.util.Scanner; public class Recursion public static void main(String args) Scanner in = new Scanner(System.in);
115、60; System.out.println("你想計算到哪個數(shù)的階乘的和"); int num = in.nextInt(); long temp = 0L; lon
116、g sum = 0L; for(int i = 1; i <= num; i+) temp = recursion(i); sum += temp;
117、0; System.out.println("計算到" + num + "的階乘和是 " + sum); /計算某個數(shù) num 的階乘 private static long recursion
118、(int num) if(num > 1) return num * recursion(num - 1); return 1; &
119、#160;【程序22】 題目:利用遞歸方法求5!。 1. 程序分析:遞歸公式:fn=fn_1*4! 2. 參考代碼:【程序23】 題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數(shù),他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一個人,他說是10歲。請問第五個人多大? 1. 程序分析:利用遞歸的方法,遞歸分為回推和遞推兩個階段。要想知道第五個人歲數(shù),需知道第四人的歲數(shù),依次類推,推到第一人(10歲),再往回推。2. 參考代碼 【程序24
120、】 題目:給一個不多于5位的正整數(shù),要求:一、求它是幾位數(shù),二、逆序打印出各位數(shù)字。 參考代碼import java.util.Scanner; public class ReversedNum public static void main(String args) Scanner in = new Scanner(System.in);
121、 System.out.println("請輸入一個不多于5位的整數(shù)"); int num = in.nextInt(); int n = 1;
122、; System.out.print("這個數(shù)的逆序為:"); while(num / 10 > 0) n+; int tmp
123、 = num % 10; System.out.print(tmp); num /= 10; System.out.print
124、ln(num); System.out.println("這個數(shù)共有" + n + "位數(shù)"); 【程序25】 題目:一個5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個位與萬位相同,十位與千位相同。 【程序26】 題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續(xù)判斷第二個字母。 1. 程序分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況
125、語句或if語句判斷第二個字母。 2. 參考代碼import java.util.Scanner; public class WeekDay public static void main(String args) Scanner in = new Scanner(System.in);
126、60; char firstletter, secondletter; /存放第一第二個字母 System.out.println("請輸入第一字母"); String letter = in.next();
127、60; firstletter = letter.charAt(0); switch(firstletter) case 'm': case 'M':
128、160; System.out.println("是星期一");break; case 'w': case 'W':
129、60;System.out.println("是星期三");break; case 'f': case 'F': System.out.println("是星期五");break;
130、60; case 't': case 'T': System.out.println("僅由該字母無法判斷出星期幾,請輸入第二個字母");
131、0; letter = in.next(); secondletter = letter.charAt(0); if(secondletter = 'u' | secondletter = 'U')
132、160; System.out.println("是星期二"); break; else if(secondletter = 'h' | secondletter = 'H') System.out.println("是星期四"); &
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 除顫儀試題及答案解析
- 長城比亞迪面試題及答案
- 高考文綜選擇試題及答案
- 物理現(xiàn)象觀察與分析題試題及答案
- ensp考試試題及答案
- 核電普工考試試題及答案
- 聯(lián)創(chuàng)社工招聘考試試題及答案
- 國企財務(wù)考試試題及答案
- 法律等級考試試題及答案
- 船廠電焊考試試題及答案
- JG-T+100-1999塔式起重機操作使用規(guī)程
- 山東省濟南市高新區(qū)2023-2024學(xué)年八年級下學(xué)期期末物理試題
- 供應(yīng)商改善計劃表
- DLT 5285-2018 輸變電工程架空導(dǎo)線(800mm以下)及地線液壓壓接工藝規(guī)程
- 中國兔子行業(yè)上下游產(chǎn)業(yè)鏈全景、發(fā)展歷程回顧及市場前景預(yù)測
- 10以上20以內(nèi)加減法
- 急產(chǎn)分娩應(yīng)急演練方案
- JBT 11699-2013 高處作業(yè)吊籃安裝、拆卸、使用技術(shù)規(guī)程
- 24春國家開放大學(xué)《離散數(shù)學(xué)》大作業(yè)參考答案
- 2024年1月普通高等學(xué)校招生全國統(tǒng)一考試適應(yīng)性測試(九省聯(lián)考)化學(xué)試題(適用地區(qū)安徽)(試卷)
- 新能源綜合能源系統(tǒng)的設(shè)計與優(yōu)化
評論
0/150
提交評論