JAVA经典例题二(10 examples)

  1. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? (兔子的规律为数列:2,2,4,6,10,16…)
public class Rabbit {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int number[]=new int[100];
		int month=0;
		number[0]=2;
		number[1]=2;
		while(month<=12) {
		
		if(month==1) {
			System.out.println("第1个月的兔子数目为:"+number[0]);
		}
		if(month==2) {
			System.out.println("第2个月的兔子数目为:"+number[1]);
		}
		if(month>2) {
				number[month-1]=number[month-2]+number[month-3];
			System.out.println("第"+month+"个月的兔子数目为:"+number[month-1]);
		}
		month++;
		}
	}

}
  1. 判断101-200之间有多少个素数,并输出所有素数。 (判断素数的方法:用一个数分别去除2到原数减一,如果能被整除, 则表明原数数不是素数,反之是素数)
public class SuShu {

	public static void main(String[] args) {
		int shu=101;
		int count=0;
		while(shu<=200) {
		if(zhengChu(shu)==false) {
			System.out.println(shu+"是素数");
			count++;
		}
		shu++;		  
		}
		System.out.println("总共有"+count+"个数!");
	}
	public static boolean zhengChu(int shu) {
		for(int i=2;i<shu;i++) {
			if(shu%i==0) {
				return true;
			}
//			else return false;
		}
		return false;
	}

}
  1. 打印出所有的"水仙花数"(所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如: 153是一个"水仙花数",因为153等于1的三次方加5的三次方加3的三次方)
public class ShuiXianHuaShu {

	public static void main(String[] args) {
		int a=1,b=0,c=0,num=0;
		for(a=1;a<=9;a++) {
			for(b=0;b<=9;b++) {
				for(c=0;c<=9;c++) {
					double a1=(double)a;
					double b1=(double)b;
					double c1=(double)c;
					num=a*100+b*10+c;
					if(num==(int)Math.pow(a1,3.00)+(int)Math.pow(b1,3.00)+(int)Math.pow(c1,3.00)){
					
//					if(num==a*a*a+b*b*b+c*c*c) {   //最直接办法!!
						System.out.println(num+"是水仙花数");
					}
				}
			}
		}

	}

}
  1. 将一个正整数分解质因数。例如:输入90,打印出90=2×3×3×5
import java.util.Scanner;
public class ZhiYinShu {
	public static void main(String[] args) {
		System.out.println("输入一个整数");
		Scanner in=new Scanner(System.in); 
		int a  = in.nextInt();
		int k=2;//定义一个最小的质因数
		System.out.print(a+"=");
		while(k<=a) {
			if(k==a) {
				System.out.println(a);
				break;
			}else if(a%k==0){
				System.out.print(k+"×");
				a=a/k;
				
			}else {
				k++;
			}
		}
	}

}
  1. 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示(利用三目运算符)
import java.util.Scanner;
public class ChengJi {

	public static void main(String[] args) {
		Scanner get=new Scanner(System.in);
		System.out.println("请输入一个数:");
		try {
			int score=get.nextInt();
			if(score>60) {
			String mark=(score>90)?"A":"B";
			System.out.println(mark);
		}
		else {
			String mark="C";
			System.out.println(mark);
		}	
		}
		finally {
			get.close();
		}
	}
}
  1. 输入两个正整数m和n,求其最大公约数和最小公倍数
import java.util.Scanner;
public class GongYueShu {

	public static void main(String[] args) {
		System.out.println("请输入两个数字m,n:");
		Scanner get1=new Scanner(System.in);
		int m=get1.nextInt();
		Scanner get2=new Scanner(System.in);
		int n=get2.nextInt();
		for(int i=m;i>=1;i--) {
			if(m%i==0&&n%i==0) {
				System.out.println("最大公约数为:"+i);	
				break;
			}
		}
		for(int j=n;j<100000;j++) {
			if(j%m==0&&j%n==0) {
				System.out.println("最小公倍数为:"+j);
				break;
			}
		}
	}
}
  1. 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
import java.util.Scanner;
public class ZiFuShu {

	public static void main(String[] args) {
		System.out.println("请输入一段字符:");
		Scanner sc=new Scanner(System.in);
		String m=sc.nextLine();//nextLine():方法会读取改行剩余的所有的内容,
							   //包括换行符。即方法返回的是Enter键之前的所有字符
		int letter=0,digit=0,blankSpace=0,other=0;
		for(int i=0;i<m.length();i++) {
			if(((int)m.charAt(i)>=65&&(int)m.charAt(i)<=90)||
			 ((int)m.charAt(i)>=97&&(int)m.charAt(i)<=122)) {
				letter++;
			}
			else if((int)m.charAt(i)>=48&&(int)m.charAt(i)<=57) {
				digit++;
			}
			else if((int)m.charAt(i)==32) {
				blankSpace++;
			}
			else 
				other++;
		}
		System.out.println("英文字母的数目为:"+letter);
		System.out.println("数字的数目为:"+digit);
		System.out.println("空格的数目为:"+blankSpace);
		System.out.println("其他字符的数目为:"+other);
	}

}
  1. 求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制
import java.util.Scanner;
import static java.lang.Math.pow;
public class AAAAA {

	public static void main(String[] args) {
		System.out.println("请输入基数a:");
		System.out.println("请输入数目n:");
		int time=0;
		int nowDate=0,lastDate=0;
		int total=0;
		Scanner get1=new Scanner(System.in);
		int a=get1.nextInt();//基数为a
		Scanner get2=new Scanner(System.in);
		int n=get2.nextInt();//n个数相加
		//int m=a+a*10+a*100+
		//System.out.println(a+"+"+a*10+"+"+a*100+"+"+);
		while (time<n) {
			nowDate=a*(int)pow(10,time++)+lastDate;
			total=total+nowDate;
			lastDate=nowDate;
			
		}
		System.out.println("总和为:"+total);
	}

}
  1. 设计一个程序,求1000以内的所有完数并输出。一个数除去它本身若恰好等于它因子之和,则该数为“完数”
public class WanShu {

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

	}

}
  1. 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米,第10次反弹多高
import static java.lang.Math.pow;
public class FanTanQiu {
//先落地再反弹!!
	public static void main(String[] args) {
		int a=100;
		double b=0;
		double total=100;//落地时总路程
		for(int i=1;i<=10;i++) {
			b=a/Math.pow(2,i);//每次反弹的高度
			System.out.println("第"+i+"次反弹高度为:"+b);
			total=total+2*b;
		}
		double n=total-2*b;
		System.out.println("第十次落地时总路程:"+n);
	}

}

猜你喜欢

转载自blog.csdn.net/WU2629409421perfect/article/details/86536494