设为首页 加入收藏

TOP

最新Java编程面试题全集(共50道题+答案)(一)
2014-11-24 01:45:53 来源: 作者: 【 】 浏览:96
Tags:最新 Java 编程 试题 全集 道题 答案

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



斐波那契数列:前面相邻两项之和,构成了后一项


通项公式


注:此时a1=1,a2=1,an=a(n-1)+a(n-2)(n>=3,n∈N*)


通项公式的推导


斐波那契数列:1、1、2、3、5、8、13、21、……


如果设F(n)为该数列的第n项(n∈N+)。那么这句话可以写成如下形式:


F(1) = 1,F(2)=1,F(n)=F(n-1)+F(n-2) (n≥3),


显然这是一个线性递推数列。


import java.util.Scanner;



public class X {


public static void main(String[] args) {


System.out.println(“请输入需要统计到的月份:”);


Scanner sc = new Scanner(System.in);// 让用户输入需要统计为止的月份


int n = sc.nextInt();



int num[] = new int[n];


num[1] = 1;


num[2] = 1;// 因为1,2月没有兔子产生,所以初始化为1



int i = 3;


for (; i < num.length; i++)// 注意此处循环变量的初始化值为3,还需要注意的是i的作用域


{


num[i] = num[i - 1] + num[i - 2];


System.out.println(“第” + i + “月的兔子数量为:” + num[i]);


}


System.out.println(“第” + n + “月的兔子数量为:” + (num[i - 1] + num[i - 2]));


// 因为循环内数组只能统计到n-1月份(数组的下标为0~n-1)


}



}



【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
public class X {


public static void main(String[] args) {


int count=0;



for(int i=101;i<=200;i++){


int j=2;//j一定要在外层循环内部


for(;j<=i;j++){


if(i%j==0)


{


break;


}


}


if(i==j)//跳出循环有两种可能,1.循环完毕。2.break跳出


{


System.out.println(“素数为:”+i);


count++;


}


}System.out.println(“素数个数为:”+count);


}



}



【程序3】
题目:打印出所有的 “水仙花数 “,所谓 “水仙花数 “是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 “水仙花数 “,因为153=1的三次方+5的三次方+3的三次方。
public class lianxi03 {
public static void main(String[] args) {
int b1, b2, b3;
for(int m=101; m<1000; m++) {
b3 = m / 100;
b2 = m % 100 / 10;
b1 = m % 10;
if((b3*b3*b3 + b2*b2*b2 + b1*b1*b1) == m) {
System.out.println(m+”是一个水仙花数”); }
}
}
}


【程序4】
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
import java.util.*;
public class lianxi04{
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print( “请键入一个正整数: “);
int n = s.nextInt();
int k=2;
System.out.print(n + “=” );
while(k <= n) {
if(k == n) {System.out.println(n);break;}
else if( n % k == 0) {System.out.print(k + “*”);n = n / k; }
else k++;
}
}
}
【程序5】
题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
import java.util.*;
public class lianxi05 {
public static void main(String[] args) {
int x;
char grade;
Scanner s = new Scanner(System.in);
System.out.print( “请输入一个成绩: “);
x = s.nextInt();
grade = x >= 90 ‘A’
: x >= 60 ‘B’
:’C';
System.out.println(“等级为:”+grade);


}
}
【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
/**在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。* /
import java.util.*;
public class lianxi06 {
public static void main(String[] args) {
int a ,b,m;
Scanner s = new Scanner(System.in);
System.out.print( “键入一个整数: “);
a = s.nextInt();
System.out.print( “再键入一个整数: “);
b = s.nextInt();
deff cd = new deff();
m = cd.deff(a,b);
int n = a * b / m;
System.out.println(“最大公约数: ” + m);
System.out.println(“最小公倍数: ” + n);
}
}
class deff{
public int deff(int x, int y) {
int t;
if(x < y) {
t = x;
x = y;
y = t;
}
while(y != 0) {
if(x == y) return x;
else {
int k = x % y;
x = y;
y = k;
}
}
return x;
}
}
【程序7】
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
import java.util.*;
public clas

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇如何计算缺陷密度? 下一篇华为面试题带解答

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: