<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ply

    吞噬黑暗
    posts - 1, comments - 11, trackbacks - 0, articles - 13
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    JAVA經(jīng)典算法40題

    Posted on 2011-08-21 23:11 ply 閱讀(948) 評論(0)  編輯  收藏 所屬分類: 知識(shí)小串通
    1: JAVA經(jīng)典算法40題
      2: 【程序1】   題目:古典問題:有一對兔子,從出生后第3個(gè)月起每個(gè)月都生一對兔子,小兔子長到第四個(gè)月后每個(gè)月又生一對兔子,假如兔子都不死,問每個(gè)月的兔子總數(shù)為多少?  
      3: 1.程序分析:   兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,21....  
      4: public class exp2{
      5:  public static void main(String args[]){
      6:   int i=0;
      7:   for(i=1;i<=20;i++)
      8:    System.out.println(f(i));
      9:  }
     10:  public static int f(int x)
     11:  {
     12:   if(x==1 || x==2)
     13:    return 1;
     14:   else
     15:    return f(x-1)+f(x-2);
     16:  }
     17: }
     18: 或
     19: public class exp2{
     20:  public static void main(String args[]){
     21:   int i=0;
     22:   math mymath = new math();
     23:   for(i=1;i<=20;i++)
     24:    System.out.println(mymath.f(i));
     25:  }
     26:
     27: }
     28: class math
     29: {
     30:  public int f(int x)
     31:  {
     32:   if(x==1 || x==2)
     33:    return 1;
     34:   else
     35:    return f(x-1)+f(x-2);
     36:  }
     37: }
     38:
     39: 【程序2】   題目:判斷101-200之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)。  
     40: 1.程序分析:判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù)),如果能被整除,  
     41: 則表明此數(shù)不是素?cái)?shù),反之是素?cái)?shù)。  
     42: public class exp2{
     43:  public static void main(String args[]){
     44:   int i=0;
     45:   math mymath = new math();
     46:   for(i=2;i<=200;i++)
     47:    if(mymath.iszhishu(i)==true)
     48:    System.out.println(i);
     49:  }
     50: }
     51: class math
     52: {
     53:  public int f(int x)
     54:  {
     55:   if(x==1 || x==2)
     56:    return 1;
     57:   else
     58:    return f(x-1)+f(x-2);
     59:  }
     60:  public boolean iszhishu(int x)
     61:  {
     62:   for(int i=2;i<=x/2;i++)
     63:    if (x % 2==0 )
     64:     return false;
     65:   return true;
     66:  }
     67: }
     68:
     69: 【程序3】   題目:打印出所有的 "水仙花數(shù) ",所謂 "水仙花數(shù) "是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個(gè) "水仙花數(shù) ",因?yàn)?53=1的三次方+5的三次方+3的三次方。  
     70: 1.程序分析:利用for循環(huán)控制100-999個(gè)數(shù),每個(gè)數(shù)分解出個(gè)位,十位,百位。  
     71: public class exp2{
     72:  public static void main(String args[]){
     73:   int i=0;
     74:   math mymath = new math();
     75:   for(i=100;i<=999;i++)
     76:    if(mymath.shuixianhua(i)==true)
     77:    System.out.println(i);
     78:  }
     79: }
     80: class math
     81: {
     82:  public int f(int x)
     83:  {
     84:   if(x==1 || x==2)
     85:    return 1;
     86:   else
     87:    return f(x-1)+f(x-2);
     88:  }
     89:  public boolean iszhishu(int x)
     90:  {
     91:   for(int i=2;i<=x/2;i++)
     92:    if (x % 2==0 )
     93:     return false;
     94:   return true;
     95:  }
     96:  public boolean shuixianhua(int x)
     97:  {
     98:     int i=0,j=0,k=0;
     99:     i=x / 100;
    100:     j=(x % 100) /10;
    101:     k=x % 10;
    102:     if(x==i*i*i+j*j*j+k*k*k)
    103:      return true;
    104:     else
    105:      return false;
    106:    
    107:  }
    108: }
    109: 【程序4】   題目:將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5。  
    110: 程序分析:對n進(jìn)行分解質(zhì)因數(shù),應(yīng)先找到一個(gè)最小的質(zhì)數(shù)k,然后按下述步驟完成:  
    111: (1)如果這個(gè)質(zhì)數(shù)恰等于n,則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié)束,打印出即可。  
    112: (2)如果n <> k,但n能被k整除,則應(yīng)打印出k的值,并用n除以k的商,作為新的正整數(shù)你,重復(fù)執(zhí)行第一步。  
    113: (3)如果n不能被k整除,則用k+1作為k的值,重復(fù)執(zhí)行第一步。  
    114: public class exp2{
    115:  public exp2(){}
    116:     public void fengjie(int n){
    117:         for(int i=2;i<=n/2;i++){
    118:             if(n%i==0){
    119:                 System.out.print(i+"*");
    120:                 fengjie(n/i);
    121:                 }
    122:         }
    123:         System.out.print(n);
    124:         System.exit(0);///不能少這句,否則結(jié)果會(huì)出錯(cuò)
    125:         }
    126:         public static void main(String[] args){
    127:              String str="";
    128:              exp2 c=new exp2();
    129:              str=javax.swing.JOptionPane.showInputDialog("請輸入N的值(輸入exit退出):");
    130:              int N;
    131:              N=0;
    132:              try{
    133:                      N=Integer.parseInt(str);
    134:                      }catch(NumberFormatException e){
    135:                          e.printStackTrace();
    136:                          }
    137:             System.out.print(N+"分解質(zhì)因數(shù):"+N+"=");
    138:             c.fengjie(N);
    139:         }   
    140: }
    141: 【程序5】   題目:利用條件運(yùn)算符的嵌套來完成此題:學(xué)習(xí)成績> =90分的同學(xué)用A表示,60-89分之間的用B表示,60分以下的用C表示。  
    142: 1.程序分析:(a> b)?a:b這是條件運(yùn)算符的基本例子。  
    143: import javax.swing.*;
    144: public class ex5 {
    145:         public static void main(String[] args){
    146:              String str="";
    147:              str=JOptionPane.showInputDialog("請輸入N的值(輸入exit退出):");
    148:              int N;
    149:              N=0;
    150:              try{
    151:                 N=Integer.parseInt(str);
    152:               }
    153:              catch(NumberFormatException e){
    154:                 e.printStackTrace();
    155:                }
    156:              str=(N>90?"A":(N>60?"B":"C"));
    157:              System.out.println(str);
    158:         }   
    159: }
    160: 【程序6】   題目:輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。  
    161: 1.程序分析:利用輾除法。  
    162: 最大公約數(shù):
    163: public class CommonDivisor{
    164:     public static void main(String args[])
    165:     {
    166:         commonDivisor(24,32);
    167:     }
    168:     static int commonDivisor(int M, int N)
    169:     {
    170:         if(N<0||M<0)
    171:         {
    172:             System.out.println("ERROR!");
    173:             return -1;
    174:         }
    175:         if(N==0)
    176:         {
    177:             System.out.println("the biggest common divisor is :"+M);
    178:             return M;
    179:         }
    180:         return commonDivisor(N,M%N);
    181:     }
    182: }
    183: 最小公倍數(shù)和最大公約數(shù):
    184: import java.util.Scanner;
    185: public class CandC
    186: {
    187: //下面的方法是求出最大公約數(shù)
    188: public static int **(int m, int n)
    189: {
    190: while (true)
    191: {
    192: if ((m = m % n) == 0)
    193: return n;
    194: if ((n = n % m) == 0)
    195: return m;
    196: }
    197: }
    198: public static void main(String args[]) throws Exception
    199: {
    200: //取得輸入值
    201: //Scanner chin = new Scanner(System.in);
    202: //int a = chin.nextInt(), b = chin.nextInt();
    203: int a=23; int b=32;
    204: int c = **(a, b);
    205: System.out.println("最小公倍數(shù):" + a * b / c + "\n最大公約數(shù):" + c);
    206: }
    207: }
    208: 【程序7】   題目:輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù)。  
    209: 1.程序分析:利用while語句,條件為輸入的字符不為 '\n '.  
    210: import java.util.Scanner;
    211: public class ex7 {
    212:   public static void main(String args[])
    213:   {
    214:    System.out.println("請輸入字符串:");
    215:    Scanner scan=new Scanner(System.in);
    216:    String str=scan.next();
    217:    String E1="[\u4e00-\u9fa5]";
    218:    String E2="[a-zA-Z]";
    219:    int countH=0;
    220:    int countE=0;
    221:    char[] arrChar=str.toCharArray();
    222:    String[] arrStr=new String[arrChar.length];
    223:    for (int i=0;i<arrChar.length ;i++ )
    224:    {
    225:     arrStr[i]=String.valueOf(arrChar[i]);
    226:    }
    227:    for (String i: arrStr )
    228:    {
    229:     if (i.matches(E1))
    230:     {
    231:      countH++;
    232:     }
    233:     if (i.matches(E2))
    234:     {
    235:      countE++;
    236:     }
    237:    }
    238:    System.out.println("漢字的個(gè)數(shù)"+countH);
    239:    System.out.println("字母的個(gè)數(shù)"+countE);
    240:   }
    241:  }
    242: 【程序8】   題目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個(gè)數(shù)字。例如2+22+222+2222+22222(此時(shí)共有5個(gè)數(shù)相加),幾個(gè)數(shù)相加有鍵盤控制。  
    243: 1.程序分析:關(guān)鍵是計(jì)算出每一項(xiàng)的值。  
    244: import java.io.*;
    245: public class Sumloop {
    246:   public static void main(String[] args) throws IOException
    247:   {
    248:    int s=0;
    249:    String output="";
    250:    BufferedReader stadin = new BufferedReader(new InputStreamReader(System.in));
    251:    System.out.println("請輸入a的值");
    252:    String input =stadin.readLine();
    253:    for(int i =1;i<=Integer.parseInt(input);i++)
    254:    {
    255:     output+=input;
    256:     int a=Integer.parseInt(output);
    257:     s+=a;
    258:    }
    259:    System.out.println(s);
    260:   }
    261: }
    262: 另解:
    263: import java.io.*;
    264: public class Sumloop {
    265:   public static void main(String[] args) throws IOException
    266:   {
    267:    int s=0;
    268:    int n;
    269:    int t=0;
    270:    BufferedReader stadin = new BufferedReader(new InputStreamReader(System.in));
    271:    String input = stadin.readLine();
    272:    n=Integer.parseInt(input);
    273:    for(int i=1;i<=n;i++){
    274:     t=t*10+n;
    275:     s=s+t;
    276:     System.out.println(t);
    277:    }
    278:    System.out.println(s);
    279:   }
    280: }
    281: 【程序9】   題目:一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為 "完數(shù) "。例如6=1+2+3.編程   找出1000以內(nèi)的所有完數(shù)。  
    282: public class Wanshu {
    283:  public static void main(String[] args)
    284:  {
    285:   int s;
    286:   for(int i=1;i<=1000;i++)
    287:   {
    288:    s=0;
    289:    for(int j=1;j<i;j++)
    290:     if(i % j==0)
    291:      s=s+j;
    292:    if(s==i)
    293:     System.out.print(i+" ");
    294:   }
    295:   System.out.println();
    296:  }
    297: }
    298: 【程序10】 題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在   第10次落地時(shí),共經(jīng)過多少米?第10次反彈多高?  
    299: public class Ex10 {
    300:  public static void main(String[] args)
    301:  {
    302:   double s=0;
    303:   double t=100;
    304:   for(int i=1;i<=10;i++)
    305:   {
    306:          s+=t;
    307:          t=t/2;
    308:   }
    309:   System.out.println(s);
    310:   System.out.println(t);
    311:  
    312:  }
    313: }
    314: 【程序11】   題目:有1、2、3、4個(gè)數(shù)字,能組成多少個(gè)互不相同且無重復(fù)數(shù)字的三位數(shù)?都是多少?  
    315: 1.程序分析:可填在百位、十位、個(gè)位的數(shù)字都是1、2、3、4。組成所有的排列后再去   掉不滿足條件的排列。  
    316: public class Wanshu {
    317:  public static void main(String[] args)
    318:  {
    319:     int i=0;
    320:     int j=0;
    321:     int k=0;
    322:     int t=0;
    323:     for(i=1;i<=4;i++)
    324:      for(j=1;j<=4;j++)
    325:       for(k=1;k<=4;k++)
    326:        if(i!=j && j!=k && i!=k)
    327:        {t+=1;
    328:         System.out.println(i*100+j*10+k);
    329:  } 
    330:     System.out.println (t);
    331:     }
    332: }
    333: 【程序12】  題目:企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤提成。利潤(I)低于或等于10萬元時(shí),獎(jiǎng)金可提10%;利潤高于10萬元,低于20萬元時(shí),低于10萬元的部分按10%提成,高于10萬元的部分,可可提成7.5%;20萬到40萬之間時(shí),高于20萬元的部分,可提成5%;40萬到60萬之間時(shí)高于40萬元的部分,可提成3%;60萬到100萬之間時(shí),高于60萬元的部分,可提成1.5%,高于100萬元時(shí),超過100萬元的部分按1%提成,從鍵盤輸入當(dāng)月利潤I,求應(yīng)發(fā)放獎(jiǎng)金總數(shù)?  
    334: 1.程序分析:請利用數(shù)軸來分界,定位。注意定義時(shí)需把獎(jiǎng)金定義成長整型。  
    335: import java .util.*;
    336: public class test {
    337:  public static void main (String[]args){
    338:   double sum;//聲明要儲(chǔ)存的變量應(yīng)發(fā)的獎(jiǎng)金
    339:   Scanner input =new Scanner (System.in);//導(dǎo)入掃描器
    340:   System.out.print ("輸入當(dāng)月利潤");
    341:   double lirun=input .nextDouble();//從控制臺(tái)錄入利潤
    342:   if(lirun<=100000){
    343:    sum=lirun*0.1;
    344:   }else if (lirun<=200000){
    345:    sum=10000+lirun*0.075;
    346:   }else if (lirun<=400000){
    347:    sum=17500+lirun*0.05;
    348:   }else if (lirun<=600000){
    349:    sum=lirun*0.03;
    350:   }else if (lirun<=1000000){
    351:    sum=lirun*0.015;
    352:   } else{
    353:    sum=lirun*0.01;
    354:   }
    355:   System.out.println("應(yīng)發(fā)的獎(jiǎng)金是"+sum);
    356:   }
    357: }
    358: 后面其他情況的代碼可以由讀者自行完善.
    359:
    360: 【程序13】  
    361: 題目:一個(gè)整數(shù),它加上100后是一個(gè)完全平方數(shù),加上168又是一個(gè)完全平方數(shù),請問該數(shù)是多少?  
    362: 1.程序分析:在10萬以內(nèi)判斷,先將該數(shù)加上100后再開方,再將該數(shù)加上268后再開方,如果開方后的結(jié)果滿足如下條件,即是結(jié)果。請看具體分析:  
    363: public class test {
    364:  public static void main (String[]args){
    365:     long k=0;
    366:     for(k=1;k<=100000l;k++)
    367:      if(Math.floor(Math.sqrt(k+100))==Math.sqrt(k+100) && Math.floor(Math.sqrt(k+168))==Math.sqrt(k+168))
    368:       System.out.println(k);
    369:  }
    370: }
    371: 【程序14】 題目:輸入某年某月某日,判斷這一天是這一年的第幾天?  
    372: 1.程序分析:以3月5日為例,應(yīng)該先把前兩個(gè)月的加起來,然后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于3時(shí)需考慮多加一天。  
    373: import java.util.*;
    374: public class test {
    375:  public static void main (String[]args){
    376:   int day=0;
    377:   int month=0;
    378:   int year=0;
    379:   int sum=0;
    380:   int leap;  
    381:   System.out.print("請輸入年,月,日\n");  
    382:   Scanner input = new Scanner(System.in);
    383:   year=input.nextInt();
    384:   month=input.nextInt();
    385:   day=input.nextInt();
    386:   switch(month) /*先計(jì)算某月以前月份的總天數(shù)*/ 
    387:   {  
    388:   case 1:
    389:    sum=0;break;  
    390:   case 2:
    391:    sum=31;break;  
    392:   case 3:
    393:    sum=59;break;  
    394:   case 4:
    395:    sum=90;break;  
    396:   case 5:
    397:    sum=120;break;  
    398:   case 6:
    399:    sum=151;break;  
    400:   case 7:
    401:    sum=181;break;  
    402:   case 8:
    403:    sum=212;break;  
    404:   case 9:
    405:    sum=243;break;  
    406:   case 10:
    407:    sum=273;break;  
    408:   case 11:
    409:    sum=304;break;  
    410:   case 12:
    411:    sum=334;break;  
    412:   default:
    413:    System.out.println("data error");break;
    414:   }  
    415:   sum=sum+day; /*再加上某天的天數(shù)*/ 
    416:   if(year%400==0||(year%4==0&&year%100!=0))/*判斷是不是閏年*/ 
    417:    leap=1;  
    418:   else 
    419:    leap=0;  
    420:   if(leap==1 && month>2)/*如果是閏年且月份大于2,總天數(shù)應(yīng)該加一天*/ 
    421:    sum++;  
    422:   System.out.println("It is the the day:"+sum);
    423:   }
    424: }
    425: 【程序15】 題目:輸入三個(gè)整數(shù)x,y,z,請把這三個(gè)數(shù)由小到大輸出。  
    426: 1.程序分析:我們想辦法把最小的數(shù)放到x上,先將x與y進(jìn)行比較,如果x> y則將x與y的值進(jìn)行交換,然后再用x與z進(jìn)行比較,如果x> z則將x與z的值進(jìn)行交換,這樣能使x最小。  
    427: import java.util.*;
    428: public class test {
    429:  public static void main (String[]args){
    430:   int i=0;
    431:   int j=0;
    432:   int k=0;
    433:   int x=0;
    434:   System.out.print("請輸入三個(gè)數(shù)\n");  
    435:   Scanner input = new Scanner(System.in);
    436:   i=input.nextInt();
    437:   j=input.nextInt();
    438:   k=input.nextInt();
    439:         if(i>j)
    440:         {
    441:           x=i;
    442:           i=j;
    443:           j=x;
    444:         }
    445:         if(i>k)
    446:         {
    447:           x=i;
    448:           i=k;
    449:           k=x;
    450:         }
    451:         if(j>k)
    452:         {
    453:           x=j;
    454:           j=k;
    455:           k=x;
    456:         }
    457:   System.out.println(i+", "+j+", "+k);
    458:  }
    459: }
    460: 【程序16】 題目:輸出9*9口訣。  
    461: 1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。  
    462: public class jiujiu {
    463: public static void main(String[] args)
    464: {
    465:  int i=0;
    466:  int j=0;
    467:  for(i=1;i<=9;i++)
    468:  { for(j=1;j<=9;j++)
    469:    System.out.print(i+"*"+j+"="+i*j+"\t");
    470:          System.out.println();
    471:  }
    472: }
    473: }
    474: 不出現(xiàn)重復(fù)的乘積(下三角)
    475: public class jiujiu {
    476: public static void main(String[] args)
    477: {
    478:  int i=0;
    479:  int j=0;
    480:  for(i=1;i<=9;i++)
    481:  { for(j=1;j<=i;j++)
    482:    System.out.print(i+"*"+j+"="+i*j+"\t");
    483:          System.out.println();
    484:  }
    485: }
    486: }
    487: 上三角
    488: public class jiujiu {
    489: public static void main(String[] args)
    490: {
    491:  int i=0;
    492:  int j=0;
    493:  for(i=1;i<=9;i++)
    494:  { for(j=i;j<=9;j++)
    495:    System.out.print(i+"*"+j+"="+i*j+"\t");
    496:          System.out.println();
    497:  }
    498: }
    499: }
    500: 【程序17】   題目:猴子吃桃問題:猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不癮,又多吃了一個(gè)   第二天早上又將剩下的桃子吃掉一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩下   的一半零一個(gè)。到第10天早上想再吃時(shí),見只剩下一個(gè)桃子了。求第一天共摘了多少。  
    501: 1.程序分析:采取逆向思維的方法,從后往前推斷。  
    502: public class 猴子吃桃 {
    503:  static int total(int day){
    504:    if(day == 10){
    505:     return 1;
    506:    }
    507:    else{
    508:     return (total(day+1)+1)*2;
    509:    }
    510:   }
    511: public static void main(String[] args)
    512: {
    513:  System.out.println(total(1));
    514: }
    515: }
    516: 【程序18】   題目:兩個(gè)乒乓球隊(duì)進(jìn)行比賽,各出三人。甲隊(duì)為a,b,c三人,乙隊(duì)為x,y,z三人。已抽簽決定比賽名單。有人向隊(duì)員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出三隊(duì)賽手的名單。  
    517: 1.程序分析:判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù)),如果能被整除,   則表明此數(shù)不是素?cái)?shù),反之是素?cái)?shù)。  
    518: import java.util.ArrayList;
    519: public class pingpang {
    520:   String a,b,c;
    521:   public static void main(String[] args) {
    522:    String[] op = { "x", "y", "z" };
    523:    ArrayList<pingpang> arrayList=new ArrayList<pingpang>();
    524:    for (int i = 0; i < 3; i++)
    525:     for (int j = 0; j < 3; j++)
    526:      for (int k = 0; k < 3; k++) {
    527:       pingpang a=new pingpang(op[i],op[j],op[k]);
    528:       if(!a.a.equals(a.b)&&!a.b.equals(a.c)&&!a.a.equals("x")
    529:         &&!a.c.equals("x")&&!a.c.equals("z")){
    530:        arrayList.add(a);
    531:       }
    532:      }
    533:    for(Object a:arrayList){
    534:    System.out.println(a);
    535:    }
    536:   }
    537:   public pingpang(String a, String b, String c) {
    538:    super();
    539:    this.a = a;
    540:    this.b = b;
    541:    this.c = c;
    542:   }
    543:   @Override
    544:   public String toString() {
    545:    // TODO Auto-generated method stub
    546:    return "a的對手是"+a+","+"b的對手是"+b+","+"c的對手是"+c+"\n";
    547:   }
    548: }
    549: 【程序19】  題目:打印出如下圖案(菱形)  
    550: *  
    551: ***  
    552: ******  
    553: ********  
    554: ******  
    555: ***  
    556: *  
    557: 1.程序分析:先把圖形分成兩部分來看待,前四行一個(gè)規(guī)律,后三行一個(gè)規(guī)律,利用雙重   for循環(huán),第一層控制行,第二層控制列。  
    558: 三角形:
    559: public class StartG {
    560:    public static void main(String [] args)
    561:    {
    562:     int i=0;
    563:     int j=0;
    564:     for(i=1;i<=4;i++)
    565:     {   for(j=1;j<=2*i-1;j++)
    566:       System.out.print("*");
    567:          System.out.println("");   
    568:     }
    569:        for(i=4;i>=1;i--)
    570:        { for(j=1;j<=2*i-3;j++)
    571:             System.out.print("*");
    572:           System.out.println("");   
    573:        }
    574:    }
    575:  }
    576:
    577: 菱形:
    578: public class StartG {
    579:    public static void main(String [] args)
    580:    {
    581:     int i=0;
    582:     int j=0;
    583:     for(i=1;i<=4;i++)
    584:     {
    585:      for(int k=1; k<=4-i;k++)
    586:        System.out.print(" ");
    587:      for(j=1;j<=2*i-1;j++)
    588:       System.out.print("*");
    589:      System.out.println("");   
    590:     }
    591:        for(i=4;i>=1;i--)
    592:        {
    593:      for(int k=1; k<=5-i;k++)
    594:         System.out.print(" ");
    595:         for(j=1;j<=2*i-3;j++)
    596:             System.out.print("*");
    597:          System.out.println("");   
    598:        }
    599:    }
    600:  }
    601:
    602: 【程序20】   題目:有一分?jǐn)?shù)序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個(gè)數(shù)列的前20項(xiàng)之和。  
    603: 1.程序分析:請抓住分子與分母的變化規(guī)律。  
    604: public class test20 {
    605:  public static void main(String[] args) {
    606:   float fm = 1f;
    607:   float fz = 1f;
    608:   float temp;
    609:   float sum = 0f;
    610:   for (int i=0;i<20;i++){
    611:    temp = fm;
    612:    fm = fz;
    613:    fz = fz + temp;
    614:    sum += fz/fm;
    615:    //System.out.println(sum);
    616:   }
    617:   System.out.println(sum);
    618:  }
    619: }
    620: 【程序21】   題目:求1+2!+3!+...+20!的和  
    621: 1.程序分析:此程序只是把累加變成了累乘。  
    622: public class Ex21 {
    623:  static long sum = 0;
    624:  static long fac = 0;
    625:  public static void main(String[] args) {
    626:     long sum = 0;
    627:     long fac = 1;
    628:     for(int i=1; i<=10; i++) {
    629:      fac = fac * i;
    630:      sum += fac;
    631:     }
    632:     System.out.println(sum);
    633:  }
    634:  }
    635: 【程序22】   題目:利用遞歸方法求5!。  
    636: 1.程序分析:遞歸公式:fn=fn_1*4!  
    637: import java.util.Scanner;
    638: public class Ex22 {
    639: public static void main(String[] args) {
    640:    Scanner s = new Scanner(System.in);
    641:    int n = s.nextInt();
    642:    Ex22 tfr = new Ex22();
    643:    System.out.println(tfr.recursion(n));
    644:
    645: }
    646:
    647: public long recursion(int n) {
    648:    long value = 0 ;
    649:    if(n ==1 || n == 0) {
    650:     value = 1;
    651:    } else if(n > 1) {
    652:     value = n * recursion(n-1);
    653:    }
    654:    return value;
    655: }
    656:
    657: }
    658:
    659: 【程序23】   題目:有5個(gè)人坐在一起,問第五個(gè)人多少歲?他說比第4個(gè)人大2歲。問第4個(gè)人歲數(shù),他說比第3個(gè)人大2歲。問第三個(gè)人,又說比第2人大兩歲。問第2個(gè)人,說比第一個(gè)人大兩歲。最后問第一個(gè)人,他說是10歲。請問第五個(gè)人多大?  
    660: 1.程序分析:利用遞歸的方法,遞歸分為回推和遞推兩個(gè)階段。要想知道第五個(gè)人歲數(shù),需知道第四人的歲數(shù),依次類推,推到第一人(10歲),再往回推。  
    661: public class Ex23 {
    662:
    663:   static int getAge(int n){
    664:    if (n==1){
    665:     return 10;
    666:    }
    667:    return 2 + getAge(n-1);
    668:   }
    669:   public static void main(String[] args) {
    670:    System.out.println("第五個(gè)的年齡為:"+getAge(5));
    671:   }
    672:  }
    673: 【程序24】   題目:給一個(gè)不多于5位的正整數(shù),要求:一、求它是幾位數(shù),二、逆序打印出各位數(shù)字。  
    674: import java.util.Scanner;
    675: public class Ex24 {
    676: public static void main(String[] args) {
    677:    Ex24 tn = new Ex24();
    678:    Scanner s = new Scanner(System.in);
    679:    long a = s.nextLong();
    680:    if(a < 0 || a > 100000) {
    681:     System.out.println("Error Input, please run this program Again");
    682:     System.exit(0);
    683:    }
    684:     if(a >=0 && a <=9) {
    685:     System.out.println( a + "是一位數(shù)");
    686:     System.out.println("按逆序輸出是" + '\n' + a);
    687:    } else if(a >= 10 && a <= 99) {
    688:     System.out.println(a + "是二位數(shù)");
    689:     System.out.println("按逆序輸出是" );
    690:     tn.converse(a);
    691:    } else if(a >= 100 && a <= 999) {
    692:     System.out.println(a + "是三位數(shù)");
    693:     System.out.println("按逆序輸出是" );
    694:     tn.converse(a);
    695:    } else if(a >= 1000 && a <= 9999) {
    696:     System.out.println(a + "是四位數(shù)");
    697:     System.out.println("按逆序輸出是" );
    698:     tn.converse(a);
    699:    } else if(a >= 10000 && a <= 99999) {
    700:     System.out.println(a + "是五位數(shù)");
    701:     System.out.println("按逆序輸出是" );
    702:     tn.converse(a);
    703:    }
    704: }
    705: public void converse(long l) {
    706:    String s = Long.toString(l);
    707:    char[] ch = s.toCharArray();
    708:    for(int i=ch.length-1; i>=0; i--) {
    709:     System.out.print(ch[i]);
    710:    }
    711: }
    712: }
    713: 【程序25】   題目:一個(gè)5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個(gè)位與萬位相同,十位與千位相同。  
    714: import java.util.Scanner;
    715: public class Ex25 {
    716: static int[] a = new int[5];
    717: static int[] b = new int[5];
    718: public static void main(String[] args) {
    719:    boolean is =false;
    720:    Scanner s = new Scanner(System.in);
    721:    long l = s.nextLong();
    722:    if (l > 99999 || l < 10000) {
    723:     System.out.println("Input error, please input again!");
    724:     l = s.nextLong();
    725:    }
    726:    for (int i = 4; i >= 0; i--) {
    727:     a[i] = (int) (l / (long) Math.pow(10, i));
    728:     l =(l % ( long) Math.pow(10, i));
    729:    }
    730:    System.out.println();
    731:    for(int i=0,j=0; i<5; i++, j++) {
    732:      b[j] = a[i];
    733:    }
    734:    for(int i=0,j=4; i<5; i++, j--) {
    735:     if(a[i] != b[j]) {
    736:      is = false;
    737:      break;
    738:     } else {
    739:      is = true;
    740:     }
    741:    }
    742:    if(is == false) {
    743:     System.out.println("is not a Palindrom!");
    744:    } else if(is == true) {
    745:     System.out.println("is a Palindrom!");
    746:    }
    747: }
    748: }
    749: 【程序26】   題目:請輸入星期幾的第一個(gè)字母來判斷一下是星期幾,如果第一個(gè)字母一樣,則繼續(xù)   判斷第二個(gè)字母。  
    750: 1.程序分析:用情況語句比較好,如果第一個(gè)字母一樣,則判斷用情況語句或if語句判斷第二個(gè)字母。  
    751: import java.util.Scanner;
    752: public class Ex26 {
    753:  public static void main(String[] args){
    754:   //保存用戶輸入的第二個(gè)字母
    755:   char weekSecond;
    756:   //將Scanner類示例化為input對象,用于接收用戶輸入
    757:   Scanner input = new Scanner(System.in);
    758:   //開始提示并接收用戶控制臺(tái)輸入
    759:   System.out.print("請輸入星期值英文的第一個(gè)字母,我來幫您判斷是星期幾:");
    760:   String letter = input.next();
    761:   //判斷用戶控制臺(tái)輸入字符串長度是否是一個(gè)字母
    762:   if (letter.length() == 1){
    763:    //利用取第一個(gè)索引位的字符來實(shí)現(xiàn)讓Scanner接收char類型輸入
    764:    char weekFirst = letter.charAt(0);
    765:    switch (weekFirst){
    766:   case 'm':
    767:      //當(dāng)輸入小寫字母時(shí),利用switch結(jié)構(gòu)特性執(zhí)行下一個(gè)帶break語句的case分支,以實(shí)現(xiàn)忽略用戶控制臺(tái)輸入大小寫敏感的功能
    768:     case 'M':
    769:       System.out.println("星期一(Monday)");
    770:      break;
    771:      case 't':
    772:      //當(dāng)輸入小寫字母時(shí),利用switch結(jié)構(gòu)特性執(zhí)行下一個(gè)帶break語句的case分支,以實(shí)現(xiàn)忽略用戶控制臺(tái)輸入大小寫敏感的功能
    773:     case 'T':
    774:       System.out.print("由于星期二(Tuesday)與星期四(Thursday)均以字母T開頭,故需輸入第二個(gè)字母才能正確判斷:");
    775:      letter = input.next();
    776:      //判斷用戶控制臺(tái)輸入字符串長度是否是一個(gè)字母
    777:      if (letter.length() == 1){
    778:       //利用取第一個(gè)索引位的字符來實(shí)現(xiàn)讓Scanner接收char類型輸入
    779:       weekSecond = letter.charAt(0);
    780:       //利用或(||)運(yùn)算符來實(shí)現(xiàn)忽略用戶控制臺(tái)輸入大小寫敏感的功能
    781:       if (weekSecond == 'U' || weekSecond == 'u'){
    782:        System.out.println("星期二(Tuesday)");
    783:        break;
    784:       //利用或(||)運(yùn)算符來實(shí)現(xiàn)忽略用戶控制臺(tái)輸入大小寫敏感的功能
    785:       } else if (weekSecond == 'H' || weekSecond == 'h'){
    786:        System.out.println("星期四(Thursday)");
    787:        break;
    788:       //控制臺(tái)錯(cuò)誤提示
    789:       } else{
    790:        System.out.println("輸入錯(cuò)誤,不能識(shí)別的星期值第二個(gè)字母,程序結(jié)束!");
    791:        break;
    792:       }
    793:      } else {
    794:       //控制臺(tái)錯(cuò)誤提示
    795:       System.out.println("輸入錯(cuò)誤,只能輸入一個(gè)字母,程序結(jié)束!");
    796:       break;
    797:      }
    798:     case 'w':
    799:      //當(dāng)輸入小寫字母時(shí),利用switch結(jié)構(gòu)特性執(zhí)行下一個(gè)帶break語句的case分支,以實(shí)現(xiàn)忽略用戶控制臺(tái)輸入大小寫敏感的功能
    800:     case 'W':
    801:      System.out.println("星期三(Wednesday)");
    802:      break;
    803:     case 'f':
    804:      //當(dāng)輸入小寫字母時(shí),利用switch結(jié)構(gòu)特性執(zhí)行下一個(gè)帶break語句的case分支,以實(shí)現(xiàn)忽略用戶控制臺(tái)輸入大小寫敏感的功能
    805:     case 'F':
    806:      System.out.println("星期五(Friday)");
    807:      break;
    808:     case 's':
    809:      //當(dāng)輸入小寫字母時(shí),利用switch結(jié)構(gòu)特性執(zhí)行下一個(gè)帶break語句的case分支,以實(shí)現(xiàn)忽略用戶控制臺(tái)輸入大小寫敏感的功能
    810:     case 'S':
    811:      System.out.print("由于星期六(Saturday)與星期日(Sunday)均以字母S開頭,故需輸入第二個(gè)字母才能正確判斷:");
    812:      letter = input.next();
    813:      //判斷用戶控制臺(tái)輸入字符串長度是否是一個(gè)字母
    814:      if (letter.length() == 1){
    815:       //利用取第一個(gè)索引位的字符來實(shí)現(xiàn)讓Scanner接收char類型輸入
    816:       weekSecond = letter.charAt(0);
    817:       //利用或(||)運(yùn)算符來實(shí)現(xiàn)忽略用戶控制臺(tái)輸入大小寫敏感的功能
    818:       if (weekSecond == 'A' || weekSecond == 'a'){
    819:        System.out.println("星期六(Saturday)");
    820:        break;
    821:       //利用或(||)運(yùn)算符來實(shí)現(xiàn)忽略用戶控制臺(tái)輸入大小寫敏感的功能
    822:       } else if (weekSecond == 'U' || weekSecond == 'u'){
    823:        System.out.println("星期日(Sunday)");
    824:        break;
    825:       //控制臺(tái)錯(cuò)誤提示
    826:       } else{
    827:        System.out.println("輸入錯(cuò)誤,不能識(shí)別的星期值第二個(gè)字母,程序結(jié)束!");
    828:        break;
    829:       }
    830:      } else{
    831:       //控制臺(tái)錯(cuò)誤提示
    832:       System.out.println("輸入錯(cuò)誤,只能輸入一個(gè)字母,程序結(jié)束!");
    833:       break;
    834:      }
    835:     default:
    836:      //控制臺(tái)錯(cuò)誤提示
    837:      System.out.println("輸入錯(cuò)誤,不能識(shí)別的星期值第一個(gè)字母,程序結(jié)束!");
    838:      break;
    839:    }
    840:   } else{
    841:    //控制臺(tái)錯(cuò)誤提示
    842:    System.out.println("輸入錯(cuò)誤,只能輸入一個(gè)字母,程序結(jié)束!");
    843:   }
    844:  }
    845: }
    846:
    847: 【程序27】   題目:求100之內(nèi)的素?cái)?shù)  
    848: public class Ex27 {
    849:  public static void main(String args[])
    850:  {
    851:   int sum,i;
    852:   for(sum=2;sum<=100;sum++)
    853:   {
    854:    for(i=2;i<=sum/2;i++)
    855:    {
    856:     if(sum%i==0)
    857:      break;
    858:    }
    859:    if(i>sum/2)
    860:     System.out.println(sum+"是素?cái)?shù)");
    861:   }
    862:  }
    863: }
    864: 【程序28】   題目:對10個(gè)數(shù)進(jìn)行排序  
    865: 1.程序分析:可以利用選擇法,即從后9個(gè)比較過程中,選擇一個(gè)最小的與第一個(gè)元素交換,   下次類推,即用第二個(gè)元素與后8個(gè)進(jìn)行比較,并進(jìn)行交換。  
    866: import java.util.Arrays;
    867: import java.util.Random;
    868: import java.util.Scanner;
    869: public class Ex28 {
    870:  public static void main(String[] args) {
    871:   int arr[] = new int[11];
    872:   Random r=new Random();
    873:   for(int i=0;i<10;i++){
    874:    arr[i]=r.nextInt(100)+1;//得到10個(gè)100以內(nèi)的整數(shù)
    875:   }
    876:   Arrays.sort(arr);
    877:   for(int i=0;i<arr.length;i++){
    878:    System.out.print(arr[i]+"\t");
    879:   }
    880:   System.out.print("\nPlease Input a int number: ");
    881:   Scanner sc=new Scanner(System.in);
    882:   arr[10]=sc.nextInt();//輸入一個(gè)int值
    883:   Arrays.sort(arr);
    884:   for(int i=0;i<arr.length;i++){
    885:    System.out.print(arr[i]+"\t");
    886:   }
    887:  }
    888: }
    889: 【程序29】   題目:求一個(gè)3*3矩陣對角線元素之和  
    890: 1.程序分析:利用雙重for循環(huán)控制輸入二維數(shù)組,再將a[i][i]累加后輸出。  
    891: public class Ex29 {
    892:  public static void main(String[] args){
    893:  double sum=0;
    894:  int array[][]={{1,2,3},{4,5, 6},{7,7,8}};
    895:  for(int i=0;i<3;i++)
    896:     for(int j=0;j<3;j++){
    897:        if(i==j)
    898:          sum=sum + array[i][j];
    899:     }
    900:  System.out.println( sum); 
    901:  }
    902: }
    903: 【程序30】   題目:有一個(gè)已經(jīng)排好序的數(shù)組?,F(xiàn)輸入一個(gè)數(shù),要求按原來的規(guī)律將它插入數(shù)組中。  
    904: 1.   程序分析:首先判斷此數(shù)是否大于最后一個(gè)數(shù),然后再考慮插入中間的數(shù)的情況,插入后此元素之后的數(shù),依次后移一個(gè)位置。  
    905: import java.util.Random;
    906: public class ArraySort {
    907:   public static void main(String[] args)
    908:   {  int temp=0;
    909:    int myarr[] = new int[12];
    910:    Random r=new Random();
    911:    for(int i=1;i<=10;i++)
    912:   myarr[i]=r.nextInt(1000);
    913:    for (int k=1;k<=10;k++)
    914:    System.out.print(myarr[k]+",");
    915:    for(int i=1;i<=9;i++)
    916:     for(int k=i+1;k<=10;k++)
    917:      if(myarr[i]>myarr[k])
    918:      {
    919:       temp=myarr[i];
    920:       myarr[i]=myarr[k];
    921:       myarr[k]=temp;
    922:      }
    923:       System.out.println("");
    924:    for (int k=1;k<=10;k++)
    925:     System.out.print(myarr[k]+",");
    926:  
    927:     myarr[11]=r.nextInt(1000);
    928:     for(int k=1;k<=10;k++)
    929:      if(myarr[k]>myarr[11])
    930:      {
    931:       temp=myarr[11];
    932:       for(int j=11;j>=k+1;j--)
    933:        myarr[j]=myarr[j-1];
    934:       myarr[k]=temp;
    935:      }
    936:       System.out.println("");  
    937:     for (int k=1;k<=11;k++)
    938:      System.out.print(myarr[k]+",");
    939:   }
    940: }
    941:
    942: 【程序31】   題目:將一個(gè)數(shù)組逆序輸出。  
    943: 程序分析:用第一個(gè)與最后一個(gè)交換。  
    944: 其實(shí),用循環(huán)控制變量更簡單:
    945:     for(int k=11;k>=1;k--)
    946:      System.out.print(myarr[k]+",");
    947:
    948: 【程序32】   題目:取一個(gè)整數(shù)a從右端開始的4~7位。  
    949: 程序分析:可以這樣考慮:  
    950: (1)先使a右移4位。  
    951: (2)設(shè)置一個(gè)低4位全為1,其余全為0的數(shù)。可用~(~0 < <4)  
    952: (3)將上面二者進(jìn)行&運(yùn)算。 
    953:
    954: public class Ex32 {
    955:   public static void main(String[] args)
    956:   {
    957:  int a=0;
    958:  long b=18745678;
    959:  a=(int) Math.floor(b % Math.pow(10,7)/Math.pow(10, 3));
    960:  System.out.println(a);
    961:   }
    962:   }
    963: 【程序33】  
    964: 題目:打印出楊輝三角形(要求打印出10行如下圖)  
    965: 1.程序分析:  
    966: 1  
    967: 1   1  
    968: 1   2   1  
    969: 1   3   3   1  
    970: 1   4   6   4   1  
    971: 1   5   10   10   5   1  
    972: public class Ex33 {
    973:  public static void main(String args[]){
    974:      int i,j;
    975:      int a[][];
    976:      a=new int[8][8];
    977:     for(i=0;i<8;i++){
    978:        a[i][i]=1;
    979:        a[i][0]=1;
    980:       }
    981:     for(i=2;i<8;i++){
    982:      for(j=1;j<=i-1;j++){
    983:     a[i][j]=a[i-1][j-1]+a[i-1][j];
    984:      }
    985:     } 
    986:     for(i=0;i<8;i++){
    987:     for(j=0;j<i;j++){ 
    988:      System.out.printf("  "+a[i][j]);
    989:      }
    990:     System.out.println();
    991:     }
    992:    }
    993: }
    994:
    995: 【程序34】   題目:輸入3個(gè)數(shù)a,b,c,按大小順序輸出。  
    996: 1.程序分析:利用指針方法。  
    997: public class Ex34 {
    998:  public static void main(String[] args)
    999:  {
    1000:  int []arrays = {800,56,500};
    1001:  for(int i=arrays.length;--i>=0;)
    1002:  {
    1003:  for(int j=0;j<i;j++)
    1004:  {
    1005:  if(arrays[j]>arrays[j+1])
    1006:  {
    1007:  int temp=arrays[j];
    1008:  arrays[j]=arrays[j+1];
    1009:  arrays[j+1]=temp;
    1010:  }
    1011:  }
    1012:  }
    1013:  for(int n=0;n<arrays.length;n++)
    1014:  System.out.println(arrays[n]);
    1015:  }
    1016:
    1017: }
    1018: 【程序35】   題目:輸入數(shù)組,最大的與第一個(gè)元素交換,最小的與最后一個(gè)元素交換,輸出數(shù)組。  
    1019: import java.util.*;
    1020: public class Ex35 {
    1021: public static void main(String[] args) {
    1022: int i, min, max, n, temp1, temp2;
    1023: int a[];
    1024: System.out.println("輸入數(shù)組的長度:");
    1025: Scanner keyboard = new Scanner(System.in);
    1026: n = keyboard.nextInt();
    1027: a = new int[n];
    1028: for (i = 0; i < n; i++) {
    1029: System.out.print("輸入第" + (i + 1) + "個(gè)數(shù)據(jù)");
    1030: a[i] = keyboard.nextInt();
    1031: }
    1032: //以上是輸入整個(gè)數(shù)組
    1033: max = 0;
    1034: min = 0;
    1035: //設(shè)置兩個(gè)標(biāo)志,開始都指向第一個(gè)數(shù)
    1036: for (i = 1; i < n; i++) {
    1037: if (a[i] > a[max])
    1038: max = i; //遍歷數(shù)組,如果大于a[max],就把他的數(shù)組下標(biāo)賦給max
    1039: if (a[i] < a[min])
    1040: min = i; //同上,如果小于a[min],就把他的數(shù)組下標(biāo)賦給min
    1041: }
    1042: //以上for循環(huán)找到最大值和最小值,max是最大值的下標(biāo),min是最小值的下標(biāo)
    1043: temp1 = a[0];
    1044: temp2 = a[min]; //這兩個(gè)temp只是為了在交換時(shí)使用
    1045:
    1046: a[0] = a[max];
    1047: a[max] = temp1; //首先交換a[0]和最大值a[max]
    1048:
    1049: if (min != 0) { //如果最小值不是a[0],執(zhí)行下面
    1050: a[min] = a[n - 1];
    1051: a[n - 1] = temp2; //交換a[min]和a[n-1]
    1052: } else {       //如果最小值是a[0],執(zhí)行下面
    1053: a[max] = a[n - 1];
    1054: a[n - 1] = temp1;
    1055: }
    1056:
    1057: for (i = 0; i < n; i++) { //輸出數(shù)組
    1058: System.out.print(a[i] + " ");
    1059: }
    1060: }
    1061: }
    1062: 【程序36】   題目:有n個(gè)整數(shù),使其前面各數(shù)順序向后移m個(gè)位置,最后m個(gè)數(shù)變成最前面的m個(gè)數(shù) 
    1063:
    1064:
    1065: 【程序37】  
    1066: 題目:有n個(gè)人圍成一圈,順序排號。從第一個(gè)人開始報(bào)數(shù)(從1到3報(bào)數(shù)),凡報(bào)到3的人退出圈子,問最后留下的是原來第幾號的那位。  
    1067: import java.util.Scanner;
    1068: public class Ex37 {
    1069:  public static void main(String[] args) {
    1070:      Scanner s = new Scanner(System.in);
    1071:      int n = s.nextInt();
    1072:      boolean[] arr = new boolean[n];
    1073:      for(int i=0; i<arr.length; i++) {
    1074:       arr[i] = true;//下標(biāo)為TRUE時(shí)說明還在圈里
    1075:      }
    1076:      int leftCount = n;
    1077:      int countNum = 0;
    1078:      int index = 0;
    1079:      while(leftCount > 1) {
    1080:       if(arr[index] == true) {//當(dāng)在圈里時(shí)
    1081:        countNum ++; //報(bào)數(shù)遞加
    1082:        if(countNum == 3) {//報(bào)道3時(shí)
    1083:         countNum =0;//從零開始繼續(xù)報(bào)數(shù)
    1084:         arr[index] = false;//此人退出圈子
    1085:         leftCount --;//剩余人數(shù)減一
    1086:        }
    1087:       }
    1088:       index ++;//每報(bào)一次數(shù),下標(biāo)加一
    1089:       if(index == n) {//是循環(huán)數(shù)數(shù),當(dāng)下標(biāo)大于n時(shí),說明已經(jīng)數(shù)了一圈,
    1090:        index = 0;//將下標(biāo)設(shè)為零重新開始。
    1091:       }
    1092:      }
    1093:      for(int i=0; i<n; i++) {
    1094:       if(arr[i] == true) {
    1095:        System.out.println(i);
    1096:       }
    1097:      }
    1098:      }
    1099: }
    1100:
    1101: 【程序38】  
    1102: 題目:寫一個(gè)函數(shù),求一個(gè)字符串的長度,在main函數(shù)中輸入字符串,并輸出其長度。  
    1103: import java.util.Scanner;
    1104: public class Ex38 {
    1105: public static void main(String [] args)
    1106: {
    1107:  Scanner s = new Scanner(System.in);
    1108:  System.out.println("請輸入一個(gè)字符串");
    1109:  String mys= s.next();
    1110:  System.out.println(str_len(mys));
    1111: }
    1112:   public static int str_len(String x)
    1113:   {
    1114:    return x.length();
    1115:   }
    1116: }
    1117:
    1118:
    1119:  
    1120: 題目:編寫一個(gè)函數(shù),輸入n為偶數(shù)時(shí),調(diào)用函數(shù)求1/2+1/4+...+1/n,當(dāng)輸入n為奇數(shù)時(shí),調(diào)用函數(shù)1/1+1/3+...+1/n
    1121:
    1122: 【程序39】 
    1123: 題目:字符串排序。 
    1124:
    1125: import java.util.*;  
    1126: public class test{
    1127:  public   static   void   main(String[]   args)
    1128:  {  
    1129:      ArrayList<String> list=new ArrayList<String>();  
    1130:      list.add("010101");  
    1131:      list.add("010003");  
    1132:     list.add("010201");  
    1133:     Collections.sort(list);  
    1134:   for(int   i=0;i<list.size();i++){  
    1135:   System.out.println(list.get(i));  
    1136:   }  
    1137:   }  
    1138:   }
    1139:
    1140: 【程序40】  
    1141: 題目:海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據(jù)分為五份,多了一個(gè),這只猴子把多的一個(gè)扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一個(gè),它同樣把多的一個(gè)扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的,問海灘上原來最少有多少個(gè)桃子? 
    1142:
    1143: public class Dg {
    1144: static int ts=0;//桃子總數(shù)
    1145: int fs=1;//記錄分的次數(shù)
    1146: static int hs=5;//猴子數(shù)...
    1147: int tsscope=5000;//桃子數(shù)的取值范圍.太大容易溢出.
    1148: public int fT(int t){
    1149: if(t==tsscope){
    1150: //當(dāng)桃子數(shù)到了最大的取值范圍時(shí)取消遞歸
    1151: System.out.println("結(jié)束");
    1152: return 0;
    1153: }
    1154: else{
    1155: if((t-1)%hs==0 && fs <=hs){
    1156: if(fs==hs)
    1157: {
    1158: System.out.println("桃子數(shù) = "+ts +" 時(shí)滿足分桃條件");
    1159: }
    1160:    fs+=1;
    1161:    return fT((t-1)/5*4);// 返回猴子拿走一份后的剩下的總數(shù)
    1162: }
    1163: else
    1164: {
    1165: //沒滿足條件
    1166: fs=1;//分的次數(shù)重置為1
    1167: return fT(ts+=1);//桃子數(shù)加+1
    1168: }
    1169: }
    1170: }
    1171: public static void main(String[] args) {
    1172: new Dg().fT(0);
    1173: }
    1174:
    1175: }
    主站蜘蛛池模板: 美国免费高清一级毛片| yellow视频免费看| 中文字幕不卡免费视频| aⅴ在线免费观看| 免费a级毛片大学生免费观看 | 国产成人免费a在线视频app| 中文字幕一精品亚洲无线一区| 91亚洲精品麻豆| 国产精品免费看久久久香蕉 | 成人亚洲综合天堂| 日木av无码专区亚洲av毛片| 激情婷婷成人亚洲综合| 久久久久久夜精品精品免费啦| 免费国产在线观看不卡| 久久久无码精品亚洲日韩京东传媒 | caoporn成人免费公开| 114一级毛片免费| 亚洲日韩激情无码一区| 亚洲成av人在线观看网站| 日韩精品人妻系列无码专区免费 | 久久久久亚洲精品天堂久久久久久 | 久草视频免费在线| 亚洲精品无码av人在线观看| 亚洲第一成年免费网站| 最近中文字幕完整版免费高清| 亚洲一级黄色视频| 亚洲欧美日韩中文二区| 精品无码无人网站免费视频 | 亚洲午夜理论片在线观看| 免费视频精品一区二区三区| vvvv99日韩精品亚洲| 亚洲粉嫩美白在线| 96免费精品视频在线观看| 亚洲一区无码中文字幕| 国产成人亚洲精品播放器下载| 性xxxxx免费视频播放| 亚洲嫩模在线观看| 韩日电影在线播放免费版| 亚洲精品麻豆av| 久久久久久亚洲精品无码| 91在线视频免费91|