java50道编程题(通俗易懂 更新中)

题目一

题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
代码:核心代码f(n-1)+f(n-2)

import java.util.*;
public class Main {
    public static void main(String[] args) {
    	//这是一个斐波那契数列的问题
    	Scanner scanner=new Scanner(System.in);
    	int month=scanner.nextInt();
    	System.out.println("第"+month+"月");
    	System.out.println(Fibonacci(month));
    }
    public static int Fibonacci(int n) {
		if (n==1 || n==2) {
			return 1;
		}
		return Fibonacci(n-1)+Fibonacci(n-2);
	}
}
import java.util.*;
public class Main {
    public static void main(String[] args) {
    	//数组实现
    	//这是一个斐波那契数列的问题 核心:f[i]=f[i-1]+f[i-2];
    	Scanner scanner=new Scanner(System.in);
    	int month=scanner.nextInt();
    	int [] f=new int[1000];
    	f[1]=f[2]=1;
    	for (int i = 2; i <f.length; i++) {
			f[i]=f[i-1]+f[i-2];
		}
    	System.out.println("第"+month+"月");
    	System.out.println(f[month]);
    }
}

题目二

题目:判断101-200之间有多少个素数,并输出所有素数。

import java.util.*;
public class Main {
    public static void main(String[] args) {
    	int count=0;
    	for (int i = 101; i <=200; i++) {
			if (prime(i)) {
				System.out.println(i);
				count++;
			}
		}
    	System.out.println("一共有:"+count+"素数");
	}
    public static boolean prime(int n) { //素数筛方法
    	if (n==0 || n==1) { //0和1不是素数所以返回false
			return false;
		}
		for (int i = 2; i <=Math.sqrt(n); i++) {
			if (n%i==0) {
				return false;
			}
		}
		return true;
	}
}

题目三

题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:   
153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

import java.util.*;
public class Main {
    public static void main(String[] args) {
    	//水仙花数是一个三位数 我们枚举三位数就行啦
    	for (int i = 100; i <=999; i++) {
			int ge=i%10; //取个位数
			int shi=i/10%10; //取十位数
			int bai=i/100%10;//取百位数
			if (Math.pow(ge, 3)+Math.pow(shi, 3)+Math.pow(bai, 3)==i) {
				System.out.println(i);
			}
		}
	}
}
import java.util.*;
public class Main {
    public static void main(String[] args) {
    	//水仙花数是一个三位数 我们枚举三位数就行啦
    	for (int i = 100; i <=999; i++) {
    		if (Narcissistic(i)==i) {
				System.out.println(i);
			}
		}
	}
    //我们可以while循环 取到各个位的数
    public static int Narcissistic(int n) {
    	int sum=0;
		while (n!=0) {
			int temp=n%10;
			sum+=Math.pow(temp, 3);
			n/=10;
		}
		return sum;
	}
}

题目四

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

import java.util.*;
public class Main {
    public static void main(String[] args) {
    	int n=90;
    	System.out.print(n+"=");
    	int k=2;
    	while(k<=n) {
    		if (k==n) { //如果相等的话就只有1和它自己
				System.out.println(k); 
				break;
			}
    		else if (n%k==0) { //如果能除尽就代表有因子
				System.out.print(k+"*");
				n/=k; //然后除去这个因子继续找
			}
    		else {
    			k++;
			}
    		
    	}
	}
}

题目五

题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

import java.util.*;
public class Main {
    public static void main(String[] args) {
    	//简单的判断
    	Scanner scanner=new Scanner(System.in);
    	int n=scanner.nextInt();
    	System.out.println("输出成绩 :"+n);
    	if (n>=90 && n<=100) {
			System.out.println("等级:"+"A");
		}
    	else if (n>=60 && n<=89) {
			System.out.println("等级:"+"B");
		}
    	else if (n>=0&&n<60) {
			System.out.println("等级:"+"C");
		}
    	else {
			System.out.println("成绩无效");
		}
		
	}
}

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

import java.util.*;
public class Main {
    public static void main(String[] args) {
    	Scanner scanner=new Scanner(System.in);
    	int a=scanner.nextInt();
    	int b=scanner.nextInt();
    	System.out.println("最大公约数:"+gcd(a, b));
    	System.out.println("最小公倍数:"+lcm(a, b));

	}
    public static int  gcd(int a,int b) {//最大公约数
		if (b==0) {
			return a;
		}
		//在(b, a % b)中,当a%b等于0,b就是最大公约数
		return gcd(b, a%b);
	}
    public  static int lcm(int a,int b) {//最小公倍数
    	//a*b/最大公约数时 就是最小公倍数
		return a*b/gcd(a, b);
	}
}

题目七

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

import java.util.*;
public class Main {
    public static void main(String[] args) {
    	Scanner scanner=new Scanner(System.in);
    	String s="12345 aaaa  AAAA  BBBB ././]";
    	int a=0; //小写字母计数
    	int b=0; //大写字母计数
    	int c=0; //数字计数
    	int d=0; //空格计数
    	int e=0; //其他字符计数
    	
    	//我们可以遍历字符串的长度
    	for (int i = 0; i < s.length(); i++) {
    		//利用String的方法取出字符 逐个判断 i就代表每个字符的索引
    		char chars=s.charAt(i);
			if (chars>='a' && chars<='b') {
				a++;
			}
			else if (chars>='A' && chars<='B') {
				b++;
			}
			else if (chars>='0' && chars<='9') {
				c++;
			}
			else if (chars==' ') {
				d++;
			}
			else {
				e++;
			}
		}
    	System.out.printf("%d %d %d %d %d",a,b,c,d,e);
	}
}

题目七

题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制

import java.util.*;
public class Main {
    public static void main(String[] args) {
    	Scanner scanner=new Scanner(System.in);
    	int sum=2;
    	int sum1=0;
    	for (int i = 0; i < 5; i++) {
			sum1+=sum; //2  22 222 2222 22222
			sum*=10; // 20 220 2220 22220 以此类推
			sum=sum+2; // 22 222 2222 22222
			System.out.println(sum);
		}
		System.out.println(sum1);
	}
}

程序九

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

import java.util.*;
public class Main {
    public static void main(String[] args) {
    	Scanner scanner=new Scanner(System.in);
    	for (int i = 1; i <=1000; i++) {
        	int sum=0;
			for (int j = 1; j < i; j++) { //j<i 因为因子不包括自己
				if (i%j==0) { //能被出尽就是因子
					sum+=j;
				}
			}
			if (i==sum) {
				System.out.println(i);
			}
		}
	}
}

题目十

题目:求1+2!+3!+…+20!的和

import java.util.Scanner;

import javax.print.attribute.standard.MediaSize.Other;
import javax.security.auth.kerberos.KerberosKey;
import javax.swing.plaf.synth.SynthOptionPaneUI;

import java.util.Scanner;
 
public class Main {
	public static void main(String[] args) {
		long sum=1;
		long sum1=0;
		for (int i = 1; i <=20; i++) {
			sum=sum*i;
			sum1+=sum;
		}
		System.out.println(sum1);
	}
}

题目十一

题目:利用递归方法求5!。

import java.util.Scanner;
 
public class Main {
	public static void main(String[] args) {
		int n=5;
		long sum=f(n);
		System.out.println(sum);
	}
	public static long f(long n) {
		if (n==1) { //退出条件当n==1时就可以退出了
			return 1;
		}
		return n*f(n-1);
	}
}

题目十二

题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
通过三个for循环,分别写出不同的三位数

import java.util.Scanner;
 
public class Main {
	public static void main(String[] args) {
		int count=0;
		for (int i = 1; i < 5; i++) { //三个for循环判不等就行了
			for (int j = 1; j < 5; j++) {
				for (int k = 1; k < 5; k++) {
					if (i!=j && i!=k && j!=k) {
						count++; //计数
						System.out.println(i*100+j*10+k);//三位数的组合
					}
				}
			}
		}
		System.out.println(count);
	}
}

题目十三

题目:输出9*9口诀。

import java.util.Scanner;
 
public class Main {
	public static void main(String[] args) {
		for (int i = 1; i <=9; i++) {
			for (int j = 1; j <=i; j++) {
				int sum=i*j;
				System.out.print(i+"*"+j+"="+sum+"  ");
			}
			System.out.println();
		}
	}
}

题目十四

题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同

import java.util.Scanner;
 
public class Main {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		int n=scanner.nextInt();
		if (n%10==n/10000%10 && n/10%10==n/1000%10) { //最笨的方法取位数判等
			System.out.println("是回文数");
		}
		else {
			System.out.println("不是回文数");
		}
	}
}

题目十五

题目:求100之内的素数
这次直接在主方法中求得素数

import java.util.Scanner;
 
public class Main {
	public static void main(String[] args) {
		for (int i = 1; i <=100; i++) {
			if (prime(i)) {
				System.out.println(i);
			}
		}
	}
	public static boolean prime(int n) { //筛素数的方法
		if (n==0 || n==1) {
			return false;
		}
		for (int i = 2; i <=Math.sqrt(n); i++) {
			if (n%i==0) {
				return false;
			}
		}
		return true;
	}
}

题目十六

题目:对10个数进行排序

import java.util.Scanner;
 
public class Main {
	public static void main(String[] args) {
		int [] arr= {1,2,3,4,5,6,7,8,9,10}; //写一个最简单的排序吧
		//冒泡排序
		for (int i = 0; i < arr.length-1; i++) {
			for (int j = 0; j < arr.length-1-i; j++) {
				if (arr[j+1]>arr[j]) { //降序排序
					int temp=arr[j+1];
					arr[j+1]=arr[j];
					arr[j]=temp;
				}
			}
		}
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i]+" ");
		}
	}
}

题目十七

题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

import java.util.Scanner;
 
public class Main {
	public static void main(String[] args) {
		String string="132131231";
		System.out.println(string.length());//点个方法
		//活着 
		int count=0;
		for (int i = 0; i < string.length(); i++) {
			count++;
		}
		System.out.println(count);
	}
}

题目十八

题目:一个偶数总能表示为两个素数之和。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值