JAVA经典基础例题

 
1. 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
      小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

/**
 * 题目分析: 第一个月:1对
 *        第二个月:1对
 *        三:            2对
 *        四:            3对
 *        五:            5对
 *        .......
 *        兔子的规律为数列1,1,2,3,5,8,13,21....   
 *        f(n) = f(n-1) + f(n-2)  n>2
 * @作者: HK

 */
public class Example1 {
	public static void main(String[] args) {
		int n;
		Scanner input = new Scanner(System.in);
		System.out.println("请输入求第几个月的兔子总数:");
		n=input.nextInt();
		for (int i =1; i <= n; i++) {
			System.out.println(f(i));
		}
		System.out.println("兔子总数为:"+f(n));
		
	}
	public static int f(int x){
		if(x==1 || x==2){
			return 1;
		}
		else {
			return f(x-1)+f(x-2);
		}
	}

}

 


 2.题目:判断101-200之间有多少个素数,并输出所有素数。

/**
*程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
*/
public class Example2 {
	public static void main(String[] args) {
		int j,i;
		for ( i = 101; i <=200; i++) {
			for ( j = 2; j <Math.sqrt(i); j++) {
			   int n=i%j;
				if(n==0)
					break;
			}
			if(j>Math.sqrt(i))
				System.out.println(i+"是素数");
		}
	}

	
}

3.题目:打印出所有的   "水仙花数   ",所谓   "水仙花数   "是指一个三位数,其各位数字立方和等于该数本身。

/**
 *  例如:153是一个   "水仙花数   ",因为153=1的三次方+5的三次方+3的三次方。
 * @作者: HK
 */
public class Example3 {
	public static void main(String[] args) {
		int a; //表示个位
		int b; //表示十位
		int c; //表示百位
		for (int i = 100; i <=999; i++) {
			c=i/100;
			b=(i-c*100)/10;
			a=i%10;
			if(a*a*a + b*b*b +c*c*c ==i){
				System.out.println(i+"是水仙花数");
			}
		}
	}
}

4.题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5

import java.util.Scanner;
/**
 * 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
 * 分析:任何一个合数都可以写成几个质数相乘的形式。其中每个质数都是这个合数的因数,叫做这个合数的分解质因数。
 *     分解质因数只针对合数。
 */
public class Example4 {
    
         public   static   void   main(String[]   args){   
                   int N;
                   System.out.println("请输入N的值:");
                   Scanner input = new Scanner(System.in);
                   N=input.nextInt();
                   System.out.print(N+ "分解质因数: "+N+ "= ");  
                   int n=N,i=2;
                while(n>2){
                    
                     if(n%i==0){  
                    	 if(n/i==1){
                    		 System.out.print(i); 
                    	 }else{
                         System.out.print(i+ "* ");
                    	 }
                         n=n/i;        
                     } else {
						i++;
					}       
                 }
         }
}

5.题目:输入两个正整数m和n,求其最大公约数和最小公倍数。


import java.util.Scanner;

/**
 * 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
 * 
 * 分析:求最大公约数可以用辗转相除法
 * 	   最小公倍数为:m*n/最大公约数
 * @作者: HK
 */
public class Example6 {
	
	
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入两个正整数数值:");
		int a=input.nextInt();
		int b=input.nextInt();
		int m=a,n=b;
		int y =gys(m, n);
		System.out.println("最大公约数为:"+y);
		System.out.println("最小公倍数为:"+m*n/y);
	}

	//方法一
	public static int gys(int m,int n){
		int c = 0;
		if(m<n){
			int t=m;
			m=n;
			n=t;
		}
		while(n!=0){
			if (n==1) {
				return 1;		
			}
			else{
				c=m%n;
				m=n;
				n=c;
			}
		}
		return m;
	}
	

	//方法二
//	public static int gys(int m,int n){
//		while(true){
//			if((m = m%n )==0)
//			return n;
//			if((n = n%m)==0 )
//				return m;
//		}
//	}
	
	
	
}

6.题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。


import java.util.Scanner;

/**
 *  题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
 * @作者: HK
 */
public class Example7 {
	public static void main(String[] args) {
		int zimu=0;
		int kongge = 0;
		int number = 0;
		int other = 0;
		System.out.println("请输入一行字符:");
		String input = new Scanner(System.in).nextLine();
		char[] array = input.toCharArray();
		for (int i = 0; i < array.length; i++) {
			if( (array[i]>='a' && array[i]<='z') || (array[i]>='A' && array[i]<='Z' ) )
				zimu++;
			
			else if(array[i]==' ')
				kongge++;
			else if(array[i]>='0' && array[i]<='9')
				number++;
			else {
				other++;
			}
			
					
		}
		
		System.out.println("字母个数:"+zimu +"空格个数:"+kongge +"数字个数:"+number +"其他:"+other);
	}
}

7.题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。


import java.util.Scanner;

/**
 * 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
 * 例如: 2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
 * @作者: HK
 */
public class Example8 {
	public static void main(String[] args) {
        //第一个整数为几个数,第二个是数值为m  例如: n=5 m=2
		System.out.println("请输入两个正整数:");
		Scanner input = new Scanner(System.in);
		int n = input.nextInt();
		int m = input.nextInt();
		int sum=0;
		int a=0;
		for(int j = 1;j<=n;j++){
			int s=0;
		 for (int i = 0; i<j; i++) { 
				a= (int) (m*(Math.pow(10,i)));	 
				s=s+a;		
			}
		 System.out.println(s);
		 sum=s+sum;	
		}
		System.out.println("和为:"+sum);
		}
	
}

8.题目:一个数如果恰好等于它的因子之和,这个数就称为   "完数   "。例如6=1+2+3.编程       找出1000以内的所有完数。


/**
 * 题目:一个数如果恰好等于它的因子之和,这个数就称为   "完数   "。例如6=1+2+3.编程       找出1000以内的所有完数。
 * 分析:求出每个数的因子,让他们相加的和与这个数作比较,如果相等就是完数。
 * @作者: HK
 */
public class Example9 {
	
	 public static void main(String[] args) {
		 
		for (int i = 2; i < 1000; i++) {
			int s=0;
			for (int j = 1; j < i; j++) {
				if(i%j==0){
					s+=j;
				}
			}
			
			if(s==i)
				System.out.print(i+"  ");
		}
		System.out.println();
	}
	

	 
//		  public   static   void   main(String[]   args){   
//		  int   s;   
//		  for(int   i=1;i <=1000;i++)   
//		  {   
//		  s=0;   
//		  for(int   j=1;j <i;j++)   
//		  if(i   %   j==0)   
//		  s=s+j;   
//		if(s==i)   
//		   System.out.print(i+ "   ");   
//		  }   
//		  System.out.println();   
//		  
//		  }   
//		 
}

9. 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?


/**
 * 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
 * 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去   掉不满足条件的排列
 * @作者: HK

 */
public class Example11 {
	public static void main(String[] args) {
		int t=0;
		for (int i = 1; i <= 4; i++) 
			for(int j=1;j<=4;j++)
				for(int k=1;k<=4;k++)
					if(i!=j && j!=k && k!=i){
					t+=1;
					System.out.println(i*100+j*10+k);
				}
			System.out.println("共有多少种排序:"+t);	
	}
}

10. 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?


/**
 *  题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
 * @作者: HK
 */
public class Example12 {

    public static void main(String[] args) {
       
        for(int i=1;i<100000;i++){
            if(Math.sqrt(i+100)%1==0 && Math.sqrt(i+100+168)%1==0){
                System.out.println("得到的数字是:"+i);
            }
        }

    }
	
	

}

11.题目:输出9*9口诀。


/**
 *  题目:输出9*9口诀。
 * @作者: HK
 */
public class Example13 {
	public static void main(String[] args) {
		System.out.println("倒序9*9:");
		for(int i=1; i<=9; i++){
			for(int j=i; j<=9; j++ )
				System.out.print(i+"*"+j+"="+i*j+"	");
		   System.out.println();
		}
		
		System.out.println("正序9*9:");
		for (int i = 1; i <= 9; i++) {
			for(int j = 1;j<=i;j++){
				System.out.print(j+"*"+i+"="+i*j+"	");
			}
			System.out.println();
			
		   
		}
		
		System.out.println();
		    int i=0;  
		    int j=0;  
		    for(i=1;i<=9;i++)  
		    {    for(j=i;j<=9;j++)  
		            System.out.print(i+"*"+j+"="+i*j+"	");  
		            System.out.println();  
		    }  
		 
		    System.out.println();
		 
		    for(i=1;i<=9;i++)  
		    {    for(j=1;j<=i;j++)  
		            System.out.print(i+"*"+j+"="+i*j+"	");  
		            System.out.println();  
		    }  
	}
}

12.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个   第二天早上又将剩下的桃子吃掉一半,又多吃了一个。  以后每天早上都吃了前一天剩下   的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 

package Example01;
/**
 * 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个   第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
 * 			以后每天早上都吃了前一天剩下   的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 
 * @作者: HK
 */
public class Example14 {
	public static void main(String[] args) {
		int n=10;
		int s=1;
		while(n>1){
			s=(s+1)*2;
			n--;
			System.out.println("第"+n+"天共有"+s+"桃子");
		}
		System.out.println(s);
	}
	
	
//	 static int total(int day){  
//         if(day == 10){  
//          return 1;  
//         }  
//         else{  
//          return (total(day+1)+1)*2;  
//         }  
//        }  
//public static void main(String[] args)  
//{  
//    System.out.println(total(1));  
//}  
}

13.题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。 有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单


/**
 *  题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。
 *  有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单
 * @作者: HK
 */
public class Example15 {
	 public static void main(String[]args){  
	        char i,j,k;   /*i是a的对手,j是b的对手,k是c的对手*/  
	        for(i='x';i<='z';i++)  
	        for(j='x';j<='z';j++){  
	            if(i!=j)  
	            for(k='x';k<='z';k++){  
	                if(i!=k && j!=k){  
	                    if(i!='x' && k!='x'&& k!='z')  
	                    System.out.println(" a   Vs   "+i+"\n"+
	                    		" b   Vs   "+j+"\n"+ "c   Vs	"   +k);  
	                }  
	            }  
	        }  
	    }  
}

14.题目:打印出如下图案(菱形)   
 


/**
 * 题目:打印出如下图案(菱形)   
	*   
	**   
	*****   
	*******   
	******   
	***   
	*   
 * @作者: HK
 */
public class Example16 {
	public static void main(String[] args) {
		for (int i = 1; i <= 4; i++) {
			for(int j=1; j<=2*i-1;j++)
				System.out.print("*");
		   System.out.println();
		}
		
		for (int i = 1; i <=3; i++) {
			for(int j=1; j<=7-2*i;j++)
				System.out.print("*");
			System.out.println();
		}
	}
}

15.打印三角和菱形


/**
 * 打印三角和菱形
 * @作者: HK

 */
public class Example17 {
	 public static void main(String [] args)  
	   {  
	       int i=0;  
	       int j=0;  
	       for(i=1;i<=4;i++)  
	       {   for(j=1;j<=2*i-1;j++)  
	               System.out.print("*");  
	            System.out.println("");      
	       }  
	       for(i=4;i>=1;i--)  
	       { for(j=1;j<=2*i-3;j++)  
	               System.out.print("*");  
	                System.out.println("");      
	       }  
	     
	 
	 for(i=1;i<=4;i++)  
     {  
         for(int k=1; k<=4-i;k++)  
           System.out.print(" ");  
         for(j=1;j<=2*i-1;j++)  
             System.out.print("*");  
         System.out.println("");      
     }  
     for(i=4;i>=1;i--)  
     {   
         for(int k=1; k<=5-i;k++)  
               System.out.print(" ");  
         for(j=1;j<=2*i-3;j++)  
             System.out.print("*");  
          System.out.println("");      
     }  
	   }
}

16. 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。


/**
 *  题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
 * @作者: HK

 */
public class Example18 {
	public static void main(String[] args) {
		double fenmu=1;
		double fenzi=2;
		double sum=0;
		System.out.print("sum=");
		for (int j = 0; j < 20; j++) {
			double temp;
			temp=fenzi;
			sum=sum+fenzi/fenmu;
			
			if(j==19){
				System.out.print(fenzi+"/"+fenmu);
				System.out.println();
			}else {
				System.out.print(fenzi+"/"+fenmu+"+ ");
			}
			fenzi=fenzi+fenmu;
			fenmu=temp;
		}
		System.out.println(sum);
	}
}

17.  题目:求1+2!+3!+...+20!的和。


/**
 *  题目:求1+2!+3!+...+20!的和。
 * @作者: HK

 */
public class Example19 {
	public static void main(String[] args) {
		long  sum=0;
		for (int i = 1; i <= 20; i++){
			long n=1;
			for (int j = 1; j <= i; j++) {
				n=n*j;
				
			}
			System.out.println(i+"!"+"="+n);
			sum+=n;
			
		}
		
		System.out.println(sum);
	

/*
 * 另一种方法
 */
	   
	       
	        long num =0;
	        for (int i = 1; i <=20; i++) {
	            num += getFactorial(i);
	        }

	        System.out.println(num);
	    }
	   public static long getFactorial(int n){
	        if (n ==1)
	            return 1;
	        return n*getFactorial(n-1);
	    }
}

18.题目:利用递归方法求5!。



import java.util.Scanner;

/**
 * 题目:利用递归方法求5!。
 * @作者: HK

 */
public class Example20 {
	public static void main(String[] args) {
		System.out.println("请输入一个递归数n:");
		int n = new Scanner(System.in).nextInt();
		Example20 trf =new Example20();
		long sum = trf.recursion(n);
		System.out.println(n+"!="+sum);
	}

	 public long recursion(int n) {  
		  long value = 0 ;  
		  if(n ==1 || n == 0) {  
		  value = 1;  
		  } else if(n > 1) {  
		  value = n * recursion(n-1);  
		  }  
		  return value;  
		}  
}

19. 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。  最后问第一个人,他说是10岁。请问第五个人多大?


public class Example21 {
	public static void main(String[] args) {
		int n=5;
		int age =Age(n);
		System.out.println(age);
	}
	public static int Age(int n){
		
		if(n==1)
		return 10;
		else {
			return Age(n-1)+2;
		}
	}
}

20.题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。



import java.util.Scanner;

/**
 * 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
 * @作者: HK

 */
public class Example22 {
	public static void main(String[] args) {
		System.out.println("请输入一个不多于5位的正整数:");
		int input = new Scanner(System.in).nextInt();
		int n=input;
		System.out.print(n+"的倒序为:");
		int i=0;
		while(n!=0){
		int	k=n%10;
			System.out.print(k);
			n=n/10;
			i++;
		}
		System.out.println();
		System.out.println(input+"是"+i+"位数");
}
}

21.题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。



import java.util.Scanner;

/**
 *   题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
 * @作者: HK
 */
public class Example23 {
	public static void main(String[] args) {
		System.out.println("请输入一个五位数的正整数:");
		int n = new Scanner(System.in).nextInt();
		int a=n%10;
		int b=n%100/10;
		int w=n/10000;
		int q=n/1000%10;
		//System.out.println(a+" "+b+"  "+q+" "+w);
		if(a==w && b==q){
			System.out.println(n+"是回文数");
		}else {
			System.out.println(n+"不是回文数");
		}
	}
}

22.矩阵转置


/**
 * 矩阵转置
 * @作者: HK

 */
public class Example24 {
	 public static void main(String [] args) {
	        int data [][] = new int [] [] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } } ;
	        System.out.println("----------------转置前------------------------") ;
	        print1(data) ;
	        reverse(data) ;
	        System.out.println("----------------转置后------------------------") ;
	        print1(data) ;
	    }
	    
	    // 将矩阵转置
	    public static void reverse(int temp [][]) {
	        for (int i = 0; i < temp.length; i++) {
	            for (int j = i; j < temp[i].length; j++) {
	                int k = temp[i][j] ;
	                temp[i][j] = temp[j][i] ;
	                temp[j][i] = k ;
	            }
	        }
	    }
	    
	    // 将矩阵输出
	    public static void print1(int temp [][]) {
	        for (int i = 0; i < temp.length; i++) {
	            for (int j = 0; j < temp[i].length; j++) {
	                System.out.print(temp[i][j] + "\t") ;
	            }
	            System.out.println() ;
	        }
	    }
}

23. 题目:对10个数进行排序。



import java.util.Scanner;

/**
 *  题目:对10个数进行排序。
 * @作者: HK

 */
public class Example25 {
	public static void main(String[] args) {
		System.out.println("请输入10个整数:");
		Scanner input = new Scanner(System.in);
		int[] array= new int[10];
		for (int i = 0; i < array.length; i++) {
			array[i]=input.nextInt();
		}
		
		for (int i = 0; i <= array.length-1; i++) {
			for (int j = 0; j < array.length-1; j++) {
				if(array[j]>array[j+1]){
					int temp = array[j];
					array[j]=array[j+1];
					array[j+1]=temp;		
				}
			}
		}
		System.out.println("排序后:");
		for (int i = 0; i < array.length; i++) {
			System.out.print(array[i]+" ");
		}
	}
}

24.任意数组转置


public class Example26 {
	public static void main(String[] args) {
		int [][] Test={{1,3,9,11},{22,26,7,10},{4,5,7,3}};
		int [][] Matrix = Transpose(Test,3,4);
		
		System.out.println("-------转置前---------") ;
        myPrint(Test);
        System.out.println("-------转置后---------") ;
        myPrint(Matrix);
		}
	
	public static int[][] Transpose(int[][] matrix,int x,int y){
		int [][] Matrix = new int [y][x];
		for (int i = 0; i < x; i++) {
			for (int j = 0; j < y; j++) {
				Matrix[j][i] = matrix[i][j];
			}
		}
		
		
		return Matrix;
		
	}
	
	
	
	
	
	public static void myPrint(int temp[][]){
		for (int i = 0; i < temp.length; i++) {
			for (int j = 0; j < temp[i].length; j++) {
				System.out.print(temp[i][j]+"\t");
			}
			System.out.println();
		}
		
	}
	
	}

猜你喜欢

转载自blog.csdn.net/qq_40595913/article/details/81512983
今日推荐