面试编程题

1.//输出昨天的此刻时间

Calendar cal = Calendar.getInstance();
System.out.println(Calendar.DATE);//5
cal.add(Calendar.DATE, -1);
Date time = cal.getTime();
System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(time));

2.//打印出一段字符串中的数字

	    String str = "iu7i8hy4jnb2";
	    Pattern p = Pattern.compile( "\\d"); 
	    Matcher matcher = p.matcher( str );
	    while ( matcher.find() ) {
	        System.out.print(matcher.group());//7842
	     }

3.//判断某年份是否为闰年

年份能被4整除但是不能被100整除的或者是能被400整除的年称之为闰年。

public static void leapYear(){
	Scanner in = new Scanner(System.in);
	System.out.println("请输入年份:");
	while(in.hasNext()){
		int year = in.nextInt();
		if((year % 4 == 0 && year % 100 != 0) || year%400 == 0){
			System.out.println(year + "年是闰年!");
		}else{
			System.out.println(year + "年不是闰年!");
		}
	}
}

4.1//阶乘

在表达阶乘时,就使用“!”来表示。如n阶乘,就表示为n!    

	public static void factorial(int num){
		int n = 1;
		for (int i = 1; i <= num; i++) {
			n = n * i;
		}
		System.out.println(n);
	}

4.2//阶乘求和

输出1!+2!+3!+…+num!的和

	public  void factorial(int num){
		int sum = 0;
		int n = 1;
		for (int i = 1; i <= num; i++) {
			n = n * i;
			sum = sum + n;
		}
		System.out.println("sum:" + sum);
	}

5.//递归算法-斐波那契数列的问题--每隔三个月生一窝兔子

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
        
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    System.out.println("请输入月数:");
    while(in.hasNext()){
	int month = in.nextInt();
	System.out.println("第" +month+ "个月的兔子总数是:" + rabbit(month));
    }
}//main
	
public static int rabbit(int months){
    if(months < 3){
    return 1;
    }else{
	return rabbit(months - 1) + rabbit(months - 2);
    }
}

6.//判断并且输出素数个数

素数,也叫质数,只能被1和本身整出的数

	//num以内的素数
	public static void prime(int num){
		int count = 0;
		for(int i = 2;i<= num;i++){
				if(isSuShu(i)){
					System.out.print(i + " ");
					count ++ ;
				}
		}
		System.out.println();
		System.out.println("共有" + count + "个素数");
	}
	//判断是否为素数
	public static  boolean isSuShu(int num){
		for (int i = 2; i < num; i++) {
			if(num % i == 0){
				return false;
			}
		}
		return true;
	}


7.//打印出所有的水仙花数

    所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为 153=1*1*1+5*5*5+3*3*3。(153、370、371、407)

public static void daffodilsNumber(){
	int a,b,c,sum;
	for (int i = 100; i < 1000; i++) {
		a = i / 100;//百位
		b = (i - 100*a) / 10;
		c = i % 10;//个位
		sum = a*a*a + b*b*b + c*c*c;
		if(sum == i){
			System.out.println(i);
		}
	}
}


8.//输入一个正整数分解质因数。如:输入90,输出90=2*3*3*5

思路:
1.用一个for循环遍历一个从 k=2 开始查找到 k<=n 的数
2.当 n%k==0 的时候,输出 k 的值
3.然后把 n 的值递归一下,即 n=n/k;
4.这个时候要把 for 循环重新执行,即k=2;

	public static void num(){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个整数:");
		int n = sc.nextInt();
		System.out.println(n + "=");
		for (int i = 2; i <= n/2; i++) {
			if(n % i ==0){
				System.out.println(i + "*");
				n =n /i;
				i = 2;
			}
		}
		System.out.println(n);
	}

8.//条件运算符

学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。这里涉及里一个知识点就是条件运算符。

public static void core(){
		System.out.print("请输入整数成绩:");
		Scanner sc = new Scanner(System.in);
		char s;
		while(sc.hasNext()){
			int core = sc.nextInt();
			s = core>=90?'A' : core>=60?'B':'C';
			System.out.println(s);
		}
	}


猜你喜欢

转载自blog.csdn.net/qq_37335810/article/details/80038635