记录一下平时练习的JAVA编程题。
/*
- 1.菲波拉契数列:有一对兔子,从出生后第 3 个月起每个月都生一对兔子
- 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死
- 问每个月的兔子总数为多少?
*/
public class TEST {
public static void main(String[] args) {
int N=2,temp_N=2,rabbits;
System.out.println("菲波拉契数列:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,"
+ "小兔子长到第三个月后每个月又生一对兔子,"
+ "假如兔子都不死,问每个月的兔子总数为多少?");
System.out.println("请输入要知道的月数:");
Scanner sc = new Scanner(System.in);
int month = sc.nextInt();
//第一个月
if(month == 1)
System.out.println("第一个月有"+(N)+"只兔子");
//2
if(month == 2)
System.out.println("第二个月有"+(N)+"只兔子");
//3
for(int i = 3; i <= month; i++){
rabbits = N; // 上上个月的兔子
N+=temp_N;
temp_N=rabbits; //存放上个月的兔子总数;
System.out.println("第"+i+"个月有"+N+"只兔子");
}
}
}
/*
- 2.判断 101-200 之间有多少个素数,并输出所有素数。
*/
public class TEST2 {
static int count=0;
public static void main(String[] args) {
TEST2 test = new TEST2();
for(int i=101;i<201;i++){
test.isPrime(i);
}
System.out.println("101-200之间的素数有:"+count+"个");
}
void isPrime(int x){
boolean prime = true;
//if(x == 1 || x==0 || x ==2) System.out.println(x+" ");
for(int i=2;i<x-1;i++){
if(x%i==0){
prime = false;
break;
}
}
if(prime)
count++;
System.out.print(x+" ");
}
}
/*
- 3.打印出所有水仙花数
- 水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身
- (例如:1^3 + 5^3+ 3^3 = 153)
*/
public class TEST3 {
public static void main(String[] args) {
TEST3 test = new TEST3();
//100~999
for(int i = 100;i<1000;i++){
test.Narcissistic(i);
}
}
void Narcissistic(int n){
int unit,ten,hundred;
unit=n%10;
ten=n/10%10;
hundred=n/100%10;
int sum = (int) (Math.pow(unit, 3)+Math.pow(ten, 3)+Math.pow(hundred, 3));
if(sum == n)
System.out.println(n);
}
}
/*
- 4.将一个正整数分解质因数。例如:输入 90,打印出 90=233*5
*/
public class TEST4 {
public static void main(String[] args) {
System.out.println("请输入一个正整数:");
Scanner sc = new Scanner(System.in);
int x = sc.nextInt(); //输入正整数;
System.out.print(x+" = ");
for(int i=2;i<x;i++){
while(i!=x){
if(x%i==0){
x=x/i;
System.out.print(i+" * ");
}else break;
}
}
System.out.println(x);
System.out.println();
}
}
/*
- 5.三目运算符:利用条件运算符的嵌套来完成此题:学习成绩> =90 分的同学用 A 表示
- 60-89 分之间的用 B 表示
- 60 分以下的用 C 表示。
*/
public class TEST5 {
public static void main(String[] args) {
System.out.println("请输入考试成绩:");
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
char[] Grade = {'A','B','C'};
//分数小于90,输出B,否则输出A;
char Score = (score<90)?Grade[1]:Grade[0];
if(score<60) Score = Grade[2];
System.out.println("您输入的分数对应等级为:"+Score);
}
}
/*
- 6.输入两个正整数 m 和 n,求其最大公约数和最小公倍数
*/
public class TEST6 {
public static void main(String[] args) {
TEST6 test = new TEST6();
System.out.println("请输入第一个正整数m:");
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
System.out.println("请输入第二个正整数n:");
int n = sc.nextInt();
System.out.println("最大公约数:"+test.gcd(m, n));
//两个数的乘积除以最大公约数就是最小公倍数!
int lcm = m*n/test.gcd(m, n);
System.out.println("最小公倍数:"+lcm);
}
//公约数
int gcd(int p,int q){
if(q==0) return p;
int r = p % q;
return gcd(q,r);
}
}
/*
- 7.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
*/
public class TEST7 {
public static void main(String[] args) {
System.out.println("请输入一个字符串:");
Scanner sc = new Scanner(System.in);
String string = sc.nextLine();
TEST7 test = new TEST7();
test.judge_count(string);
}
void judge_count(String s){
int English=0,blank=0,chars=0,nums=0;
char[] string = s.toCharArray();
for(int i=0;i<string.length;i++){
if(string[i]==' ') blank++;
else if(string[i]>='0' && string[i]<='9') nums++;
else if(string[i]>='A' && string[i]<='z') English++;
else chars++;
}
System.out.println("其中英文字母有"+English+"个");
System.out.println("其中数字有"+nums+"个");
System.out.println("其中其他字符有"+chars+"个");
System.out.println("其中空格有"+blank+"个");
}
}
/*
- 8.求 s=a+aa+aaa+aaaa+aa…a 的值,其中 a 是一个数字。
- 例如 2+22+222+2222+22222(此时共有 5 个数相加),几个数相加由键盘控制
*/
public class TEST8 {
public static void main(String[] args) {
System.out.println("请输入a的值:");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int single = a;
System.out.println("请输入需要相加的个数:");
int n =sc.nextInt();
int sum=0;
for (int i = 0; i < n; i++) {
int temp = 0;
temp = a + temp; //先把本次要加的值赋值给temp;
a =10*a+single;
sum = sum + temp; //把每次的temp相加起来就是要的结果
}
System.out.println("和为:"+sum);
}
}