java 收集的一些算法 (2)

 /*【程序14】
    *题目:输入某年某月某日,判断这一天是这一年的第几天?

   */

   import java.util.*;

   public class Test14
   {
     public static void main(String[] args)
     {
       int count=0;
       Scanner in=new Scanner(System.in);
       System.out.print("请输入年:");
       int year=in.nextInt();
       System.out.print("请输入月:");
       int month=in.nextInt();
       System.out.print("请输入日:");
       int day=in.nextInt();
       switch(month)
       {
         case 12: count += 30;
         case 11: count += 31;
         case 10: count += 30;
         case 9: count += 31;
         case 8: count += 30;
         case 7: count += 31;
         case 6: count += 31;
         case 5: count += 30;
         case 4: count += 31;
         case 3: count += 28;
         case 2: count += 31;
         case 1: count += 0;
       }
       count += day;
       if (year%4==0&&year%100!=0&&month>=3)
       {
          count += 1;
       }
       System.out.print(year+"-"+month+"-"+day+"是一年中的第"+count+"天");
     }
   }

   /*【程序15】
    *题目:输入三个整数x,y,z,请把这三个数由小到大输出。

   */

   import java.util.*;

   public class Test15
   {

    public static void  main(String[] args)
     {
    
     Scanner in = new Scanner(System.in);
     System.out.print("\n请输入第一个数:");
     int x = in.nextInt();
     System.out.print("\n请输入第二个数:");
     int y = in.nextInt();
     System.out.print("\n请输入第三个数:");
     int z = in.nextInt();
    
     if(x>=y && x>=z)
     {
      System.out.print(x);
      if(y>=z)
      {
       System.out.print(y);
       System.out.print(z);
      }
      else if(z>=y)
      {
       System.out.print(z);
       System.out.print(y);
      }
     }
     else if(y>=x && y>=z)
     {
      System.out.print(y);
      if(x>=z)
      {
       System.out.print(x);
       System.out.print(z);
      }
      else if(z>=x){
       System.out.print(z);
       System.out.print(x);
      }
     }
     else if(z>=x && z>=y)
     {
      System.out.print(z);
      if(x>=y)
      {
       System.out.print(x);
       System.out.print(y);
      }
      else if(y>=x)
      {
       System.out.print(y);
       System.out.print(x);
      }
     }
    }
   }

   /*【程序16】
    *题目:输出9*9口诀。
    *1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

    */

   

   public class Test16
   {
       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+"="+i*j+"\t");       
            }
            System.out.println();
          }
       }
   }
   /*【程序17】
    *题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩
    *下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时见只  剩下一个桃子了。求第一天共摘了多少。
    *1.程序分析:采取逆向思维的方法,从后往前推断。

   */

   

   public class Test17
   {
      public static void main(String[] args)
      {
         int num=1;
         for(int i=1;i<10;i++)
         {
            num=(num+1)*2;
         }
         System.out.println("第一天共摘了"+num+"个苹果");
      }
   }
   /*题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向
   队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。*/

    public class Test18
   {
      public static void main(String[] args)
      {
         char[] arr1={'a','b','c'};
         char[] arr2={'x','y','z'}; 
         for(int i=0;i<arr1.length;i++)
          {
             for(int j=0;j<arr2.length;j++)
             {
               if((arr1[i]=='a'&&arr2[j]=='x')||(arr1[i]=='c'&&arr2[j]=='x')||(arr1[i]=='c'&&arr2[j]=='z'))
                {
                   continue;
                }
               System.out.println(arr1[i] + " vs " + arr2[j]);
             }
          }  
      }
   }
    /*【程序19】
    题目:打印出如下图案(菱形)
        *
       ***
     ******
    ********
     ******
      ***
       *
    1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制
    行,第二层控制列。 */

    public class Test19
    {
       public static void main(String[] args)
       {
          //上半部分
          for(int i=0;i<4;i++)
            {
              for(int j=0;j<4-i;j++)
              {
                System.out.print(" ");
              }
              for(int j=0;j<i+1;j++)
              {
                System.out.print('*');
              }
              System.out.println();
            }
          //中部以及下半部分
            for(int i=0;i<3;i++)
            {
              for(int j=0;j<i;j++)
              {
                System.out.print(" ");
              }
              for(int j=0;j<5-(i+1);j++)
              {
                System.out.print('*');
              }
              System.out.println();
            }


       }
    }
    /*【程序20】
    题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
    1.程序分析:请抓住分子与分母的变化规律。 */

    public class Test20
    {
       public static void main(String[] args)
       {
          int f1=1;
          int f2=2;
          int sum=0;
          int temp;
          for(int i=0;i<20;i++)
          {
             sum=sum+f2/f1;
             temp=f1;
             f1=f2;
             f2=f2+temp;
          }
          System.out.println(sum);
       }
    }

posted @ 2013-03-27 20:42  雪山一客  阅读(108)  评论(0编辑  收藏  举报