【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
//这是一个菲波拉契数列问题
long s1,s2;// 定义这个月和下个月兔子的数量
s1 = 1; //第一个月为1对
s2 = 1; //第二个月为1对
int i=1; //定义一个控制变量
int m; // 月份数
Scanner in = new Scanner(System.in);
System.out.print("请输入你想要查看的月数:");
m = in.nextInt();
while(true){
//第一个月和第二个月兔子的数量都为1对
if(i==1||i==2){
System.out.println(i+"月: "+s1+"对");
i++; // 控制变量 i 加1
}
// i 大于3并且小于我们需要查看的月份
else if(i<m){
s1 = s1+s2;
s2 = s2+s1;
System.out.println(i+"月: "+s1+"对");
i++;//月份加1
System.out.println(i+"月: "+s2+"对");
i++; //月份加1
}else{
break;//不符合条件就退出
}
【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
int count = 0;
for(int sqrt = 101; sqrt <= 200;sqrt++){
boolean flag = true;
for(int i = 2;i < sqrt;i++){
if(sqrt % i == 0){
flag = false;
break;
}
}
if(flag){
count++;
System.out.println(sqrt);
}
}
System.out.println(count);
【程序3】
题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
for(int flowerCount = 100;flowerCount < 1000; flowerCount++){
int flowerCountH = flowerCount / 100;
int flowerCountT = (flowerCount - flowerCountH * 100) / 10;
int flowerCountO = (flowerCount - flowerCountH*100 - flowerCountT * 10);
int SUM = flowerCountH * flowerCountH * flowerCountH +
flowerCountT * flowerCountT * flowerCountT +
flowerCountO * flowerCountO * flowerCountO;
if(SUM == flowerCount){
System.out.println(flowerCount);
}
}
【程序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的值,重复执行第一步。
Scanner in = new Scanner(System.in);
System.out.print("请输入一个数:");
int num = in.nextInt();
int n = 2;
while(num > n){
if(0 == num % n){
System.out.print(n + "*");
num = num / n;
}else{
n++;
}
}
System.out.println(num);
【程序5】
题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
Scanner in = new Scanner(System.in);
System.out.print("请输入成绩:");
String Degree = in.next();
if(Integer.parseInt(Degree) >= 90){
Degree = "A";
}else if(Integer.parseInt(Degree) >= 60){
Degree = "B";
}else{
Degree = "C";
}
System.out.print(Degree);
【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
/**在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。* /
Scanner in = new Scanner(System.in);
System.out.print("请输入第一个数:");
int firstNum = in.nextInt();
System.out.print("请输入第二个数:");
int secondNum = in.nextInt();
int num[] = {firstNum,secondNum};
//升序排列
Arrays.sort(num);
int temp = 0;
while(0 != num[0]){
temp = num[1] % num[0];
num[1] = num[0];
num[0] = temp;
}
System.out.println(firstNum+"与"+secondNum+"的最大公约数为:"+num[1]);
int min_multiple = firstNum * secondNum / num[1];
System.out.println(firstNum+"与"+secondNum+"的最小公倍数为:"+min_multiple);
【程序7】
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
String A="abcd e f g1 23";
//System.out.println(A.length());
int j = 0;
int x = 0;
int y = 0;
for(int i = 0; i < A.length();i++){
String word = (String.valueOf(A.charAt(i)));
if(word.matches("\\s")){
j++;
}
if(word.matches("[a-zA-Z]+")){
x++;
}
if(word.matches("\\d")){
y++;
}
}
System.out.println("空格数为:"+j);
System.out.println("字母数为:"+x);
System.out.println("数字数为:"+y);
【程序8】
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
System.out.print("请输入相加数的个数:");
int count = in.nextInt();
System.out.print("请输入相加的数字:");
String num = in.next();
String n = num;
Vector<String>numV = new Vector<String>();
for(int i = 0;i < count;i++){
numV.add(num);
num+=n;
}
for(int i = 0;i < numV.size();i++){
if(i == numV.size()-1){
System.out.print(numV.get(i)+"=");
}else{
System.out.print(numV.get(i)+"+");
}
}
int sum = 0;
for(int i = 0;i < numV.size();i++){
sum += Integer.parseInt(numV.get(i));
}
System.out.println(sum);
【程序9】
题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数。
for(int i = 2;i <= 1000; i++){
int sum = 0;
for(int j = 1;j < i;j++){
if(0 == i % j){
sum += j;
}
}
if(sum == i){
System.out.println(i);
}
}
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。