Java50道基础编程题练习——仅供交流学习,考试复习使用

部分代码存在引用,此处进行归类汇总

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

public class Fibonacci {
	@SuppressWarnings("resource")
	public static void main(String[] args) {
		System.out.println("请输入生长了几月");
	int m = new Scanner(System.in).nextInt();
	System.out.println("第"+m+"个月有"+fibonacci(m)+"只兔子");
	}	
	
   public static  int fibonacci(int n) {
	   if(n==1||n==2) {
		   return 1;  
	   }else {
		   return fibonacci(n-1)+fibonacci(n-2);
	   }   
   }  	
 }

【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。
素数又叫质数,指除了1和它本身之外,再也没有整数能被它整除的数,即素数只有两个因子。

public class PrimeNum2 {
	    public static void main(String args[]) {
	    	int count = 0;
	    	for(int i = 100;i<201;i++) {
	    		boolean judge = true;
	    		
	    		for(int k =2;k<i;k++) {
	    		    if(i%k == 0) {
	    		    	judge = false;
	    		    	break;
	    		    }
	    		}
	    		if(judge) {
	    			++count;
	    			System.out.println(i+"是素数");
	    		}	    		
	    	}
	    	System.out.println("101-200间共有"+count+"个素数");
	    }
	}

【程序3】
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

public class NarcissisticNum3 {
	public static void main(String[] args) {
		for(int i=100;i<999;i++) {
			if(isNarcissisticNum(i)) {
				System.out.println("水仙花数为"+i);
			}
		}
	}
	public static boolean isNarcissisticNum(int j) {
		int a = 0;
		int b = 0;
		int c = 0;
		a = j/100;
		b = j%100/10;
		c = j%10;
			
		if(Math.pow(a, 3)+Math.pow(b, 3)+Math.pow(c, 3)==j) {
			return true;
		}else {
			return false;
		}		
	}		
}

【程序4】
题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。

public class Factorization4 {
	public static void main(String[] args) {
		@SuppressWarnings("resource")
		int a =new Scanner(System.in).nextInt();
		decompose(a);
		System.out.println();
	}

	public static int decompose(int num) {
		int tmp = num/2;
		for(int i=2;i <= tmp ;i++){
		    if(num%i == 0){
		        num = num/i;
		        System.out.println("质因数为:"+i);
		        i=1;
		        continue;
		    }
		}
		return tmp;
	}
}

【程序5】
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

public class Score5 {
	@SuppressWarnings("resource")
	public static void main(String[] args) {
		System.out.println("输入学生的成绩:");
		int score = new Scanner(System.in).nextInt();
		if(score>=90) {
			System.out.println("该同学的成绩为A");
		}else if(score>=60&&score<90) {
			System.out.println("该同学的成绩为B");
		}else if(score<60){
			System.out.println("同学的成绩为C");
		}	
	}
}

【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

public class Number6 {
    @SuppressWarnings("resource")
	public static void main(String[]args){
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入第一个整数:\n");
        int a = scan.nextInt();
        System.out.print("请输入第二个整数:\n");
        int b = scan.nextInt();
        Num(a,b);
    }
    
    public static void Num(int a,int b){
        int i = a;
        int j = b;
        int x =0,y =0;
        if(a < b){
            x = b;
            b = a;
            a = x;
        }
        while(b != 0){
            y = a % b;
            a = b;
            b = y;
        }
 
        int t = i * j / a;
        System.out.println(i+"和"+j+"的最大公约数为:"+ a);
        System.out.println(i+"和"+j+"的最小公倍数为:"+ t);  
    }
}

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

public class String7 {
    @SuppressWarnings("resource")
	public static void main(String[]args){
    	System.out.println("请输入一段字符串……");
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        System.out.println(str);
        char[] chars = str.toCharArray();
        int words = 0;
        int numbers = 0;
        int spaces = 0;
        int others = 0;
        for (int i = 0; i < chars.length; i++) {
            if ((chars[i] >= 'A') && (chars[i]) <= 'Z') {
                words++;
            } else if ((chars[i] >= 'a') && (chars[i]) <= 'z') {
                words++;
            } else if ((chars[i] >= '0') && (chars[i]) <= '9') {
                numbers++;
            } else if (chars[i] == ' ') {
                spaces++;
            } else {
                others++;
            }
        }
        System.out.println("您刚输入的字符串内英文字符有:" + words + "个。");
        System.out.println("数字字符有:" + numbers + "个。");
        System.out.println("空格字符有:" + spaces + "个。");
        System.out.println("其它字符有:" + others + "个。");
    }
}

【程序8】
题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),
几个数相加有键盘控制。

public class Count8 {
	@SuppressWarnings("resource")
	public static void main(String[] args) {
		System.out.println("请输入一个数字:");
		int a = new Scanner(System.in).nextInt();
		int sum = 0;
		for(int i=a;i<=Math.pow(10, a);i=i*10+a) {
			sum += i;
		}
		System.out.println(sum);
	}
}

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

public class PrefactNumber9 {
	public static void main(String[] args) {
		 int i=0;
		 int j=0;
		 int[] b = new int[100];
		    for(i=2; i<=1000; i++)
		    {
		       int s=0;
		       int k=0;
		        for(j=1; j<i; j++)
		        {
		            if(i%j==0)
		            {
		                s+=j;
		                b[k++]=j;
		            }
		        }
		        if(s==i)//注意这个if语句的位置一定在第二个循环外面,否则的话就会多一个24
		        {
		           System.out.println("完美数为"+i);
		            for(int a=0; a<k; a++)
		               System.out.println("因子为"+b[a]);
		            System.out.println();
		        }
		    }
		    return;
		}
	}

【程序10】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多
少米?第10次反弹多高?

public class ReboundHeight10 {
	public static void main(String[] args) {
		double heigh=50;
		double distance =100;
		for(int i=2;i<=10;i++) {
			distance = distance+heigh*2;
			heigh = heigh/2;
			
		}
		System.out.println("共经过"+distance+"米");
		System.out.println("第十次反弹的高度为"+heigh+"米");
	}
}

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

public class NumberSort11 {
	public static void main(String[] args) {
		 int[] arr = {1,2,3,4};
		 int count = 0;
		 for(int i:arr) {
			 for(int j:arr) {
				 for(int k:arr) {
					 if(i!=j&&j!=k&&k!=i) {
						int num = i*100+j*10+k;
						System.out.print(num+"\t");
						count++;
					 }
					 if(count==6) {
						 System.out.println();
						 count=0;
					 }
				 }
			 }
		 }	
	}
}

【程序12】
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

public class Profit12 {
	@SuppressWarnings("resource")
	public static void main(String[] args) {
		double profit = new Scanner(System.in).nextDouble();
		double bonus = 0;
		if(profit<=100000) {
			bonus = profit*0.1;
		}else if(profit>100000&&profit<=200000) {
			bonus = 10000+(profit-100000)*0.075;
		}else if(profit>200000&&profit<=400000) {
			bonus = 10000+7500+(profit-100000)*0.05;
		}else if(profit>400000&&profit<=600000) {
			bonus = 10000+7500+10000+(profit-100000)*0.03;
		}else if(profit>600000&&profit<=1000000) {
			bonus = 10000+7500+10000+6000+(profit-100000)*0.015;
		}else if(profit>1000000) {
			bonus = 10000+7500+10000+6000+6000+(profit-100000)*0.01;
		}
		System.out.println("应发奖金为:"+bonus);
	}
}

【程序13】
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

public class SquareNumber13 {
	public static void main(String[] args) {
	long i;
	long x;
	long y;
	for(i=1;i<100000;i++) {
		x=(long) Math.sqrt(i+100);
		y=(long) Math.sqrt(i+168);
		if(x*x==i+100&&y*y==i+168) {
			System.out.println(i);
		}
	}		
	}
}

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

public class DayYear14 {
	@SuppressWarnings("resource")
	public static void main(String[] args) {
		int year = new Scanner(System.in).nextInt();
		int month = new Scanner(System.in).nextInt();
		int day = new Scanner(System.in).nextInt();
		int num = 0;
		int[] nums = {31,60,91,121,152,182,213,244,274,305,335,366};
		if(month==1) {
			num = day;
		}else if(month==2){
			num = 31+day;
		}	
		else if((year%4==0&&year%100!=0) ||(year%400==0)){
			num = nums[month-2]+day;			
		}
		else {
			num = nums[month-2]+day-1;
		}
		System.out.println("这是一年的第"+num+"天");		
	}	
}

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

public class NumberCompare15 {	
	public static void main(String[] args){
	    int x=0,y=0,z=0;
	    Scanner sc=new Scanner(System.in);
	    x=sc.nextInt();
	    y=sc.nextInt();
	    z=sc.nextInt();
	    int j;
	    if(x>y){
	        j=y;
	        y=x;
	        x=j;
	    }
	    if(x>z){
	        j=z;
	        z=x;
	        x=j;
	    }
	    if(y>z){
	        j=z;
	        z=y;
	       y=j;
	    }
	    sc.close();
	    System.out.println(x+" "+y+" "+z);	
}
}

【程序16】
题目:输出9*9口诀。

public class MultiplicationTables16 {
	public static void main(String[] args) {
		for(int i=1;i<10;i++) {
			for(int j=1;j<i+1;j++) {
				System.out.print(j+"*"+i+"="+i*j+"\t");
			}
			System.out.println();
		}
	}
}

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

public class MonkeyPeach17 {  
	public static void main(String[]args){
		int sum = 1;
		for(int i=1;i<10;i++){
			sum=(sum+1)*2;
		}
		System.out.println("总共有"+sum+"个桃子");
	}
}

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

public class PingPong18{
	public static void main(String[] args) {
		char a,b,c;
		for(a = 'x'; a <= 'z'; a++) {
			for(b = 'x'; b <= 'z'; b++) {
				if(a != b) { 
					for(c = 'x'; c <= 'z'; c++) {
						if(a != c && b != c) {	  
							if(a != 'x' && c != 'x' && c != 'z') {  
								System.out.println("a和" + a + ",b和" + b + ",c和" + c + "进行比赛");
							}
						}
					}
				}
			}
		}
	}
}

【程序19】
题目:打印出9行9列的菱形

public class TrianglePrint19 {
	public static void main(String[] args) {
		int h=9,w=9;         	    
		    for(int i=0;i<(h+1)/2;i++){
		      for(int j=0;j<w/2-i;j++){
		       System.out.print(" ");
		      }
		      for(int k=1;k<(i+1)*2;k++){
		        System.out.print("*");
		      }
		      System.out.println();    
		    } 
		    
	    for(int i=1;i<=h/2;i++){
		      for(int j=1;j<=i;j++){
		        System.out.print(" ");
		      }
		      for(int k=1;k<=w-i*2;k++){
		        System.out.print("*");
		      }
		      System.out.println();
		    }   
   }
}

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

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

【程序21】
题目:求1+2!+3!+…+20!的和

public class StratumSum21 {
	public static void main(String[] args) {
		int sum = 0;
		for(int i=1;i<=20;i++) {
			sum +=f(i);
		}
		System.out.println(sum);		
	}
	
	public static int f(int n) {
		if (n==1) {
			return 1;
		}else {
			return n*f(n-1);
		}			
	}	
}

【程序22】
题目:利用递归方法求5!。

public class Stratum22 {
	public static void main(String[] args) {
		System.out.println(f(5));				
	}
	
	public static int f(int n) {
		if (n==1) {
			return 1;
		}else {
			return n*f(n-1);
		}
	}
}

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

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

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

public class Number24 {  
	@SuppressWarnings("resource")
	public static void main(String[]args){
		  Scanner sc = new Scanner(System.in);
	        System.out.println("请输入一个不多于5位的正整数:");
	        char s[] = sc.next().toCharArray();
	        System.out.println("你输入的数是"+s.length+"位数");
	        System.out.println("你输入的数逆序为:");
	        for(int i=s.length-1;i>=0;i--) {
	            System.out.print(s[i]);
	        }
    }
}

【程序25】
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

public class PalindromicNumber25 {
	@SuppressWarnings("resource")
	public static void main(String[] args) {
		int num = new Scanner(System.in).nextInt();
		int a = num/10000;
		int b = num%10000/1000;
		int c = num%100/10;
		int d = num%10;
		if(a==d&&b==c) {
			System.out.println("这个数是回文数");
		}else {
			System.out.println("这个数不是回文数");
		}
	}
}

【程序26】
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。

public class Weeks26 {
	@SuppressWarnings("resource")
	public static void main(String[] args) {
		System.out.println("请输入关于星期几的第一个字母:");
		Scanner sc=new Scanner(System.in);
		char c1=sc.next().charAt(0); 
		
		if(c1=='M'){
			System.out.println("星期一 ,Monday");
		}
		else if (c1=='W'){
			System.out.println("星期三 ,Wednesday");
		}
		else if(c1=='F'){
            System.out.println("星期五,Friday");
        }
        else if(c1=='T'){
            System.out.println("请输入第二个字母:");
            char c2=sc.next().charAt(0);
            if(c2=='u'){
                System.out.println("星期二,Tuesday");
            }
            else if(c2=='h'){
                System.out.println("星期四,Thursday");
            }
            else{
                System.out.println("输入错误!");
            }
        }
        else if(c1=='S'){
            System.out.println("请输入第二个字母:");
            char c2=sc.next().charAt(0);
            if(c2=='u') {
                System.out.println("星期天,Sunday");
            }
            else if(c2=='a'){
                System.out.println("星期六,Saturday");
            }
            else{
            System.out.println("输入错误!");
            }
        }
       else{
            System.out.println("输入错误!");	
	    }
	}
}

【程序27】
题目:求100之内的素数

public class PrimeNum27 {
	    public static void main(String args[]) {
	    	int count = 0;
	    	for(int i = 2;i<101;i++) {
	    		boolean judge = true;
	    		
	    		for(int k =2;k<i;k++) {
	    		    if(i%k == 0) {
	    		    	judge = false;
	    		    	break;
	    		    }
	    		}
	    		if(judge) {
	    			++count;
	    			System.out.println(i+"是素数");
	    		}	    		
	    	}
	    	System.out.println("100以内共有"+count+"个素数");
	    }
	}

【程序28】
题目:对10个数进行排序

public class ArraysSort28 {
	public static void main(String[] args) {
		int[] num = new int[10];
		for(int i=0;i<num.length;i++) {
			num[i]=new Random().nextInt(100);
		}
		System.out.println(Arrays.toString(num));
		Arrays.sort(num);
		System.out.println(Arrays.toString(num));
	}
}

【程序29】
题目:求一个3*3矩阵对角线元素之和

public class Matrix29 {
	public static void main(String[] args) {
		System.out.println("请输入九个整数:");
		   Scanner s= new Scanner(System.in);
		   int[][] a = new int[3][3];    
		   for(int i=0;i<3;i++){
		     for(int j=0;j<3;j++){
		     a[i][j]=s.nextInt();    
	}
}
		   s.close();
		   System.out.println("你输入的矩阵是:"); 
		   for(int i=0;i<3;i++){
			     for(int j=0;j<3;j++){
			        System.out.print(a[i][j]+"\t");   
			}		      
		     System.out.println();
		}
		   int sum = 0;
		   for(int i=0;i<3;i++){
			     for(int j=0;j<3;j++){
			      if(i==j){           //找出对角线元素
			         sum += a[i][j];   //求和
			     }
			}
		}       
			     System.out.println("对角线元素之和为:" + sum);
	}
}

【程序30】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

public class Array30 {
	public static void main(String[] args) {
		 int[] arr1 = {1, 2, 4, 8, 16, 32, 64};
		 System.out.println("请输入一个数");
	        int num = new Scanner(System.in).nextInt();
	        int[] arr2 = new int[arr1.length+1];
	        for(int i = 0; i < arr1.length; i++)
	        {
	            arr2[i+1] = arr1[i];
	        }
	        arr2[0] = num;
	        for(int i =0; i < arr2.length  - 1; i++)
	        {
	            int t;
	            if(arr2[i] > arr2[i+1])
	            {
	                t = arr2[i];
	                arr2[i] = arr2[i+1];
	                arr2[i+1] = t;
	            }
	        }
	        System.out.println(Arrays.toString(arr2));
	}

}

【程序31】
题目:将一个数组逆序输出。

public class ArraysSort31 {
	public static void main(String[] args) {
	   Scanner s = new Scanner(System.in);
	   int a[] = new int[20];
	System.out.println("请输入多个正整数(输入-1表示结束):");
	   int i=0,j;
	   do{
	      a[i]=s.nextInt();
	      i++;
	   }while (a[i-1]!=-1);
	   System.out.println("你输入的数组为:");
	   for( j=0; j<i-1; j++) {
	    System.out.print(a[j]+"   ");
	}
	   System.out.println("\n数组逆序输出为:");
	   for( j=i-2; j>=0; j=j-1) {
	    System.out.print(a[j]+"   ");
	}   
    }	
}

【程序32】
题目:取一个整数a从右端开始的4~7位。

public class Number32 {
	@SuppressWarnings("resource")
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		System.out.print("请输入一个7位以上的正整数:");
		long a = s.nextLong();
		    String str = Long.toString(a);
		    char[] ch = str.toCharArray();
		    int i=ch.length;
		    if (i<7){
		    	System.out.println("输入错误!");
		    }
		    else {
		     System.out.println("截取从右端开始的4~7位是:"+ch[i-7]+ch[i-6]+ch[i-5]+ch[i-4]);
		    }
	}
}

【程序33】
题目:打印出杨辉三角形(要求打印出10行如下图)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

public class PascalsTriangle33 {
	public static void main(String[] args) {
		int rows = 10;
		for (int i = 0; i < rows; i++) {
			int number = 1;
			System.out.format("%" + (rows - i) * 2 + "s", "");
			for (int j = 0; j <= i; j++) {
				System.out.format("%4d", number);
				number = number * (i - j) / (j + 1);
			}
			System.out.println();
		}
	}
}

【程序34】
题目:输入3个数a,b,c,按大小顺序输出。

public class NumCompare34 {
	public static void main(String[] args) {
		    Scanner sc = new Scanner(System.in);
		    System.out.println("请输入3个整数:");
		    int a = sc.nextInt();
		    int b = sc.nextInt();
		    int c = sc.nextInt();
		    int t = 0;
		    if(a < b) {
		     t = a;
		     a = b;
		     b = t;
		    }
		    if(a < c) {
		     t = a;
		     a = c;
		     c = t;
		    }
		    if(b < c) {
		      t = b;
		     b = c;
		     c = t;
		    }
		    System.out.println("从大到小的顺序输出:");
		    System.out.println(a + " " + b + " " + c);
		}
	}

【程序35】
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

public class ArrayChange35 {
	public static void main(String[] args) {
		method();
	}
	
	public static void method(){
		System.out.println("请输入数组的长度:");
		Scanner s = new Scanner(System.in);
		int length = s.nextInt();
		int[] a = new int[length];
		for(int i=0;i<length;i++){
			System.out.println("请输入第"+(i+1)+"个元素的值:");
			a[i]=s.nextInt();
		}
		System.out.println("原数组为:");
		for(int i=0;i<length;i++){
			System.out.print(a[i]+"\t");
		}
		System.out.println();
 
		int[] b = new int[length];
		for(int k=0;k<length;k++){
			b[k] = a[k];
		}
		int temp = 0;
		for(int i=0;i<length;i++){
			for(int j=0;j<length-1;j++){
				if(a[j]>a[j+1]){
					temp = a[j];
					a[j] = a[j+1];
					a[j+1] = temp;
				}
			}
		}
		int max = 0;
		int min = 0;
		min = a[0];
		max = a[length-1];
		
		for(int i=0;i<b.length;i++){
			if (b[i]==max) {
				temp = b[i];
				b[i] = b[0];
				b[0] = temp;
			}
			if (b[i]==min) {
				temp = b[i];
				b[i] = b[b.length-1];
				b[b.length-1] = temp;
			}
		}
		System.out.println("交换后的数组为:");
		for(int i=0;i<b.length;i++){
			System.out.print(b[i]+"\t");
		}
	}
}

【程序36】
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数

public class ArraySort36 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入数组长度");
		int len = input.nextInt();
		System.out.println("请输入要转换的长度");
		int m = input.nextInt();
		int [] arry =new int[len];
		arry = getArry(arry);
		function(arry,m);
		printArry(arry);
	}
	
	public static void function(int []arry ,int m) {
		int len = arry.length;
		int temp = arry[len-1];
		 
		for(int i = len-1;i>0;i--) {
			arry[i] = arry[i-1]; 
		}
		arry[0]= temp;
		m--;
		if(m>0) {
			function(arry,m);
		}	
	}
	
	public static int[] getArry(int[] arry) {
		Scanner input = new Scanner(System.in);
		int len = arry.length;
		for(int i=0;i<len ;i++) {
			System.out.print("请输入第"+(i+1)+"个数");
			arry[i] = input.nextInt();
		}
		return arry;
	}
	public static void printArry(int [] arry) {
		for (int i : arry) {
			System.out.print(i+"\t");
		}
	}
}

【程序37】
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

public class NumberSort37 {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
        System.out.print("请输入排成一圈的人数:");
        int n = s.nextInt();
        boolean[] arr = new boolean[n];
 
        for (int i = 0; i < arr.length; i++) {
            arr[i] = true;
        } 
 
        int leftCount = n;
        int countNum = 0;
        int index = 0;
        while (leftCount > 1) {
            if (arr[index] == true) {
                countNum++;
                if (countNum == 3) {
                    countNum = 0;
                    arr[index] = false;
                    leftCount--;
                }
            }
            index++;
            if (index == n) {
                index = 0;
            }
        }
        for (int i = 0; i < n; i++) {
            if (arr[i] == true) {
                System.out.println("原排在第" + (i + 1) + "位的人留下了。");
            }
        }
	}
}

【程序38】
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

public class ArrayLength38 {
	public static void main(String[] args) {
	    Scanner s = new Scanner(System.in);
	    System.out.println("请输入一个字符串:");
	    String str = s.nextLine();
	    System.out.println("字符串的长度是:"+str.length());
	    s.close();
	}
}

【程序39】
题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数
1/1+1/3+…+1/n(利用指针函数)

public class Function39 {
	public static void main(String[] args) {
        Func t = new Func();
        t.getNum(10);
	}
	
public static class Func{
    public void getNum(double n){
        if(n % 2 == 0){
            System.out.println(getOdd(n));
        }else{
            System.out.println(getEven(n));
        }
    }
    public double getOdd(double n){
        if(n <= 2){
            return (double)1/2;
        }
        return getOdd(n - 2) + 1/n;
    }
    public double getEven(Double n){
        if(n <= 1){
            return (double)1/3;
        }
        return getEven(n - 2) + 1/n;
    }  
    }
}

【程序40】

题目:字符串排序。

public class ArraySort40 {
	public static void main(String[] args) {
		System.out.println("请输入一个字符串:");
		Scanner sc = new Scanner(System.in);
		String in = sc.next();
		char c[] = in.toCharArray();
		Arrays.sort(c);
		System.out.println("升序排序后:");
		for (char i:c)
			System.out.print(i+" ");
			
		//降序排序
		char temp;
		for (int i=0;i<c.length/2;i++) {
			temp = c[i];
			c[i] = c[c.length-i-1];
			c[c.length-i-1] = temp;
		}
		System.out.println("\n降序排序后为:");
		for (char i:c)
			System.out.print(i+" ")
	}
}

【程序41】
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

public class MonkeyPeach41 {
	public static void main(String[] args) {
		int i=1;
		int num = 0;
		int sum=Peach(9);
		for(i=1;i<9;i++) {
			 num=sum/2+1;
			}
		System.out.println("第一天摘下"+num+"只桃子!");
	}
	public static int Peach(int day) {
		if(day==0) {
			return 1;
		}else {
			return (Peach(day-1)+1)*2;
		}		
	}
}

【程序42】
题目:809*??=800*??+9*??+1
其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。

public class Count42 {
	public static void main(String[] args) {
		int x = 0;
		boolean judge = false;
		for (int i = 10; i < 100; i++) {
			if (809 * i == 800 * i + 9 * i + 1) {
				judge = true;
				x = i;
				break;
			}
		}
		if (judge) {
			System.out.print("这个两位数是" + x);
			System.out.print("809*??的结果是:" + 809 * x);
		} else
			System.out.print("无符合要求的数"); 
	}
}

【程序43】
题目:求0—7所能组成的奇数个数。

public class Function43 {
	public static void main(String[] args) {	
		int sum = 4;
		for (int i = 2; i <= 8; i++) {
			sum += (n(7) / n(8 - i) - n(6) / n(8 - i)) * 4;
		}
		System.out.println("0—7所能组成的奇数个数为:" + sum);
		}
		public static double n(int a) {
			double n = 1;
			for (int i = 1; i <= a; i++) {
				n *= i;
			}
			return n;
		}
	}

【程序44】

题目:一个偶数总能表示为两个素数之和。

public class EvenNumber {
	public static void main(String[] args) {
		System.out.print("请输入一个偶数:");
		Scanner sc = new Scanner(System.in);
		int number = sc.nextInt();
		sc.close();
		
		if(0 != number%2) {
			System.out.print("输入的不是偶数!");
			return;
		}
		for (int i=2; i<number; i++) {
			if (isPrime(i)) {
				if(isPrime(number-i)) {
					System.out.print(number+"="+i+"+"+(number-i));
					break;
				}
			}
		}
	}
	private static boolean isPrime(int number) {
		for (int i=2; i<Math.sqrt(number)+1; i++) {
			if(0 == number%i)
				return false;
		}
		return true;

	}
}

【程序45】
题目:判断一个素数能被几个9整除

public class PrimeNum45 {
	public static void main(String[] args) {
       System.out.println("请输入一个素数:");
       Scanner sc = new Scanner(System.in);
       long num = sc.nextLong();
       sc.close();
       int count = 0;
       long num2 = num;
       while(num2>=9) {
    	   num2/=9;
    	   count++;
       }
       System.out.println(num+"最多能被"+count+"个9除");
    }
}

【程序46】
题目:两个字符串连接程序

public class StringsConnect46 {
	@SuppressWarnings("resource")
	public static void main(String[] args) {
		System.out.println("请输入第一个字符串:");
		String s1 = new Scanner(System.in).next();
		System.out.println("请输入第二个字符串:");
		String s2 = new Scanner(System.in).next();
		System.out.println("两个字符串合并后:\n"+s1+s2);
	 }
}

【程序47】
题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。

public class NumberPrint47 {
	public static void main(String[] args) {
		for(int i=0;i<8;i++) {
			int num = new Random().nextInt(50);
			for(int j=0;j<num;j++) {
				System.out.print("*");
			}
			System.out.println(num);
		}
	}
}

【程序48】
题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

public class Encryption48 {
	@SuppressWarnings("resource")
	public static void main(String[] args) {
		System.out.println("输入一个四位数:");
		int num = new Scanner(System.in).nextInt();
		int a = num/1000;
		int b = num%1000/100;
		int c = num%100/10;
		int d = num%10;
		
		a=(a+5)%10;
		b=(b+5)%10;
		c=(c+5)%10;
		d=(d+5)%10;
		
		int temp = 0;
		temp = a;
		a = d;
		d = temp;
		
		temp = b;
		b = c;
		c = temp;	
		System.out.println("输出的四位数是"+a+b+c+d);
	}
}

【程序49】
题目:计算字符串中子串出现的次数

public class String49 {
	public static void main(String[] args) {
       System.out.println("请输入一个字符串 :");
       Scanner scanner = new Scanner(System.in);
       String string = scanner.nextLine();
       System.out.println("请输入一个子串 :");
       String subString = scanner.nextLine();
       int count = 0;
       while (true) {
           int index = string.indexOf(subString);
           if (index != -1) {
               string = string.substring(index + subString.length(), string.length());
               count ++ ;
           } else {
               break;
           }
       }
       System.out.println(subString + "出现了 : " + count + "次");
	}
}

【程序50】
题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"stud"中。

public class Student50{
	@SuppressWarnings("resource")
	public static void main(String[] args) throws IOException {
		Scanner input = new Scanner(System.in);
		System.out.println("请依次输入学生号,姓名,三门课成绩,用逗号隔开,每个学生之间用句号隔开");
		String str = input.next();
		String[] student = str.split("\\.");
	  for(int i=0;i<student.length;i++){
		  System.out.print(student[i]+" ");
	  }
	 
		BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\stud.txt"));
		for (int i = 0; i < student.length; i++) {
			String[] scores = student[i].split("\\,");
			bw.write(student[i]);
			int[] num1 = new int[3];
			int sum = 0;
			for (int m = 0; m < 3; m++) {
				num1[m] = Integer.parseInt(scores[m + 2]);
				sum += num1[m];
			}
			bw.write(".平均分:" + sum/3);
			System.out.println(sum/3);
			
		}
		bw.flush();
		bw.close();
	}
}