2019-05-29

1. 題目:古典問題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,

? ? ? 小兔子長(zhǎng)到第四個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問每個(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è)互不相同且無重復(fù)數(shù)字的三位數(shù)?都是多少?

/**

* 題目:有1、2、3、4個(gè)數(shù)字,能組成多少個(gè)互不相同且無重復(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)問該數(shù)是多少?

/**

*? 題目:一個(gè)整數(shù),它加上100后是一個(gè)完全平方數(shù),再加上168又是一個(gè)完全平方數(shù),請(qǐng)問該數(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.猴子吃桃問題:猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不癮,又多吃了一個(gè) ? 第二天早上又將剩下的桃子吃掉一半,又多吃了一個(gè)。??以后每天早上都吃了前一天剩下 ? 的一半零一個(gè)。到第10天早上想再吃時(shí),見只剩下一個(gè)桃子了。求第一天共摘了多少。?

package Example01;

/**

* 猴子吃桃問題:猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不癮,又多吃了一個(gè)? 第二天早上又將剩下的桃子吃掉一半,又多吃了一個(gè)。

* 以后每天早上都吃了前一天剩下? 的一半零一個(gè)。到第10天早上想再吃時(shí),見只剩下一個(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ì)員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請(qǐng)編程序找出三隊(duì)賽手的名單

/**

*? 題目:兩個(gè)乒乓球隊(duì)進(jìn)行比賽,各出三人。甲隊(duì)為a,b,c三人,乙隊(duì)為x,y,z三人。已抽簽決定比賽名單。

*? 有人向隊(duì)員打聽比賽的名單。a說他不和x比,c說他不和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è)人坐在一起,問第五個(gè)人多少歲?他說比第4個(gè)人大2歲。問第4個(gè)人歲數(shù),他說比第3個(gè)人大2歲。問第三個(gè)人,又說比第2人大兩歲。問第2個(gè)人,說比第一個(gè)人大兩歲。? 最后問第一個(gè)人,他說是10歲。請(qǐng)問第五個(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ù)");

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 【程序1】 題目:古典問題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔...
    開心的鑼鼓閱讀 3,401評(píng)論 0 9
  • Java經(jīng)典問題算法大全 /*【程序1】 題目:古典問題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子...
    趙宇_阿特奇閱讀 2,084評(píng)論 0 2
  • 50道經(jīng)典Java編程練習(xí)題,將數(shù)學(xué)思維運(yùn)用到編程中來。抱歉哈找不到文章的原貼了,有冒犯的麻煩知會(huì)聲哈~ 1.指數(shù)...
    OSET我要編程閱讀 7,303評(píng)論 0 9
  • Day01 class 例子{ public static void main(String[] args){ ...
    周書達(dá)閱讀 1,222評(píng)論 0 0
  • /*【程序21】 * 作者 南楓題目:求1+2!+3!+...+20!的和 1. 程序分析:此程序只是把累加變成了...
    HUC南楓閱讀 506評(píng)論 0 0

友情鏈接更多精彩內(nèi)容