50道經典的JAVA編程題 (16-20),用了快一個下午來做這10道題了,整理博客的時間貌似大於編程的時間啊。。哈哈
【程序16】Nine.java
題目:輸出9*9口訣。
1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。
package test50;
/**
* @author VellBibi
*【程序16】Nine.java
*題目:輸出9*9口訣。
*1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。
*/
public class Nine {
public static void main(String[] args) {
for(int i=1; i<=9; i++){
for(int j=1; j<=i; j++){
System.out.print(j + "*" + i + "=" + i*j + " ");
}
System.out.println();
}
}
}

【程序17】MonkeyEatPeach.java
題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個 第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思維的方法,從后往前推斷(遞歸)
package test50;
/**
* @author VellBibi
*【程序17】MonkeyEatPeach.java
*題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個 第二天早上又將剩下的桃子吃掉一半
*,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
*1.程序分析:采取逆向思維的方法,從后往前推斷
*/
public class MonkeyEatPeach {
/**
* 獲取d天前有多少桃子
* @param d
* @return
*/
public static int getNum(int d){
if(d == 0) return 1;
else return (getNum(d-1) + 1) * 2;
}
public static void main(String[] args) {
System.out.println(getNum(10));
}
}

【程序18】 Prog.java
題目:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單。

javapackage test50;
/** * @author VellBibi * 【程序18】 Prog.java * 題目:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定比賽名單。 * 有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單。 */
public class Prog {
public static void main(String[] args) {
String[] team1 = {"a","b","c"};
String[] team2 = {"x","y","z"};
for(int i=0; i<3; i++){
for(int j=0; j<3; j++){
if(i == 0 && j == 0)//a說他不和x比
continue;
else if(i == 2 && (j == 0 || j == 2))
continue;//c說他不和x,z比
else{
System.out.println(team1[i] + "<-->" + team2[j]);
}
}
}
}
}
【程序19】LingXing.java
題目:打印出如下圖案(菱形)
*
***
*****
*******
*****
***
*
1.程序分析:先把圖形分成兩部分來看待,前四行一個規律,后三行一個規律,利用雙重 for循環,第一層控制行,第二層控制列。

javapackage test50;
/** * @author VellBibi *【程序19】LingXing.java *題目:打印出如下圖案(菱形) * *** ***** ******* ***** *** * *1.程序分析:先把圖形分成兩部分來看待,前四行一個規律,后三行一個規律,利用雙重 for循環,第一層控制行,第二層控制列。 */
public class LingXing {
public static void print(int n){
int i = 0;
int j = 0;
for(i=0; i<n; i++){//前四行
for(j=0; j<n+i;j++){
if(j < n-i-1)
System.out.print(" ");
else
System.out.print("*");
}
System.out.println();
}
for(i=1; i<n; i++){//后三行
for(j=0; j<(2*n-i-1); j++){
if(j < i)
System.out.print(" ");
else
System.out.print("*");
}
System.out.println();
}
}
public static void main(String[] args) {
print(4);
}
}
【程序20】TestAdd2.java
題目:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。
1.程序分析:請抓住分子與分母的變化規律。

javapackage test50;
/** * @author VellBibi *【程序20】TestAdd2.java *題目:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。 *1.程序分析:請抓住分子與分母的變化規律。 */
public class TestAdd2 {
public static double add(int n){
double ans = 0;
double a = 2;
double b = 1;
double cup = 0;
for(int i=0; i<n; i++){
ans = ans + a/b;
cup = a;
a = a + b;
b = cup;
}
return ans;
}
public static void main(String[] args) {
System.out.println(add(20));
}
}