1. 題目:古典問(wèn)題:有一對(duì)兔子后众,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子钞诡,
? ? ? 小兔子長(zhǎng)到第四個(gè)月后每個(gè)月又生一對(duì)兔子屡拨,假如兔子都不死,問(wèn)每個(gè)月的兔子總數(shù)為多少切揭?
/**
* 題目分析: 第一個(gè)月:1對(duì)
*? ? ? ? 第二個(gè)月:1對(duì)
*? ? ? ? 三:? ? ? ? ? ? 2對(duì)
*? ? ? ? 四:? ? ? ? ? ? 3對(duì)
*? ? ? ? 五:? ? ? ? ? ? 5對(duì)
*? ? ? ? .......
*? ? ? ? 兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,21....?
*? ? ? ? f(n) = f(n-1) + f(n-2)? n>2
* @作者: HK
*/
public class Example1 {
public static void main(String[] args) {
int n;
Scanner input = new Scanner(System.in);
System.out.println("請(qǐng)輸入求第幾個(gè)月的兔子總數(shù):");
n=input.nextInt();
for (int i =1; i <= n; i++) {
System.out.println(f(i));
}
System.out.println("兔子總數(shù)為:"+f(n));
}
public static int f(int x){
if(x==1 || x==2){
return 1;
}
else {
return f(x-1)+f(x-2);
}
}
}
?2.題目:判斷101-200之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)锁摔。
/**
*程序分析:判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù))廓旬,如果能被整除, 則表明此數(shù)不是素?cái)?shù)谐腰,反之是素?cái)?shù)孕豹。
*/
public class Example2 {
public static void main(String[] args) {
int j,i;
for ( i = 101; i <=200; i++) {
for ( j = 2; j <Math.sqrt(i); j++) {
? int n=i%j;
if(n==0)
break;
}
if(j>Math.sqrt(i))
System.out.println(i+"是素?cái)?shù)");
}
}
}
3.題目:打印出所有的 ? "水仙花數(shù) ? ",所謂 ? "水仙花數(shù) ? "是指一個(gè)三位數(shù)十气,其各位數(shù)字立方和等于該數(shù)本身励背。
/**
*? 例如:153是一個(gè)? "水仙花數(shù)? ",因?yàn)?53=1的三次方+5的三次方+3的三次方砸西。
* @作者: HK
*/
public class Example3 {
public static void main(String[] args) {
int a; //表示個(gè)位
int b; //表示十位
int c; //表示百位
for (int i = 100; i <=999; i++) {
c=i/100;
b=(i-c*100)/10;
a=i%10;
if(a*a*a + b*b*b +c*c*c ==i){
System.out.println(i+"是水仙花數(shù)");
}
}
}
}
4.題目:將一個(gè)正整數(shù)分解質(zhì)因數(shù)叶眉。例如:輸入90,打印出90=2*3*3*5
import java.util.Scanner;
/**
* 題目:將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5
* 分析:任何一個(gè)合數(shù)都可以寫成幾個(gè)質(zhì)數(shù)相乘的形式芹枷。其中每個(gè)質(zhì)數(shù)都是這個(gè)合數(shù)的因數(shù)衅疙,叫做這個(gè)合數(shù)的分解質(zhì)因數(shù)。
*? ? 分解質(zhì)因數(shù)只針對(duì)合數(shù)鸳慈。
*/
public class Example4 {
? ? ? ? public? static? void? main(String[]? args){?
? ? ? ? ? ? ? ? ? int N;
? ? ? ? ? ? ? ? ? System.out.println("請(qǐng)輸入N的值:");
? ? ? ? ? ? ? ? ? Scanner input = new Scanner(System.in);
? ? ? ? ? ? ? ? ? N=input.nextInt();
? ? ? ? ? ? ? ? ? System.out.print(N+ "分解質(zhì)因數(shù): "+N+ "= ");?
? ? ? ? ? ? ? ? ? int n=N,i=2;
? ? ? ? ? ? ? ? while(n>2){
? ? ? ? ? ? ? ? ? ? if(n%i==0){?
? ? ? ? ? ? ? ? ? ? if(n/i==1){
? ? ? ? ? ? ? ? ? ? System.out.print(i);
? ? ? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? ? ? System.out.print(i+ "* ");
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? n=n/i;? ? ? ?
? ? ? ? ? ? ? ? ? ? } else {
i++;
}? ? ?
? ? ? ? ? ? ? ? }
? ? ? ? }
}
5.題目:輸入兩個(gè)正整數(shù)m和n饱溢,求其最大公約數(shù)和最小公倍數(shù)。
import java.util.Scanner;
/**
* 題目:輸入兩個(gè)正整數(shù)m和n走芋,求其最大公約數(shù)和最小公倍數(shù)理朋。
*
* 分析:求最大公約數(shù)可以用輾轉(zhuǎn)相除法
* ? 最小公倍數(shù)為:m*n/最大公約數(shù)
* @作者: HK
*/
public class Example6 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("請(qǐng)輸入兩個(gè)正整數(shù)數(shù)值:");
int a=input.nextInt();
int b=input.nextInt();
int m=a,n=b;
int y =gys(m, n);
System.out.println("最大公約數(shù)為:"+y);
System.out.println("最小公倍數(shù)為:"+m*n/y);
}
//方法一
public static int gys(int m,int n){
int c = 0;
if(m<n){
int t=m;
m=n;
n=t;
}
while(n!=0){
if (n==1) {
return 1;
}
else{
c=m%n;
m=n;
n=c;
}
}
return m;
}
//方法二
// public static int gys(int m,int n){
// while(true){
// if((m = m%n )==0)
// return n;
// if((n = n%m)==0 )
// return m;
// }
// }
}
6.題目:輸入一行字符絮识,分別統(tǒng)計(jì)出其中英文字母、空格嗽上、數(shù)字和其它字符的個(gè)數(shù)次舌。
import java.util.Scanner;
/**
*? 題目:輸入一行字符,分別統(tǒng)計(jì)出其中英文字母兽愤、空格彼念、數(shù)字和其它字符的個(gè)數(shù)。
* @作者: HK
*/
public class Example7 {
public static void main(String[] args) {
int zimu=0;
int kongge = 0;
int number = 0;
int other = 0;
System.out.println("請(qǐng)輸入一行字符:");
String input = new Scanner(System.in).nextLine();
char[] array = input.toCharArray();
for (int i = 0; i < array.length; i++) {
if( (array[i]>='a' && array[i]<='z') || (array[i]>='A' && array[i]<='Z' ) )
zimu++;
else if(array[i]==' ')
kongge++;
else if(array[i]>='0' && array[i]<='9')
number++;
else {
other++;
}
}
System.out.println("字母?jìng)€(gè)數(shù):"+zimu +"空格個(gè)數(shù):"+kongge +"數(shù)字個(gè)數(shù):"+number +"其他:"+other);
}
}
7.題目:求s=a+aa+aaa+aaaa+aa...a的值浅萧,其中a是一個(gè)數(shù)字逐沙。
import java.util.Scanner;
/**
* 題目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個(gè)數(shù)字洼畅。
* 例如: 2+22+222+2222+22222(此時(shí)共有5個(gè)數(shù)相加)吩案,幾個(gè)數(shù)相加有鍵盤控制。
* @作者: HK
*/
public class Example8 {
public static void main(String[] args) {
? ? ? ? //第一個(gè)整數(shù)為幾個(gè)數(shù)帝簇,第二個(gè)是數(shù)值為m? 例如: n=5 m=2
System.out.println("請(qǐng)輸入兩個(gè)正整數(shù):");
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int m = input.nextInt();
int sum=0;
int a=0;
for(int j = 1;j<=n;j++){
int s=0;
for (int i = 0; i<j; i++) {
a= (int) (m*(Math.pow(10,i)));
s=s+a;
}
System.out.println(s);
sum=s+sum;
}
System.out.println("和為:"+sum);
}
}
8.題目:一個(gè)數(shù)如果恰好等于它的因子之和徘郭,這個(gè)數(shù)就稱為 ? "完數(shù) ? "。例如6=1+2+3.編程 ? ? ? 找出1000以內(nèi)的所有完數(shù)丧肴。
/**
* 題目:一個(gè)數(shù)如果恰好等于它的因子之和残揉,這個(gè)數(shù)就稱為? "完數(shù)? "。例如6=1+2+3.編程? ? ? 找出1000以內(nèi)的所有完數(shù)芋浮。
* 分析:求出每個(gè)數(shù)的因子抱环,讓他們相加的和與這個(gè)數(shù)作比較,如果相等就是完數(shù)纸巷。
* @作者: HK
*/
public class Example9 {
public static void main(String[] args) {
for (int i = 2; i < 1000; i++) {
int s=0;
for (int j = 1; j < i; j++) {
if(i%j==0){
s+=j;
}
}
if(s==i)
System.out.print(i+"? ");
}
System.out.println();
}
// ? public? static? void? main(String[]? args){?
// ? int? s;?
// ? for(int? i=1;i <=1000;i++)?
// ? {?
// ? s=0;?
// ? for(int? j=1;j <i;j++)?
// ? if(i? %? j==0)?
// ? s=s+j;?
// if(s==i)?
// ? System.out.print(i+ "? ");?
// ? }?
// ? System.out.println();?
// ?
// ? }?
//
}
9.?題目:有1镇草、2、3瘤旨、4個(gè)數(shù)字梯啤,能組成多少個(gè)互不相同且無(wú)重復(fù)數(shù)字的三位數(shù)?都是多少裆站?
/**
* 題目:有1、2黔夭、3宏胯、4個(gè)數(shù)字,能組成多少個(gè)互不相同且無(wú)重復(fù)數(shù)字的三位數(shù)本姥?都是多少肩袍?
* 程序分析:可填在百位、十位婚惫、個(gè)位的數(shù)字都是1氛赐、2魂爪、3、4艰管。組成所有的排列后再去? 掉不滿足條件的排列
* @作者: HK
*/
public class Example11 {
public static void main(String[] args) {
int t=0;
for (int i = 1; i <= 4; i++)
for(int j=1;j<=4;j++)
for(int k=1;k<=4;k++)
if(i!=j && j!=k && k!=i){
t+=1;
System.out.println(i*100+j*10+k);
}
System.out.println("共有多少種排序:"+t);
}
}
10.?題目:一個(gè)整數(shù)滓侍,它加上100后是一個(gè)完全平方數(shù),再加上168又是一個(gè)完全平方數(shù)牲芋,請(qǐng)問(wèn)該數(shù)是多少撩笆?
/**
*? 題目:一個(gè)整數(shù),它加上100后是一個(gè)完全平方數(shù)缸浦,再加上168又是一個(gè)完全平方數(shù)夕冲,請(qǐng)問(wèn)該數(shù)是多少?
* @作者: HK
*/
public class Example12 {
? ? public static void main(String[] args) {
? ? ? ? for(int i=1;i<100000;i++){
? ? ? ? ? ? if(Math.sqrt(i+100)%1==0 && Math.sqrt(i+100+168)%1==0){
? ? ? ? ? ? ? ? System.out.println("得到的數(shù)字是:"+i);
? ? ? ? ? ? }
? ? ? ? }
? ? }
}
11.題目:輸出9*9口訣裂逐。
/**
*? 題目:輸出9*9口訣歹鱼。
* @作者: HK
*/
public class Example13 {
public static void main(String[] args) {
System.out.println("倒序9*9:");
for(int i=1; i<=9; i++){
for(int j=i; j<=9; j++ )
System.out.print(i+"*"+j+"="+i*j+" ");
? System.out.println();
}
System.out.println("正序9*9:");
for (int i = 1; i <= 9; i++) {
for(int j = 1;j<=i;j++){
System.out.print(j+"*"+i+"="+i*j+" ");
}
System.out.println();
}
System.out.println();
? ? int i=0;?
? ? int j=0;?
? ? for(i=1;i<=9;i++)?
? ? {? ? for(j=i;j<=9;j++)?
? ? ? ? ? ? System.out.print(i+"*"+j+"="+i*j+" ");?
? ? ? ? ? ? System.out.println();?
? ? }?
? ? System.out.println();
? ? for(i=1;i<=9;i++)?
? ? {? ? for(j=1;j<=i;j++)?
? ? ? ? ? ? System.out.print(i+"*"+j+"="+i*j+" ");?
? ? ? ? ? ? System.out.println();?
? ? }?
}
}
12.猴子吃桃問(wèn)題:猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半卜高,還不癮弥姻,又多吃了一個(gè) ? 第二天早上又將剩下的桃子吃掉一半,又多吃了一個(gè)篙悯。??以后每天早上都吃了前一天剩下 ? 的一半零一個(gè)蚁阳。到第10天早上想再吃時(shí),見(jiàn)只剩下一個(gè)桃子了鸽照。求第一天共摘了多少螺捐。?
package Example01;
/**
* 猴子吃桃問(wèn)題:猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半矮燎,還不癮定血,又多吃了一個(gè)? 第二天早上又將剩下的桃子吃掉一半,又多吃了一個(gè)诞外。
* 以后每天早上都吃了前一天剩下? 的一半零一個(gè)澜沟。到第10天早上想再吃時(shí),見(jiàn)只剩下一個(gè)桃子了峡谊。求第一天共摘了多少茫虽。
* @作者: HK
*/
public class Example14 {
public static void main(String[] args) {
int n=10;
int s=1;
while(n>1){
s=(s+1)*2;
n--;
System.out.println("第"+n+"天共有"+s+"桃子");
}
System.out.println(s);
}
// static int total(int day){?
//? ? ? ? if(day == 10){?
//? ? ? ? ? return 1;?
//? ? ? ? }?
//? ? ? ? else{?
//? ? ? ? ? return (total(day+1)+1)*2;?
//? ? ? ? }?
//? ? ? ? }?
//public static void main(String[] args)?
//{?
//? ? System.out.println(total(1));?
//}?
}
13.題目:兩個(gè)乒乓球隊(duì)進(jìn)行比賽,各出三人既们。甲隊(duì)為a,b,c三人濒析,乙隊(duì)為x,y,z三人。已抽簽決定比賽名單啥纸。?有人向隊(duì)員打聽(tīng)比賽的名單号杏。a說(shuō)他不和x比,c說(shuō)他不和x,z比斯棒,請(qǐng)編程序找出三隊(duì)賽手的名單
/**
*? 題目:兩個(gè)乒乓球隊(duì)進(jìn)行比賽盾致,各出三人主经。甲隊(duì)為a,b,c三人,乙隊(duì)為x,y,z三人庭惜。已抽簽決定比賽名單罩驻。
*? 有人向隊(duì)員打聽(tīng)比賽的名單。a說(shuō)他不和x比蜈块,c說(shuō)他不和x,z比鉴腻,請(qǐng)編程序找出三隊(duì)賽手的名單
* @作者: HK
*/
public class Example15 {
public static void main(String[]args){?
? ? ? ? char i,j,k;? /*i是a的對(duì)手,j是b的對(duì)手,k是c的對(duì)手*/?
? ? ? ? for(i='x';i<='z';i++)?
? ? ? ? for(j='x';j<='z';j++){?
? ? ? ? ? ? if(i!=j)?
? ? ? ? ? ? for(k='x';k<='z';k++){?
? ? ? ? ? ? ? ? if(i!=k && j!=k){?
? ? ? ? ? ? ? ? ? ? if(i!='x' && k!='x'&& k!='z')?
? ? ? ? ? ? ? ? ? ? System.out.println(" a? Vs? "+i+"\n"+
? ? ? ? ? ? ? ? ? ? " b? Vs? "+j+"\n"+ "c? Vs "? +k);?
? ? ? ? ? ? ? ? }?
? ? ? ? ? ? }?
? ? ? ? }?
? ? }?
}
14.題目:打印出如下圖案(菱形) ??
/**
* 題目:打印出如下圖案(菱形)?
*?
**?
*****?
*******?
******?
***?
*?
* @作者: HK
*/
public class Example16 {
public static void main(String[] args) {
for (int i = 1; i <= 4; i++) {
for(int j=1; j<=2*i-1;j++)
System.out.print("*");
? System.out.println();
}
for (int i = 1; i <=3; i++) {
for(int j=1; j<=7-2*i;j++)
System.out.print("*");
System.out.println();
}
}
}
15.打印三角和菱形
/**
* 打印三角和菱形
* @作者: HK
*/
public class Example17 {
public static void main(String [] args)?
? {?
? ? ? int i=0;?
? ? ? int j=0;?
? ? ? for(i=1;i<=4;i++)?
? ? ? {? for(j=1;j<=2*i-1;j++)?
? ? ? ? ? ? ? System.out.print("*");?
? ? ? ? ? ? System.out.println("");? ? ?
? ? ? }?
? ? ? for(i=4;i>=1;i--)?
? ? ? { for(j=1;j<=2*i-3;j++)?
? ? ? ? ? ? ? System.out.print("*");?
? ? ? ? ? ? ? ? System.out.println("");? ? ?
? ? ? }?
for(i=1;i<=4;i++)?
? ? {?
? ? ? ? for(int k=1; k<=4-i;k++)?
? ? ? ? ? System.out.print(" ");?
? ? ? ? for(j=1;j<=2*i-1;j++)?
? ? ? ? ? ? System.out.print("*");?
? ? ? ? System.out.println("");? ? ?
? ? }?
? ? for(i=4;i>=1;i--)?
? ? {?
? ? ? ? for(int k=1; k<=5-i;k++)?
? ? ? ? ? ? ? System.out.print(" ");?
? ? ? ? for(j=1;j<=2*i-3;j++)?
? ? ? ? ? ? System.out.print("*");?
? ? ? ? ? System.out.println("");? ? ?
? ? }?
? }
}
16.?題目:有一分?jǐn)?shù)序列:2/1,3/2百揭,5/3爽哎,8/5,13/8器一,21/13...求出這個(gè)數(shù)列的前20項(xiàng)之和课锌。
/**
*? 題目:有一分?jǐn)?shù)序列:2/1,3/2祈秕,5/3渺贤,8/5,13/8请毛,21/13...求出這個(gè)數(shù)列的前20項(xiàng)之和志鞍。
* @作者: HK
*/
public class Example18 {
public static void main(String[] args) {
double fenmu=1;
double fenzi=2;
double sum=0;
System.out.print("sum=");
for (int j = 0; j < 20; j++) {
double temp;
temp=fenzi;
sum=sum+fenzi/fenmu;
if(j==19){
System.out.print(fenzi+"/"+fenmu);
System.out.println();
}else {
System.out.print(fenzi+"/"+fenmu+"+ ");
}
fenzi=fenzi+fenmu;
fenmu=temp;
}
System.out.println(sum);
}
}
17.? 題目:求1+2!+3!+...+20!的和。
/**
*? 題目:求1+2!+3!+...+20!的和方仿。
* @作者: HK
*/
public class Example19 {
public static void main(String[] args) {
long? sum=0;
for (int i = 1; i <= 20; i++){
long n=1;
for (int j = 1; j <= i; j++) {
n=n*j;
}
System.out.println(i+"!"+"="+n);
sum+=n;
}
System.out.println(sum);
/*
* 另一種方法
*/
? ? ? ? long num =0;
? ? ? ? for (int i = 1; i <=20; i++) {
? ? ? ? ? ? num += getFactorial(i);
? ? ? ? }
? ? ? ? System.out.println(num);
? ? }
? public static long getFactorial(int n){
? ? ? ? if (n ==1)
? ? ? ? ? ? return 1;
? ? ? ? return n*getFactorial(n-1);
? ? }
}
18.題目:利用遞歸方法求5!固棚。
import java.util.Scanner;
/**
* 題目:利用遞歸方法求5!。
* @作者: HK
*/
public class Example20 {
public static void main(String[] args) {
System.out.println("請(qǐng)輸入一個(gè)遞歸數(shù)n:");
int n = new Scanner(System.in).nextInt();
Example20 trf =new Example20();
long sum = trf.recursion(n);
System.out.println(n+"!="+sum);
}
public long recursion(int n) {?
? long value = 0 ;?
? if(n ==1 || n == 0) {?
? value = 1;?
? } else if(n > 1) {?
? value = n * recursion(n-1);?
? }?
? return value;?
}?
}
19.?題目:有5個(gè)人坐在一起仙蚜,問(wèn)第五個(gè)人多少歲此洲?他說(shuō)比第4個(gè)人大2歲。問(wèn)第4個(gè)人歲數(shù)委粉,他說(shuō)比第3個(gè)人大2歲呜师。問(wèn)第三個(gè)人,又說(shuō)比第2人大兩歲贾节。問(wèn)第2個(gè)人汁汗,說(shuō)比第一個(gè)人大兩歲。? 最后問(wèn)第一個(gè)人栗涂,他說(shuō)是10歲知牌。請(qǐng)問(wèn)第五個(gè)人多大?
public class Example21 {
public static void main(String[] args) {
int n=5;
int age =Age(n);
System.out.println(age);
}
public static int Age(int n){
if(n==1)
return 10;
else {
return Age(n-1)+2;
}
}
}
20.題目:給一個(gè)不多于5位的正整數(shù)戴差,要求:一送爸、求它是幾位數(shù)铛嘱,二暖释、逆序打印出各位數(shù)字袭厂。
import java.util.Scanner;
/**
* 題目:給一個(gè)不多于5位的正整數(shù),要求:一球匕、求它是幾位數(shù)纹磺,二、逆序打印出各位數(shù)字亮曹。
* @作者: HK
*/
public class Example22 {
public static void main(String[] args) {
System.out.println("請(qǐng)輸入一個(gè)不多于5位的正整數(shù):");
int input = new Scanner(System.in).nextInt();
int n=input;
System.out.print(n+"的倒序?yàn)椋?);
int i=0;
while(n!=0){
int k=n%10;
System.out.print(k);
n=n/10;
i++;
}
System.out.println();
System.out.println(input+"是"+i+"位數(shù)");
}
}