- 古典问题:有一对兔子,从出生后第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++;
}
}
}
- 判断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;
}
}
- 打印出所有的"水仙花数"(所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如: 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+"是水仙花数");
}
}
}
}
}
}
- 将一个正整数分解质因数。例如:输入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++;
}
}
}
}
- 利用条件运算符的嵌套来完成此题:学习成绩>=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();
}
}
}
- 输入两个正整数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;
}
}
}
}
- 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
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);
}
}
- 求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);
}
}
- 设计一个程序,求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;
}
}
}
- 一球从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);
}
}