2019-05-29

1. 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,

      小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

/**

* 题目分析: 第一个月:1对

*        第二个月:1对

*        三:            2对

*        四:            3对

*        五:            5对

*        .......

*        兔子的规律为数列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("请输入求第几个月的兔子总数:");

n=input.nextInt();

for (int i =1; i <= n; i++) {

System.out.println(f(i));

}

System.out.println("兔子总数为:"+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之间有多少个素数,并输出所有素数。

/**

*程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。

*/

public class Example2 {

public static void main(String[] args) {

int j,i;

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

for ( j = 2; j

  int n=i%j;

if(n==0)

break;

}

if(j>Math.sqrt(i))

System.out.println(i+"是素数");

}

}

}

3.题目:打印出所有的   "水仙花数   ",所谓   "水仙花数   "是指一个三位数,其各位数字立方和等于该数本身。

/**

*  例如:153是一个  "水仙花数  ",因为153=1的三次方+5的三次方+3的三次方。

* @作者: HK

*/

public class Example3 {

public static void main(String[] args) {

int a; //表示个位

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+"是水仙花数");

}

}

}

}

4.题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5

import java.util.Scanner;

/**

* 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5

* 分析:任何一个合数都可以写成几个质数相乘的形式。其中每个质数都是这个合数的因数,叫做这个合数的分解质因数。

*    分解质因数只针对合数。

*/

public class Example4 {


        public  static  void  main(String[]  args){ 

                  int N;

                  System.out.println("请输入N的值:");

                  Scanner input = new Scanner(System.in);

                  N=input.nextInt();

                  System.out.print(N+ "分解质因数: "+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.题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

import java.util.Scanner;

/**

* 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

*

* 分析:求最大公约数可以用辗转相除法

*   最小公倍数为:m*n/最大公约数

* @作者: HK

*/

public class Example6 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

System.out.println("请输入两个正整数数值:");

int a=input.nextInt();

int b=input.nextInt();

int m=a,n=b;

int y =gys(m, n);

System.out.println("最大公约数为:"+y);

System.out.println("最小公倍数为:"+m*n/y);

}

//方法一

public static int gys(int m,int n){

int c = 0;

if(m

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.题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

import java.util.Scanner;

/**

*  题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

* @作者: 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("请输入一行字符:");

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("字母个数:"+zimu +"空格个数:"+kongge +"数字个数:"+number +"其他:"+other);

}

}

7.题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

import java.util.Scanner;

/**

* 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

* 例如: 2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

* @作者: HK

*/

public class Example8 {

public static void main(String[] args) {

        //第一个整数为几个数,第二个是数值为m  例如: n=5 m=2

System.out.println("请输入两个正整数:");

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

a= (int) (m*(Math.pow(10,i)));

s=s+a;

}

System.out.println(s);

sum=s+sum;

}

System.out.println("和为:"+sum);

}

}

8.题目:一个数如果恰好等于它的因子之和,这个数就称为   "完数   "。例如6=1+2+3.编程       找出1000以内的所有完数。

/**

* 题目:一个数如果恰好等于它的因子之和,这个数就称为  "完数  "。例如6=1+2+3.编程      找出1000以内的所有完数。

* 分析:求出每个数的因子,让他们相加的和与这个数作比较,如果相等就是完数。

* @作者: 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

//   if(i  %  j==0) 

//   s=s+j; 

// if(s==i) 

//   System.out.print(i+ "  "); 

//   } 

//   System.out.println(); 

//  

//   } 

//

}

9. 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

/**

* 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

* 程序分析:可填在百位、十位、个位的数字都是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. 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

/**

*  题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

* @作者: 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("得到的数字是:"+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.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个   第二天早上又将剩下的桃子吃掉一半,又多吃了一个。  以后每天早上都吃了前一天剩下   的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 

package Example01;

/**

* 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个  第二天早上又将剩下的桃子吃掉一半,又多吃了一个。

* 以后每天早上都吃了前一天剩下  的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

* @作者: 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.题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。 有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单

/**

*  题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。

*  有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单

* @作者: HK

*/

public class Example15 {

public static void main(String[]args){ 

        char i,j,k;  /*i是a的对手,j是b的对手,k是c的对手*/ 

        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. 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

/**

*  题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

* @作者: 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("请输入一个递归数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个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。  最后问第一个人,他说是10岁。请问第五个人多大?

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.题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

import java.util.Scanner;

/**

* 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

* @作者: HK

*/

public class Example22 {

public static void main(String[] args) {

System.out.println("请输入一个不多于5位的正整数:");

int input = new Scanner(System.in).nextInt();

int n=input;

System.out.print(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+"位数");

}

}

你可能感兴趣的:(2019-05-29)