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+"个这样的三位数"); //输出统计结果
}
}
结果如图:
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();
}
}
结果如图:
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);//输出最大公约数
}
}
结果如图:
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));//调用递归方法,输出结果
}
}
结果如图:
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);//调用函数
}
结果如图: