java程序作业2

Java语言提高作业2

 

1.编程输出不重复的3位数,即个位、十位、百位数不能相等。(要求:每一行输出20个数)

程序如下:public class ThreeFigures

{    public static void main(String [] args)

     {    int i,a,b,c;

         int count = 0;          //计数器

         for(i=100;i<1000;i++)   //所有的三位数循环一遍

         {    a = i/100;      //a代表百位上的数字

              b = i/10%10;    //b代表十位上的数字

              c = i%10;       //c代表个位上的数字

              if(a!=b && a!=c && b!=c)

              {    System.out.print(i+"\t");         

                   count++;

                   if(count%20 == 0)   //20数字输出后换行

                   {    System.out.print("\n");       }

              }

         }

     System.out.println("\n一共有"+count+"个这样的三位数"); //输出统计结果

     }

}

结果如图:

java程序作业2

 

2. 编程求10000以内的完全数。注:完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(除了自身以外的约数)的和,恰好等于它本身。例如,第一个完全数是6,它有约数1、2、3、6,除去它本身的6外,其余3个数相加,1+2+3=6。

程序如下:

class PerfectNumber

{    public static void main(String [] args)

     {    int i,j,sum;

         for(i=2;i<10000;i++)        //指定范围

         {    sum = 0;

              for(j=1;j<=i/2;j++) //被除数范围

              {    if(i%j == 0)//整除,即为因子

                       sum += j;//累加因子

              }

              if(sum == i)             //完全数判断

                   printPN(i);

         }

     }

     public static void printPN(int n)         //输出约数

     {    int j;

         System.out.print(n+"的约数(自身除外)为:");

         for(j=1;j<=n/2;j++)                //再次找出这个完全数的因子

         {    if(n%j == 0)               //输出各个因子

                   System.out.print(j+"\t");

         }

         System.out.println();

     }

}

结果如图:

java程序作业2

3.求任意两个整数的最大公约数。(要求使用Scanner类,通过键盘输入任意两个整数)

程序如下:

import java.util.Scanner;

public class CommonDivisor

{    static int gcd(int a,int b)//自定义函数求两数的最大公约数

     {    int temp;

                //设置中间变量进行两数交换,大数放在a中,小数放在b中

         if(a < b)

         {    temp = a;

              a = b;

              b = temp;

         }

         while(b != 0)      //通过循环求两数的余数,直到余数为0

         {    temp = a%b;

              a = b;     //变量数值交换

              b = temp;

         }

         return a;          //返回最大公约数到调用函数处

     }

     public static void main(String [] args)

     {    Scanner scan = new Scanner(System.in);

         int m,n,t;

         System.out.print("please input the first number:");

         m = scan.nextInt();//通过键盘输入第一个整数

         System.out.print("please input the second number:");

         n = scan.nextInt();//通过键盘输入第二个整数

         t = gcd(m,n);

         System.out.println("最大公约数:"+t);//输出最大公约数

     }

}

结果如图:

java程序作业2

 

4. 有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁。问第4个人的岁数,他说比第3个人大2岁。问第3个,又说比第2个人大2岁。问第2个,说比第1个人大2岁。最后问第1个人,他说是10岁。请问第5个人多大岁数?(要求使用递归方法)

 

程序如下:

class AgeQuestion

{    static int age(int n)     //递归方法求解

     {    int c;            //保存结果

         if(n == 1)        //递归出口

              c = 10;

         else

              c = age(n-1)+2;  //递归调用

         return c;

     }

     public static void main(String [ ] args)

     {    System.out.println("5个人的年龄:"+age(5));//调用递归方法,输出结果

     }

}

结果如图:

java程序作业2

5. 若一个口袋中有12个球,其中有3个红色的,3个黄色的,6个绿色的,从中任取8个球,问共有多少种不同的颜色搭配?

 

程序如下:

import java.util.*;

public class ThreeColorBall

{    static void threeball(int red,int yellow,int green,int n )

     {    int i,j,k;        //分别代表三种球个数

         System.out.print("总共有如下几种可能!\n");

         System.out.print("\t   红球\t黄球\t   绿球\n");

         for(i=0;i<=red;i++)

         {    for(j=0;j<=yellow;j++)

              {    for(k=0;k<=green;k++)

                   {    if(i+j+k == n)//判断是否满足条件

                       {    System.out.printf("\t\t%d\t\t%d\t\t%d\n",i,j,k);

                       }

                   }

              }

         }

     }

     public static void main(String [] agrs)

     {    int red,yellow,green; //存储红、黄、绿球个数

         int n;

         System.out.print("三色球问题求解!\n");

         System.out.print("请输入红球的数量为:");

         Scanner input = new Scanner(System.in);

         red = input.nextInt();

         System.out.print("请输入黄球的数量为:");

         yellow = input.nextInt();

         System.out.print("请输入绿球的数量为:");

         green = input.nextInt();

         System.out.print("请输入取出求的数量为:");

         n = input.nextInt();

         threeball(red,yellow,green,n);//调用函数

     }

结果如图:

java程序作业2