题目一
题目:有一对兔子,从出生后第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);
}
}
题目十八
题目:一个偶数总能表示为两个素数之和。